x86/Intel: extend MOVDIRI testing

Message ID ef1cc22e-315a-0e15-4129-60375d23361c@suse.com
State New
Headers show
Series
  • x86/Intel: extend MOVDIRI testing
Related show

Commit Message

Jan Beulich Nov. 25, 2019, 7:32 a.m.
Test also memory operands with operand size specifier, which was broken
prior to dc2be329b950 ("i386: Only check suffix in instruction
mnemonic"), due to the template not permitting any suffixes. Note that
this uncovered a disassembler issue, which is being fixed here as well.

gas/
2019-11-XX  Jan Beulich  <jbeulich@suse.com>

	* testsuite/gas/i386/movdir.s: Add Intel syntax case with
	operand size specifier.
	* testsuite/gas/i386/x86-64-movdir.s: Add Intel syntax cases
	with operand size specifier and wit 32-bit operands.
	* testsuite/gas/i386/movdir-intel.d,
	testsuite/gas/i386/movdir.d,
	testsuite/gas/i386/x86-64-movdir-intel.d,
	testsuite/gas/i386/x86-64-movdir.d: Adjust expectations.

opcodes/
2019-11-XX  Jan Beulich  <jbeulich@suse.com>

	* i386-dis.c (mod_table): Use Ev instead of Em for movdiri.

Comments

H.J. Lu Dec. 3, 2019, 5:29 p.m. | #1
On Sun, Nov 24, 2019 at 11:32 PM Jan Beulich <jbeulich@suse.com> wrote:
>

> Test also memory operands with operand size specifier, which was broken

> prior to dc2be329b950 ("i386: Only check suffix in instruction

> mnemonic"), due to the template not permitting any suffixes. Note that

> this uncovered a disassembler issue, which is being fixed here as well.

>

> gas/

> 2019-11-XX  Jan Beulich  <jbeulich@suse.com>

>

>         * testsuite/gas/i386/movdir.s: Add Intel syntax case with

>         operand size specifier.

>         * testsuite/gas/i386/x86-64-movdir.s: Add Intel syntax cases

>         with operand size specifier and wit 32-bit operands.

>         * testsuite/gas/i386/movdir-intel.d,

>         testsuite/gas/i386/movdir.d,

>         testsuite/gas/i386/x86-64-movdir-intel.d,

>         testsuite/gas/i386/x86-64-movdir.d: Adjust expectations.

>

> opcodes/

> 2019-11-XX  Jan Beulich  <jbeulich@suse.com>

>

>         * i386-dis.c (mod_table): Use Ev instead of Em for movdiri.

>


OK.

Thanks.

-- 
H.J.

Patch

--- a/gas/testsuite/gas/i386/movdir-intel.d
+++ b/gas/testsuite/gas/i386/movdir-intel.d
@@ -13,6 +13,7 @@  Disassembly of section \.text:
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b eax,\[ecx\]
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 04[ 	]*movdir64b ax,\[si\]
 [ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri DWORD PTR \[ecx\],eax
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri DWORD PTR \[ecx\],eax
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b eax,\[ecx\]
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 04[ 	]*movdir64b ax,\[si\]
 #pass
--- a/gas/testsuite/gas/i386/movdir.d
+++ b/gas/testsuite/gas/i386/movdir.d
@@ -13,6 +13,7 @@  Disassembly of section \.text:
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b \(%ecx\),%eax
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 04[ 	]*movdir64b \(%si\),%ax
 [ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri %eax,\(%ecx\)
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri %eax,\(%ecx\)
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b \(%ecx\),%eax
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 04[ 	]*movdir64b \(%si\),%ax
 #pass
--- a/gas/testsuite/gas/i386/movdir.s
+++ b/gas/testsuite/gas/i386/movdir.s
@@ -9,5 +9,6 @@  _start:
 
 	.intel_syntax noprefix
 	movdiri [ecx], eax
+	movdiri dword ptr [ecx], eax
 	movdir64b eax,[ecx]
 	movdir64b ax,[si]
--- a/gas/testsuite/gas/i386/x86-64-movdir-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-movdir-intel.d
@@ -12,6 +12,9 @@  Disassembly of section \.text:
 [ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri QWORD PTR \[rcx\],rax
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b rax,\[rcx\]
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 01[ 	]*movdir64b eax,\[ecx]
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri DWORD PTR \[rcx\],eax
+[ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri QWORD PTR \[rcx\],rax
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri DWORD PTR \[rcx\],eax
 [ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri QWORD PTR \[rcx\],rax
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b rax,\[rcx\]
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 01[ 	]*movdir64b eax,\[ecx\]
--- a/gas/testsuite/gas/i386/x86-64-movdir.d
+++ b/gas/testsuite/gas/i386/x86-64-movdir.d
@@ -12,6 +12,9 @@  Disassembly of section \.text:
 [ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri %rax,\(%rcx\)
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b \(%rcx\),%rax
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 01[ 	]*movdir64b \(%ecx\),%eax
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri %eax,\(%rcx\)
+[ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri %rax,\(%rcx\)
+[ 	]*[a-f0-9]+:[ 	]*0f 38 f9 01[ 	]*movdiri %eax,\(%rcx\)
 [ 	]*[a-f0-9]+:[ 	]*48 0f 38 f9 01[ 	]*movdiri %rax,\(%rcx\)
 [ 	]*[a-f0-9]+:[ 	]*66 0f 38 f8 01[ 	]*movdir64b \(%rcx\),%rax
 [ 	]*[a-f0-9]+:[ 	]*67 66 0f 38 f8 01[ 	]*movdir64b \(%ecx\),%eax
--- a/gas/testsuite/gas/i386/x86-64-movdir.s
+++ b/gas/testsuite/gas/i386/x86-64-movdir.s
@@ -8,6 +8,9 @@  _start:
 	movdir64b (%ecx),%eax
 
 	.intel_syntax noprefix
+	movdiri [rcx],eax
 	movdiri [rcx],rax
+	movdiri dword ptr [rcx],eax
+	movdiri qword ptr [rcx],rax
 	movdir64b rax,[rcx]
 	movdir64b eax,[ecx]
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -10524,7 +10524,7 @@  static const struct dis386 mod_table[][2
   },
   {
     /* MOD_0F38F9_PREFIX_0 */
-    { "movdiri",	{ Em, Gv }, PREFIX_OPCODE },
+    { "movdiri",	{ Ev, Gv }, PREFIX_OPCODE },
   },
   {
     /* MOD_62_32BIT */