macro-args.s 858 B

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