From: Andrew V. Tischenko Date: Thu, 20 Jul 2017 12:46:02 +0000 (+0000) Subject: This patch added some test cases to demonsrate the issues described in Bug 33848... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0818bb870b233d475b6ea5d71825f19b3bb0ae23;p=llvm This patch added some test cases to demonsrate the issues described in Bug 33848 - X86 Asm does not support symbolic names inside address calculation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308609 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s index a8172fc6798..d474481e522 100644 --- a/test/MC/X86/intel-syntax.s +++ b/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/test/MC/X86/intel-syntax2.s b/test/MC/X86/intel-syntax2.s new file mode 100644 index 00000000000..78b01794cb3 --- /dev/null +++ b/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] +