summaryrefslogtreecommitdiff
path: root/test/MC/X86
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:08 +0000
committerDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:08 +0000
commitdb9fa461d7d9643a1b25f13df73638be9c36cafb (patch)
tree26638c68d124efa7c6e7e97d951c810a3b2f4171 /test/MC/X86
parentb9b629cbaa25497872eaa811e7b0c225e3c7f545 (diff)
downloadllvm-db9fa461d7d9643a1b25f13df73638be9c36cafb.tar.gz
llvm-db9fa461d7d9643a1b25f13df73638be9c36cafb.tar.bz2
llvm-db9fa461d7d9643a1b25f13df73638be9c36cafb.tar.xz
[x86] Allow segment and address-size overrides for LODS[BWLQ] (PR9385)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199803 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/X86')
-rw-r--r--test/MC/X86/index-operations.s46
-rw-r--r--test/MC/X86/x86-16.s6
-rw-r--r--test/MC/X86/x86-32.s6
-rw-r--r--test/MC/X86/x86-64.s8
4 files changed, 56 insertions, 10 deletions
diff --git a/test/MC/X86/index-operations.s b/test/MC/X86/index-operations.s
new file mode 100644
index 0000000000..a5dd88b1d4
--- /dev/null
+++ b/test/MC/X86/index-operations.s
@@ -0,0 +1,46 @@
+// RUN: not llvm-mc -triple x86_64-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=64 %s
+// RUN: FileCheck --check-prefix=ERR64 < %t.err %s
+// RUN: not llvm-mc -triple i386-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=32 %s
+// RUN: FileCheck --check-prefix=ERR32 < %t.err %s
+// RUN: not llvm-mc -triple i386-unknown-unknown-code16 --show-encoding %s 2> %t.err | FileCheck --check-prefix=16 %s
+// RUN: FileCheck --check-prefix=ERR16 < %t.err %s
+
+lodsb
+// 64: lodsb (%rsi), %al # encoding: [0xac]
+// 32: lodsb (%esi), %al # encoding: [0xac]
+// 16: lodsb (%si), %al # encoding: [0xac]
+
+lodsb (%rsi), %al
+// 64: lodsb (%rsi), %al # encoding: [0xac]
+// ERR32: 64-bit
+// ERR16: 64-bit
+
+lodsb (%esi), %al
+// 64: lodsb (%esi), %al # encoding: [0x67,0xac]
+// 32: lodsb (%esi), %al # encoding: [0xac]
+// 16: lodsb (%esi), %al # encoding: [0x67,0xac]
+
+lodsb (%si), %al
+// ERR64: invalid 16-bit base register
+// 32: lodsb (%si), %al # encoding: [0x67,0xac]
+// 16: lodsb (%si), %al # encoding: [0xac]
+
+lodsl %gs:(%esi)
+// 64: lodsl %gs:(%esi), %eax # encoding: [0x65,0x67,0xad]
+// 32: lodsl %gs:(%esi), %eax # encoding: [0x65,0xad]
+// 16: lodsl %gs:(%esi), %eax # encoding: [0x66,0x65,0x67,0xad]
+
+lodsl (%edi), %eax
+// ERR64: invalid operand
+// ERR32: invalid operand
+// ERR16: invalid operand
+
+lodsl 44(%edi), %eax
+// ERR64: invalid operand
+// ERR32: invalid operand
+// ERR16: invalid operand
+
+lods (%esi), %ax
+// 64: lodsw (%esi), %ax # encoding: [0x66,0x67,0xad]
+// 32: lodsw (%esi), %ax # encoding: [0x66,0xad]
+// 16: lodsw (%esi), %ax # encoding: [0x67,0xad]
diff --git a/test/MC/X86/x86-16.s b/test/MC/X86/x86-16.s
index 41d068e3d0..4b54a027a8 100644
--- a/test/MC/X86/x86-16.s
+++ b/test/MC/X86/x86-16.s
@@ -845,7 +845,7 @@ pshufw $90, %mm4, %mm0
movsl %ds:(%si), %es:(%di)
movsl (%si), %es:(%di)
-// CHECK: lodsb # encoding: [0xac]
+// CHECK: lodsb (%si), %al # encoding: [0xac]
// CHECK: lodsb
// CHECK: lodsb
// CHECK: lodsb
@@ -856,7 +856,7 @@ pshufw $90, %mm4, %mm0
lods %ds:(%si), %al
lods (%si), %al
-// CHECK: lodsw # encoding: [0xad]
+// CHECK: lodsw (%si), %ax # encoding: [0xad]
// CHECK: lodsw
// CHECK: lodsw
// CHECK: lodsw
@@ -867,7 +867,7 @@ pshufw $90, %mm4, %mm0
lods %ds:(%si), %ax
lods (%si), %ax
-// CHECK: lodsl # encoding: [0x66,0xad]
+// CHECK: lodsl (%si), %eax # encoding: [0x66,0xad]
// CHECK: lodsl
// CHECK: lodsl
// CHECK: lodsl
diff --git a/test/MC/X86/x86-32.s b/test/MC/X86/x86-32.s
index 140c05af6b..29be52e35c 100644
--- a/test/MC/X86/x86-32.s
+++ b/test/MC/X86/x86-32.s
@@ -921,7 +921,7 @@ pshufw $90, %mm4, %mm0
movsl %ds:(%esi), %es:(%edi)
movsl (%esi), %es:(%edi)
-// CHECK: lodsb # encoding: [0xac]
+// CHECK: lodsb (%esi), %al # encoding: [0xac]
// CHECK: lodsb
// CHECK: lodsb
// CHECK: lodsb
@@ -932,7 +932,7 @@ pshufw $90, %mm4, %mm0
lods %ds:(%esi), %al
lods (%esi), %al
-// CHECK: lodsw # encoding: [0x66,0xad]
+// CHECK: lodsw (%esi), %ax # encoding: [0x66,0xad]
// CHECK: lodsw
// CHECK: lodsw
// CHECK: lodsw
@@ -943,7 +943,7 @@ pshufw $90, %mm4, %mm0
lods %ds:(%esi), %ax
lods (%esi), %ax
-// CHECK: lodsl # encoding: [0xad]
+// CHECK: lodsl (%esi), %eax # encoding: [0xad]
// CHECK: lodsl
// CHECK: lodsl
// CHECK: lodsl
diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s
index 28035c076c..ef798d7f08 100644
--- a/test/MC/X86/x86-64.s
+++ b/test/MC/X86/x86-64.s
@@ -1116,7 +1116,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
movsq %ds:(%rsi), %es:(%rdi)
movsq (%rsi), %es:(%rdi)
-// CHECK: lodsb # encoding: [0xac]
+// CHECK: lodsb (%rsi), %al # encoding: [0xac]
// CHECK: lodsb
// CHECK: lodsb
// CHECK: lodsb
@@ -1127,7 +1127,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
lods %ds:(%rsi), %al
lods (%rsi), %al
-// CHECK: lodsw # encoding: [0x66,0xad]
+// CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad]
// CHECK: lodsw
// CHECK: lodsw
// CHECK: lodsw
@@ -1138,7 +1138,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
lods %ds:(%rsi), %ax
lods (%rsi), %ax
-// CHECK: lodsl # encoding: [0xad]
+// CHECK: lodsl (%rsi), %eax # encoding: [0xad]
// CHECK: lodsl
// CHECK: lodsl
// CHECK: lodsl
@@ -1149,7 +1149,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
lods %ds:(%rsi), %eax
lods (%rsi), %eax
-// CHECK: lodsq # encoding: [0x48,0xad]
+// CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad]
// CHECK: lodsq
// CHECK: lodsq
// CHECK: lodsq