diff options
author | Stepan Dyatkovskiy <stpworld@narod.ru> | 2014-04-23 06:56:28 +0000 |
---|---|---|
committer | Stepan Dyatkovskiy <stpworld@narod.ru> | 2014-04-23 06:56:28 +0000 |
commit | 8c5b3146ed3a73f20a7c20f359188e43771d241a (patch) | |
tree | 56be4a96ce4008e8d6ade4fa8dd44de20cc9e7d0 /test/MC/AsmParser | |
parent | 81ea345894636edc6dc016b6b93ecb7d259b4ae6 (diff) |
Integrated assbemler, macros: added 'vararg' argument qualifier support.
Note, currently we have no 'vararg' support for darwin macros.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206951 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/AsmParser')
-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 00000000000..a650c0871d2 --- /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 00000000000..77cd1e8817e --- /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 00000000000..b27668ea337 --- /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 |