|  | // RUN: llvm-mc -triple x86_64-apple-darwin10 %s | FileCheck %s | 
|  |  | 
|  | .macro GET   var,re2g | 
|  | movl   \var@GOTOFF(%ebx),\re2g | 
|  | .endm | 
|  |  | 
|  | .macro GET_DEFAULT var, re2g=%ebx, re3g=%ecx | 
|  | movl 2(\re2g, \re3g, 2), \var | 
|  | .endm | 
|  |  | 
|  | GET         is_sse, %eax | 
|  | // CHECK: movl  is_sse@GOTOFF(%ebx), %eax | 
|  |  | 
|  | GET_DEFAULT %ebx, , %edx | 
|  | // CHECK: movl  2(%ebx,%edx,2), %ebx | 
|  |  | 
|  | GET_DEFAULT %ebx, %edx | 
|  | // CHECK: movl  2(%edx,%ecx,2), %ebx | 
|  |  | 
|  | .macro bar | 
|  | .long $n | 
|  | .endm | 
|  |  | 
|  | bar 1, 2, 3 | 
|  | bar | 
|  |  | 
|  | // CHECK: .long 3 | 
|  | // CHECK: .long 0 | 
|  |  | 
|  |  | 
|  | .macro top | 
|  | middle _$0, $1 | 
|  | .endm | 
|  | .macro middle | 
|  | $0: | 
|  | .if $n > 1 | 
|  | bottom $1 | 
|  | .endif | 
|  | .endm | 
|  | .macro bottom | 
|  | .set fred, $0 | 
|  | .endm | 
|  |  | 
|  | .text | 
|  |  | 
|  | top foo | 
|  | top bar, 42 | 
|  |  | 
|  | // CHECK: _foo: | 
|  | // CHECK-NOT: fred | 
|  | // CHECK: _bar | 
|  | // CHECK-NEXT: .set fred, 42 | 
|  |  | 
|  |  | 
|  | .macro foo | 
|  | foo_$0_$1_$2_$3: | 
|  | nop | 
|  | .endm | 
|  |  | 
|  | foo 1, 2, 3, 4 | 
|  | foo 1, , 3, 4 | 
|  |  | 
|  | // CHECK: foo_1_2_3_4: | 
|  | // CHECK: foo_1__3_4: |