From db9fa461d7d9643a1b25f13df73638be9c36cafb Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Wed, 22 Jan 2014 15:08:08 +0000 Subject: [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 --- test/MC/X86/index-operations.s | 46 ++++++++++++++++++++++++++++++++++++++++++ test/MC/X86/x86-16.s | 6 +++--- test/MC/X86/x86-32.s | 6 +++--- test/MC/X86/x86-64.s | 8 ++++---- 4 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 test/MC/X86/index-operations.s (limited to 'test/MC') 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 -- cgit v1.2.3