blob: 1c3ff69180f032cdd1257996b124eb27611bc3de [file] [log] [blame]
Kevin Enderbye3c13462014-08-04 23:14:37 +00001// RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s
Stepan Dyatkovskiyafc364b2014-04-23 06:56:28 +00002
Kevin Enderbye3c13462014-08-04 23:14:37 +00003.macro abc a b:vararg
4.globl "\a, \b"
Stepan Dyatkovskiyafc364b2014-04-23 06:56:28 +00005.endm
Kevin Enderbye3c13462014-08-04 23:14:37 +00006
7// CHECK: .globl "zed0, zed1, zed2"
8abc 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
Jonathan Roelofs49e46ce2015-08-10 19:01:27 +000057// CHECK-NOT: movl
Kevin Enderbye3c13462014-08-04 23:14:37 +000058// 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