diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/MC/AsmParser/macros-darwin-vararg.s | 8 | ||||
-rw-r--r-- | test/MC/AsmParser/vararg-default-value.s | 15 | ||||
-rw-r--r-- | test/MC/AsmParser/vararg.s | 41 |
3 files changed, 64 insertions, 0 deletions
diff --git a/test/MC/AsmParser/macros-darwin-vararg.s b/test/MC/AsmParser/macros-darwin-vararg.s new file mode 100644 index 0000000000..a650c0871d --- /dev/null +++ b/test/MC/AsmParser/macros-darwin-vararg.s @@ -0,0 +1,8 @@ +// RUN: not llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s + +// CHECK: error: vararg is not a valid parameter qualifier for 'arg' in macro 'abc' +// CHECK: .macro abc arg:vararg + +.macro abc arg:vararg + \arg +.endm diff --git a/test/MC/AsmParser/vararg-default-value.s b/test/MC/AsmParser/vararg-default-value.s new file mode 100644 index 0000000000..77cd1e8817 --- /dev/null +++ b/test/MC/AsmParser/vararg-default-value.s @@ -0,0 +1,15 @@ +// RUN: llvm-mc -triple x86_64-linux-gnu %s | FileCheck %s +.macro abc arg:vararg=nop + \arg +.endm + +.macro abcd arg0=%eax arg1:vararg=%ebx + movl \arg0, \arg1 +.endm + +.text + +// CHECK: nop + abc +// CHECK: movl %eax, %ebx + abcd , diff --git a/test/MC/AsmParser/vararg.s b/test/MC/AsmParser/vararg.s new file mode 100644 index 0000000000..b27668ea33 --- /dev/null +++ b/test/MC/AsmParser/vararg.s @@ -0,0 +1,41 @@ +// RUN: llvm-mc -triple x86_64-linux-gnu %s | FileCheck %s +.macro ifcc arg:vararg +.if cc + \arg +.endif +.endm + +.macro ifcc2 arg0 arg1:vararg +.if cc + movl \arg0, \arg1 +.endif +.endm + +.macro ifcc3 arg0, arg1:vararg +.if cc + movl \arg0, \arg1 +.endif +.endm + +.text + +// CHECK: movl %esp, %ebp +// CHECK: subl $0, %esp +// CHECK: movl %eax, %ebx +// CHECK: movl %ecx, %ebx +// CHECK: movl %ecx, %eax +// CHECK: movl %eax, %ecx +.set cc,1 + ifcc movl %esp, %ebp + subl $0, %esp + + ifcc2 %eax %ebx + ifcc2 %ecx, %ebx + ifcc3 %ecx %eax + ifcc3 %eax, %ecx + +// CHECK-NOT movl +// CHECK: subl $1, %esp +.set cc,0 + ifcc movl %esp, %ebp + subl $1, %esp |