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