aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-07-06 13:35:38 +0200
committerJan Beulich <jbeulich@suse.com>2020-07-06 13:35:38 +0200
commit39e0f45682a39e09ab115333c593dbdd25658dd2 (patch)
tree1742193a9d440ffb599a4228ee5d19a825e29c7f
parent5b872f7df76cc88e0c4fdfe7872a3df3178302dc (diff)
downloadgdb-39e0f45682a39e09ab115333c593dbdd25658dd2.zip
gdb-39e0f45682a39e09ab115333c593dbdd25658dd2.tar.gz
gdb-39e0f45682a39e09ab115333c593dbdd25658dd2.tar.bz2
x86: replace EXqScalarS by EXqVexScalarS
There's only a single user, that that one can do fine with the alternative, as the "Vex" aspect of the other operand kind is meaningful only on 3-operand insns. While doing this I noticed that I didn't need to do the same adjustment in the EVEX tables, and voilĂ  - there was a bug, which gets fixed at the same time (see the testsuite changes).
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/testsuite/gas/i386/avx512f-opts-intel.d2
-rw-r--r--gas/testsuite/gas/i386/avx512f-opts.d2
-rw-r--r--gas/testsuite/gas/i386/avx512f-opts.s3
-rw-r--r--gas/testsuite/gas/i386/x86-64-avx512f-opts-intel.d4
-rw-r--r--gas/testsuite/gas/i386/x86-64-avx512f-opts.d4
-rw-r--r--gas/testsuite/gas/i386/x86-64-avx512f-opts.s1
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/i386-dis-evex-w.h2
-rw-r--r--opcodes/i386-dis.c3
10 files changed, 29 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 532211e..db578b7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2020-07-06 Jan Beulich <jbeulich@suse.com>
+
+ * testsuite/gas/i386/avx512f-opts.s: Add EVEX movq tests.
+ * testsuite/gas/i386/x86-64-avx512f-opts.s: Add blank line.
+ * testsuite/gas/i386/avx512f-opts-intel.d,
+ testsuite/gas/i386/avx512f-opts.d
+ testsuite/gas/i386/x86-64-avx512f-opts-intel.d
+ testsuite/gas/i386/x86-64-avx512f-opts.d: Adjust expectations.
+
2020-07-06 Yuri Chornoivan <yurchor@ukr.net>
PR 26204
diff --git a/gas/testsuite/gas/i386/avx512f-opts-intel.d b/gas/testsuite/gas/i386/avx512f-opts-intel.d
index 98d0d46..1a38ef6 100644
--- a/gas/testsuite/gas/i386/avx512f-opts-intel.d
+++ b/gas/testsuite/gas/i386/avx512f-opts-intel.d
@@ -65,6 +65,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 f1 7c 4f 10 f5 vmovups zmm6\{k7\},zmm5
[ ]*[a-f0-9]+: 62 f1 7c cf 11 ee vmovups.s zmm6\{k7\}\{z\},zmm5
[ ]*[a-f0-9]+: 62 f1 7c cf 10 f5 vmovups zmm6\{k7\}\{z\},zmm5
+[ ]*[a-f0-9]+: 62 f1 fd 08 d6 ee vmovq\.s xmm6,xmm5
+[ ]*[a-f0-9]+: 62 f1 fe 08 7e f5 vmovq xmm6,xmm5
[ ]*[a-f0-9]+: 62 f1 fd 48 29 ee vmovapd.s zmm6,zmm5
[ ]*[a-f0-9]+: 62 f1 fd 48 28 f5 vmovapd zmm6,zmm5
[ ]*[a-f0-9]+: 62 f1 fd 4f 29 ee vmovapd.s zmm6\{k7\},zmm5
diff --git a/gas/testsuite/gas/i386/avx512f-opts.d b/gas/testsuite/gas/i386/avx512f-opts.d
index ba94065..19697e9 100644
--- a/gas/testsuite/gas/i386/avx512f-opts.d
+++ b/gas/testsuite/gas/i386/avx512f-opts.d
@@ -64,6 +64,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 f1 7c 4f 10 f5 vmovups %zmm5,%zmm6\{%k7\}
[ ]*[a-f0-9]+: 62 f1 7c cf 11 ee vmovups.s %zmm5,%zmm6\{%k7\}\{z\}
[ ]*[a-f0-9]+: 62 f1 7c cf 10 f5 vmovups %zmm5,%zmm6\{%k7\}\{z\}
+[ ]*[a-f0-9]+: 62 f1 fd 08 d6 ee vmovq\.s %xmm5,%xmm6
+[ ]*[a-f0-9]+: 62 f1 fe 08 7e f5 vmovq %xmm5,%xmm6
[ ]*[a-f0-9]+: 62 f1 fd 48 29 ee vmovapd.s %zmm5,%zmm6
[ ]*[a-f0-9]+: 62 f1 fd 48 28 f5 vmovapd %zmm5,%zmm6
[ ]*[a-f0-9]+: 62 f1 fd 4f 29 ee vmovapd.s %zmm5,%zmm6\{%k7\}
diff --git a/gas/testsuite/gas/i386/avx512f-opts.s b/gas/testsuite/gas/i386/avx512f-opts.s
index 88fee28..91ccd25 100644
--- a/gas/testsuite/gas/i386/avx512f-opts.s
+++ b/gas/testsuite/gas/i386/avx512f-opts.s
@@ -60,6 +60,9 @@ _start:
vmovups %zmm5, %zmm6{%k7} # AVX512F
vmovups.s %zmm5, %zmm6{%k7}{z} # AVX512F
vmovups %zmm5, %zmm6{%k7}{z} # AVX512F
+ {evex} vmovq.s %xmm5,%xmm6
+ {evex} vmovq %xmm5,%xmm6
+
.intel_syntax noprefix
vmovapd.s zmm6, zmm5 # AVX512F
vmovapd zmm6, zmm5 # AVX512F
diff --git a/gas/testsuite/gas/i386/x86-64-avx512f-opts-intel.d b/gas/testsuite/gas/i386/x86-64-avx512f-opts-intel.d
index ad3d135..92b1486 100644
--- a/gas/testsuite/gas/i386/x86-64-avx512f-opts-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-avx512f-opts-intel.d
@@ -55,7 +55,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 61 fd 08 7e f0 vmovq rax,xmm30
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq r8,xmm30
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq r8,xmm30
-[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq xmm30,xmm29
+[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq\.s xmm30,xmm29
[ ]*[a-f0-9]+: 62 01 fe 08 7e f5 vmovq xmm30,xmm29
[ ]*[a-f0-9]+: 62 01 97 07 11 e6 vmovsd.s xmm30\{k7\},xmm29,xmm28
[ ]*[a-f0-9]+: 62 01 97 07 10 f4 vmovsd xmm30\{k7\},xmm29,xmm28
@@ -123,7 +123,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 61 fd 08 7e f0 vmovq rax,xmm30
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq r8,xmm30
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq r8,xmm30
-[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq xmm30,xmm29
+[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq\.s xmm30,xmm29
[ ]*[a-f0-9]+: 62 01 fe 08 7e f5 vmovq xmm30,xmm29
[ ]*[a-f0-9]+: 62 01 97 07 11 e6 vmovsd.s xmm30\{k7\},xmm29,xmm28
[ ]*[a-f0-9]+: 62 01 97 07 10 f4 vmovsd xmm30\{k7\},xmm29,xmm28
diff --git a/gas/testsuite/gas/i386/x86-64-avx512f-opts.d b/gas/testsuite/gas/i386/x86-64-avx512f-opts.d
index 3cce248..eeb296a 100644
--- a/gas/testsuite/gas/i386/x86-64-avx512f-opts.d
+++ b/gas/testsuite/gas/i386/x86-64-avx512f-opts.d
@@ -54,7 +54,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 61 fd 08 7e f0 vmovq %xmm30,%rax
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq %xmm30,%r8
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq %xmm30,%r8
-[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq %xmm29,%xmm30
+[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq\.s %xmm29,%xmm30
[ ]*[a-f0-9]+: 62 01 fe 08 7e f5 vmovq %xmm29,%xmm30
[ ]*[a-f0-9]+: 62 01 97 07 11 e6 vmovsd.s %xmm28,%xmm29,%xmm30\{%k7\}
[ ]*[a-f0-9]+: 62 01 97 07 10 f4 vmovsd %xmm28,%xmm29,%xmm30\{%k7\}
@@ -122,7 +122,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 62 61 fd 08 7e f0 vmovq %xmm30,%rax
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq %xmm30,%r8
[ ]*[a-f0-9]+: 62 41 fd 08 7e f0 vmovq %xmm30,%r8
-[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq %xmm29,%xmm30
+[ ]*[a-f0-9]+: 62 01 fd 08 d6 ee vmovq\.s %xmm29,%xmm30
[ ]*[a-f0-9]+: 62 01 fe 08 7e f5 vmovq %xmm29,%xmm30
[ ]*[a-f0-9]+: 62 01 97 07 11 e6 vmovsd.s %xmm28,%xmm29,%xmm30\{%k7\}
[ ]*[a-f0-9]+: 62 01 97 07 10 f4 vmovsd %xmm28,%xmm29,%xmm30\{%k7\}
diff --git a/gas/testsuite/gas/i386/x86-64-avx512f-opts.s b/gas/testsuite/gas/i386/x86-64-avx512f-opts.s
index 997c846..27898a1 100644
--- a/gas/testsuite/gas/i386/x86-64-avx512f-opts.s
+++ b/gas/testsuite/gas/i386/x86-64-avx512f-opts.s
@@ -72,6 +72,7 @@ _start:
vmovups %zmm29, %zmm30{%k7} # AVX512F
vmovups.s %zmm29, %zmm30{%k7}{z} # AVX512F
vmovups %zmm29, %zmm30{%k7}{z} # AVX512F
+
.intel_syntax noprefix
vmovapd.s zmm30, zmm29 # AVX512F
vmovapd zmm30, zmm29 # AVX512F
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 3578b6b..205db9b 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,11 @@
2020-07-06 Jan Beulich <jbeulich@suse.com>
+ * i386-dis.c (EXqScalarS): Delete.
+ (vex_len_table): Replace EXqScalarS by EXqVexScalarS.
+ * i386-dis-evex-w.h (vmovq): Use EXqVexScalarS.
+
+2020-07-06 Jan Beulich <jbeulich@suse.com>
+
* i386-dis.c (safe-ctype.h): Include.
(EXdScalar, EXqScalar): Delete.
(d_scalar_mode, q_scalar_mode): Delete.
diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h
index 3029169..45ecb87 100644
--- a/opcodes/i386-dis-evex-w.h
+++ b/opcodes/i386-dis-evex-w.h
@@ -294,7 +294,7 @@
/* EVEX_W_0FD6_P_2 */
{
{ Bad_Opcode },
- { "vmovq", { EXxmm_mq, XMScalar }, 0 },
+ { "vmovq", { EXqVexScalarS, XMScalar }, 0 },
},
/* EVEX_W_0FE6_P_1 */
{
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 9147c37..8ef1aa7 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -386,7 +386,6 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
#define EXd { OP_EX, d_mode }
#define EXdS { OP_EX, d_swap_mode }
#define EXq { OP_EX, q_mode }
-#define EXqScalarS { OP_EX, q_scalar_swap_mode }
#define EXqS { OP_EX, q_swap_mode }
#define EXx { OP_EX, x_mode }
#define EXxS { OP_EX, x_swap_mode }
@@ -9498,7 +9497,7 @@ static const struct dis386 vex_len_table[][2] = {
/* VEX_LEN_0FD6_P_2 */
{
- { "vmovq", { EXqScalarS, XMScalar }, 0 },
+ { "vmovq", { EXqVexScalarS, XMScalar }, 0 },
},
/* VEX_LEN_0FF7_P_2 */