aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorCui, Lili <lili.cui@intel.com>2024-04-23 15:24:42 +0800
committerCui, Lili <lili.cui@intel.com>2024-05-06 18:33:45 +0800
commitc8866e3ec5e23b394d1258d623ff337abc4cd41d (patch)
tree26fabf166a0ff289e8627f1cf0d55cf28a76195c /gas
parent0820c9f5fc13047b4b25361d6d3bb0ceb2a611d8 (diff)
downloadbinutils-c8866e3ec5e23b394d1258d623ff337abc4cd41d.zip
binutils-c8866e3ec5e23b394d1258d623ff337abc4cd41d.tar.gz
binutils-c8866e3ec5e23b394d1258d623ff337abc4cd41d.tar.bz2
x86: Drop using extension_opcode to encode vvvv register
gas/ChangeLog: * config/tc-i386.c (build_modrm_byte): Dropped the use of extension_opcode to encode the vvvv register. * testsuite/gas/i386/x86-64-sse2avx.d: Added new testcases. * testsuite/gas/i386/x86-64-sse2avx.s: Diito. opcodes/ChangeLog: * i386-opc.tbl: Added DstVVVV to some extension_opcode instructions. * i386-tbl.h: Regenerated.
Diffstat (limited to 'gas')
-rw-r--r--gas/config/tc-i386.c9
-rw-r--r--gas/testsuite/gas/i386/x86-64-sse2avx.d7
-rw-r--r--gas/testsuite/gas/i386/x86-64-sse2avx.s7
3 files changed, 17 insertions, 6 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 9d50752..339e849 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -10463,12 +10463,9 @@ build_modrm_byte (void)
break;
}
- if (i.tm.extension_opcode != None)
- {
- if (dest != source)
- v = dest;
- dest = ~0;
- }
+ if (dest == source)
+ dest = ~0;
+
gas_assert (source < dest);
if (v < MAX_OPERANDS)
diff --git a/gas/testsuite/gas/i386/x86-64-sse2avx.d b/gas/testsuite/gas/i386/x86-64-sse2avx.d
index a652ef6..e1c79ff 100644
--- a/gas/testsuite/gas/i386/x86-64-sse2avx.d
+++ b/gas/testsuite/gas/i386/x86-64-sse2avx.d
@@ -728,6 +728,13 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: c5 72 11 c1 vmovss %xmm8,%xmm1,%xmm1
[ ]*[a-f0-9]+: c4 c1 32 11 c1 vmovss %xmm0,%xmm9,%xmm9
[ ]*[a-f0-9]+: c4 c1 39 71 f0 00 vpsllw \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 72 f0 00 vpslld \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 73 f0 00 vpsllq \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 71 e0 00 vpsraw \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 72 e0 00 vpsrad \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 71 d0 00 vpsrlw \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 72 d0 00 vpsrld \$(0x)?0,%xmm8,%xmm8
+[ ]*[a-f0-9]+: c4 c1 39 73 d0 00 vpsrlq \$(0x)?0,%xmm8,%xmm8
[ ]*[a-f0-9]+: c5 79 c5 c8 00 vpextrw \$(0x)?0,%xmm0,%r9d
[ ]*[a-f0-9]+: c4 c1 79 c5 c8 00 vpextrw \$(0x)?0,%xmm8,%ecx
[ ]*[a-f0-9]+: c4 63 79 14 c1 00 vpextrb \$(0x)?0,%xmm8,%ecx
diff --git a/gas/testsuite/gas/i386/x86-64-sse2avx.s b/gas/testsuite/gas/i386/x86-64-sse2avx.s
index 4de8118..f08115a 100644
--- a/gas/testsuite/gas/i386/x86-64-sse2avx.s
+++ b/gas/testsuite/gas/i386/x86-64-sse2avx.s
@@ -822,6 +822,13 @@ _start:
{store} rexz movss %xmm0, %xmm1
rexz psllw $0, %xmm0
+ rexz pslld $0, %xmm0
+ rexz psllq $0, %xmm0
+ rexz psraw $0, %xmm0
+ rexz psrad $0, %xmm0
+ rexz psrlw $0, %xmm0
+ rexz psrld $0, %xmm0
+ rexz psrlq $0, %xmm0
rexx pextrw $0, %xmm0, %ecx
rexz pextrw $0, %xmm0, %ecx