1 // RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s 2 3 .macro abc a b:vararg 4 .globl "\a, \b" 5 .endm 6 7 // CHECK: .globl "zed0, zed1, zed2" 8 abc zed0, zed1, zed2 9 10 .purgem abc 11 12 .macro ifcc arg:vararg 13 .if cc 14 \arg 15 .endif 16 .endm 17 18 .macro ifcc2 arg0 arg1:vararg 19 .if cc 20 movl \arg0, \arg1 21 .endif 22 .endm 23 24 .macro ifcc3 arg0, arg1:vararg 25 .if cc 26 movl \arg0, \arg1 27 .endif 28 .endm 29 30 .macro ifcc4 arg0, arg1:vararg 31 .if cc 32 movl \arg1, \arg0 33 .endif 34 .endm 35 36 .text 37 38 // CHECK: movl %esp, %ebp 39 // CHECK: subl $0, %esp 40 // CHECK: movl %eax, %ebx 41 // CHECK: movl %ecx, %ebx 42 // CHECK: movl %ecx, %eax 43 // CHECK: movl %eax, %ecx 44 // CHECK: movl %ecx, %eax 45 // CHECK: movl %eax, %ecx 46 .set cc,1 47 ifcc movl %esp, %ebp 48 subl $0, %esp 49 50 ifcc2 %eax, %ebx 51 ifcc2 %ecx, %ebx 52 ifcc3 %ecx, %eax 53 ifcc3 %eax, %ecx 54 ifcc4 %eax, %ecx ## test 55 ifcc4 %ecx, %eax ## test 56 57 // CHECK-NOT: movl 58 // CHECK: subl $1, %esp 59 .set cc,0 60 ifcc movl, %esp, %ebp 61 subl $1, %esp 62 63 .macro abc arg:vararg=nop 64 \arg 65 .endm 66 67 .macro abcd arg0=%eax, arg1:vararg=%ebx 68 movl \arg0, \arg1 69 .endm 70 71 .text 72 73 // CHECK: nop 74 abc 75 // CHECK: movl %eax, %ebx 76 abcd , 77 78 .macro .make_macro start, end, name, body:vararg 79 \start \name 80 \body 81 \end 82 .endmacro 83 84 .make_macro .macro,.endmacro,.mybyte,.byte $0, $2, $1 85 86 .data 87 // CHECK: .byte 10 88 // CHECK: .byte 12 89 // CHECK: .byte 11 90 .mybyte 10,11,12 91