diff options
| author | Andrew V. Tischenko <andrew.v.tischenko@gmail.com> | 2017-07-20 12:46:02 +0000 |
|---|---|---|
| committer | Andrew V. Tischenko <andrew.v.tischenko@gmail.com> | 2017-07-20 12:46:02 +0000 |
| commit | 6431962792b078b6e8c3f574db0e261fe11db42f (patch) | |
| tree | 8bb66ea9f266c41cf1b141116a43796d8cde0c8a | |
| parent | 0865585eabeb37d867f0c6148857b19e88d692a1 (diff) | |
| download | bcm5719-llvm-6431962792b078b6e8c3f574db0e261fe11db42f.tar.gz bcm5719-llvm-6431962792b078b6e8c3f574db0e261fe11db42f.zip | |
This patch added some test cases to demonsrate the issues described in Bug 33848 - X86 Asm does not support symbolic names inside address calculation.
llvm-svn: 308609
| -rw-r--r-- | llvm/test/MC/X86/intel-syntax.s | 51 | ||||
| -rw-r--r-- | llvm/test/MC/X86/intel-syntax2.s | 32 |
2 files changed, 82 insertions, 1 deletions
diff --git a/llvm/test/MC/X86/intel-syntax.s b/llvm/test/MC/X86/intel-syntax.s index a8172fc6798..d474481e522 100644 --- a/llvm/test/MC/X86/intel-syntax.s +++ b/llvm/test/MC/X86/intel-syntax.s @@ -6,7 +6,56 @@ _test: xor EAX, EAX ret -_main: +.set number, 8 +.global _foo + +.text + .global main +main: + +// CHECK: leaq _foo(%rbx,%rax,0), %rdx + lea RDX, [number * RAX + RBX + _foo] +// CHECK: leaq _foo(%rbx,%rax,8), %rdx + lea RDX, [8 * RAX + RBX + _foo] + +// CHECK: leaq 8(%rbx,%rax,0), %rdx + lea RDX, [_foo + number * RAX + RBX] +// CHECK: leaq _foo(%rbx,%rax,8), %rdx + lea RDX, [_foo + 8 * RAX + RBX] + +// CHECK: leaq 8(%rcx,%rax,8), %rdx + lea RDX, [8 + RAX * 8 + RCX] + +// CHECK: leaq 8+8(%rcx,%rax,0), %rdx + lea RDX, [8 + number * RAX + RCX] +// CHECK: leaq 8(%rcx,%rax,8), %rdx + lea RDX, [number + 8 * RAX + RCX] + +// CHECK: leaq _foo(,%rax,8), %rdx + lea RDX, [_foo + RAX * 8] + +// CHECK: leaq _foo(%rbx,%rax,8), %rdx + lea RDX, [_foo + RAX * 8 + RBX] + +// CHECK: leaq 8(%rax), %rdx + lea RDX, [RAX - number] +// CHECK: leaq -8(%rax), %rdx + lea RDX, [RAX - 8] + +// CHECK: leaq _foo(%rax), %rdx + lea RDX, [RAX + _foo] +// CHECK: leaq 8(%rax), %rdx + lea RDX, [RAX + number] +// CHECK: leaq 8(%rax), %rdx + lea RDX, [RAX + 8] + +// CHECK: leaq _foo(%rax), %rdx + lea RDX, [_foo + RAX] +// CHECK: leaq 8(%rax), %rdx + lea RDX, [number + RAX] +// CHECK: leaq 8(%rax), %rdx + lea RDX, [8 + RAX] + // CHECK: movl $257, -4(%rsp) mov DWORD PTR [RSP - 4], 257 // CHECK: movl $258, 4(%rsp) diff --git a/llvm/test/MC/X86/intel-syntax2.s b/llvm/test/MC/X86/intel-syntax2.s new file mode 100644 index 00000000000..78b01794cb3 --- /dev/null +++ b/llvm/test/MC/X86/intel-syntax2.s @@ -0,0 +1,32 @@ +// RUN: not llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s 2> %t.err +// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s + +_test: +// CHECK-LABEL: _test: +// CHECK: xorl %eax, %eax + + xor EAX, EAX + ret + +.set number, 8 +.global _foo + +.text + .global main +main: + +// CHECK-STDERR: error: unknown token in expression + lea RDX, [RAX * number + RBX + _foo] + +// CHECK-STDERR: error: unknown token in expression + lea RDX, [_foo + RAX * number + RBX] + +// CHECK-STDERR: error: unknown token in expression + lea RDX, [number + RAX * number + RCX] + +// CHECK-STDERR: error: unknown token in expression + lea RDX, [_foo + RAX * number] + +// CHECK-STDERR: error: unknown token in expression + lea RDX, [_foo + RAX * number + RBX] + |

