1// RUN: llvm-mc -triple x86_64-apple-darwin10 %s | FileCheck %s
2
3.macro GET   var,re2g
4    movl   \var@GOTOFF(%ebx),\re2g
5.endm
6
7.macro GET_DEFAULT var, re2g=%ebx, re3g=%ecx
8movl 2(\re2g, \re3g, 2), \var
9.endm
10
11GET         is_sse, %eax
12// CHECK: movl  is_sse@GOTOFF(%ebx), %eax
13
14GET_DEFAULT %ebx, , %edx
15// CHECK: movl  2(%ebx,%edx,2), %ebx
16
17GET_DEFAULT %ebx, %edx
18// CHECK: movl  2(%edx,%ecx,2), %ebx
19
20.macro bar
21    .long $n
22.endm
23
24bar 1, 2, 3
25bar
26
27// CHECK: .long 3
28// CHECK: .long 0
29
30
31.macro top
32    middle _$0, $1
33.endm
34.macro middle
35     $0:
36    .if $n > 1
37        bottom $1
38    .endif
39.endm
40.macro bottom
41    .set fred, $0
42.endm
43
44.text
45
46top foo
47top bar, 42
48
49// CHECK: _foo:
50// CHECK-NOT: fred
51// CHECK: _bar
52// CHECK-NEXT: fred = 42
53
54
55.macro foo
56foo_$0_$1_$2_$3:
57  nop
58.endm
59
60foo 1, 2, 3, 4
61foo 1, , 3, 4
62
63// CHECK: foo_1_2_3_4:
64// CHECK: foo_1__3_4:
65