| // RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s |
| |
| .macro abc a b:vararg |
| .globl "\a, \b" |
| .endm |
| |
| // CHECK: .globl "zed0, zed1, zed2" |
| abc zed0, zed1, zed2 |
| |
| .purgem abc |
| |
| .macro ifcc arg:vararg |
| .if cc |
| \arg |
| .endif |
| .endm |
| |
| .macro ifcc2 arg0 arg1:vararg |
| .if cc |
| movl \arg0, \arg1 |
| .endif |
| .endm |
| |
| .macro ifcc3 arg0, arg1:vararg |
| .if cc |
| movl \arg0, \arg1 |
| .endif |
| .endm |
| |
| .macro ifcc4 arg0, arg1:vararg |
| .if cc |
| movl \arg1, \arg0 |
| .endif |
| .endm |
| |
| .text |
| |
| // CHECK: movl %esp, %ebp |
| // CHECK: subl $0, %esp |
| // CHECK: movl %eax, %ebx |
| // CHECK: movl %ecx, %ebx |
| // CHECK: movl %ecx, %eax |
| // CHECK: movl %eax, %ecx |
| // CHECK: movl %ecx, %eax |
| // CHECK: movl %eax, %ecx |
| .set cc,1 |
| ifcc movl %esp, %ebp |
| subl $0, %esp |
| |
| ifcc2 %eax, %ebx |
| ifcc2 %ecx, %ebx |
| ifcc3 %ecx, %eax |
| ifcc3 %eax, %ecx |
| ifcc4 %eax, %ecx ## test |
| ifcc4 %ecx, %eax ## test |
| |
| // CHECK-NOT: movl |
| // CHECK: subl $1, %esp |
| .set cc,0 |
| ifcc movl, %esp, %ebp |
| subl $1, %esp |
| |
| .macro abc arg:vararg=nop |
| \arg |
| .endm |
| |
| .macro abcd arg0=%eax, arg1:vararg=%ebx |
| movl \arg0, \arg1 |
| .endm |
| |
| .text |
| |
| // CHECK: nop |
| abc |
| // CHECK: movl %eax, %ebx |
| abcd , |
| |
| .macro .make_macro start, end, name, body:vararg |
| \start \name |
| \body |
| \end |
| .endmacro |
| |
| .make_macro .macro,.endmacro,.mybyte,.byte $0, $2, $1 |
| |
| .data |
| // CHECK: .byte 10 |
| // CHECK: .byte 12 |
| // CHECK: .byte 11 |
| .mybyte 10,11,12 |