137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s 2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro abc a b:vararg 437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.globl "\a, \b" 537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .globl "zed0, zed1, zed2" 837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesabc zed0, zed1, zed2 937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.purgem abc 1137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro ifcc arg:vararg 1337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if cc 1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines \arg 1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif 1637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 1737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro ifcc2 arg0 arg1:vararg 1937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if cc 2037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines movl \arg0, \arg1 2137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif 2237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 2337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 2437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro ifcc3 arg0, arg1:vararg 2537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if cc 2637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines movl \arg0, \arg1 2737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif 2837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 2937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 3037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro ifcc4 arg0, arg1:vararg 3137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if cc 3237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines movl \arg1, \arg0 3337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif 3437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 3637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.text 3737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 3837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %esp, %ebp 3937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: subl $0, %esp 4037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %eax, %ebx 4137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %ecx, %ebx 4237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %ecx, %eax 4337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %eax, %ecx 4437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %ecx, %eax 4537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %eax, %ecx 4637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.set cc,1 4737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc movl %esp, %ebp 4837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines subl $0, %esp 4937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 5037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc2 %eax, %ebx 5137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc2 %ecx, %ebx 5237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc3 %ecx, %eax 5337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc3 %eax, %ecx 5437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc4 %eax, %ecx ## test 5537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc4 %ecx, %eax ## test 5637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 5737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK-NOT movl 5837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: subl $1, %esp 5937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.set cc,0 6037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines ifcc movl, %esp, %ebp 6137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines subl $1, %esp 6237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 6337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro abc arg:vararg=nop 6437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines \arg 6537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm 6637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 6737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro abcd arg0=%eax, arg1:vararg=%ebx 6837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines movl \arg0, \arg1 69dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines.endm 7037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 7137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.text 7237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 7337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: nop 7437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines abc 7537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: movl %eax, %ebx 7637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines abcd , 7737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 7837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro .make_macro start, end, name, body:vararg 7937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines\start \name 8037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines\body 8137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines\end 8237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endmacro 8337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 8437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.make_macro .macro,.endmacro,.mybyte,.byte $0, $2, $1 8537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 8637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.data 8737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .byte 10 8837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .byte 12 8937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .byte 11 9037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.mybyte 10,11,12 91