From 77ad80922bf3042536fc41b19cc0bf230ea485b4 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 4 Dec 2019 10:41:43 +0100 Subject: [PATCH] x86/Intel: extend MOVDIRI testing 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/ChangeLog | 11 +++++++++++ gas/testsuite/gas/i386/movdir-intel.d | 1 + gas/testsuite/gas/i386/movdir.d | 1 + gas/testsuite/gas/i386/movdir.s | 1 + gas/testsuite/gas/i386/x86-64-movdir-intel.d | 3 +++ gas/testsuite/gas/i386/x86-64-movdir.d | 3 +++ gas/testsuite/gas/i386/x86-64-movdir.s | 3 +++ opcodes/ChangeLog | 4 ++++ opcodes/i386-dis.c | 2 +- 9 files changed, 28 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 411d66fd94d..b7d305f60c5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +2019-12-04 Jan Beulich + + * 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. + 2019-12-04 Jan Beulich * config/tc-i386.c (process_suffix): Arrange for insns with a diff --git a/gas/testsuite/gas/i386/movdir-intel.d b/gas/testsuite/gas/i386/movdir-intel.d index d6eab9c0c24..be721ba443c 100644 --- 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 diff --git a/gas/testsuite/gas/i386/movdir.d b/gas/testsuite/gas/i386/movdir.d index 852b20d8a39..c70b756e37f 100644 --- 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 diff --git a/gas/testsuite/gas/i386/movdir.s b/gas/testsuite/gas/i386/movdir.s index 28dfa6154a1..5ea4bb5175f 100644 --- 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] diff --git a/gas/testsuite/gas/i386/x86-64-movdir-intel.d b/gas/testsuite/gas/i386/x86-64-movdir-intel.d index f6c2548d1c5..0f3a5abd610 100644 --- 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\] diff --git a/gas/testsuite/gas/i386/x86-64-movdir.d b/gas/testsuite/gas/i386/x86-64-movdir.d index fd7f4e58647..2deab8928e6 100644 --- 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 diff --git a/gas/testsuite/gas/i386/x86-64-movdir.s b/gas/testsuite/gas/i386/x86-64-movdir.s index f0fe2679787..6f9032dc4b3 100644 --- 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] diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 79f12e93658..162ff0492e0 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2019-12-04 Jan Beulich + + * i386-dis.c (mod_table): Use Ev instead of Em for movdiri. + 2019-12-04 Jan Beulich * i386-opc.tbl (push, pop): Drop DefaultSize from GPR-only diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 6b08dd6bde8..2a0e765c55a 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -10522,7 +10522,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 */ -- 2.30.2