vararg.s 868 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // RUN: llvm-mc -triple x86_64-linux-gnu %s | FileCheck %s
  2. .macro ifcc arg:vararg
  3. .if cc
  4. \arg
  5. .endif
  6. .endm
  7. .macro ifcc2 arg0 arg1:vararg
  8. .if cc
  9. movl \arg0, \arg1
  10. .endif
  11. .endm
  12. .macro ifcc3 arg0, arg1:vararg
  13. .if cc
  14. movl \arg0, \arg1
  15. .endif
  16. .endm
  17. .macro ifcc4 arg0, arg1:vararg
  18. .if cc
  19. movl \arg1, \arg0
  20. .endif
  21. .endm
  22. .text
  23. // CHECK: movl %esp, %ebp
  24. // CHECK: subl $0, %esp
  25. // CHECK: movl %eax, %ebx
  26. // CHECK: movl %ecx, %ebx
  27. // CHECK: movl %ecx, %eax
  28. // CHECK: movl %eax, %ecx
  29. // CHECK: movl %ecx, %eax
  30. // CHECK: movl %eax, %ecx
  31. .set cc,1
  32. ifcc movl %esp, %ebp
  33. subl $0, %esp
  34. ifcc2 %eax %ebx
  35. ifcc2 %ecx, %ebx
  36. ifcc3 %ecx %eax
  37. ifcc3 %eax, %ecx
  38. ifcc4 %eax %ecx ## test
  39. ifcc4 %ecx, %eax ## test
  40. // CHECK-NOT movl
  41. // CHECK: subl $1, %esp
  42. .set cc,0
  43. ifcc movl %esp, %ebp
  44. subl $1, %esp