// 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