]> granicus.if.org Git - llvm/commitdiff
This patch added some test cases to demonsrate the issues described in Bug 33848...
authorAndrew V. Tischenko <andrew.v.tischenko@gmail.com>
Thu, 20 Jul 2017 12:46:02 +0000 (12:46 +0000)
committerAndrew V. Tischenko <andrew.v.tischenko@gmail.com>
Thu, 20 Jul 2017 12:46:02 +0000 (12:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308609 91177308-0d34-0410-b5e6-96231b3b80d8

test/MC/X86/intel-syntax.s
test/MC/X86/intel-syntax2.s [new file with mode: 0644]

index a8172fc6798053af31c503b99e6084e4048262ed..d474481e5225c54ec0da1a1cb1b9ff9122924e08 100644 (file)
@@ -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 (file)
index 0000000..78b0179
--- /dev/null
@@ -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]
+