aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-03-11 16:20:37 +0100
committerJan Beulich <jbeulich@suse.com>2021-03-11 16:20:37 +0100
commitda944c8a70d8c26a56f9fe58e9d21dfa99cb9b02 (patch)
treec85d8f9ac654fbf83b202f49dce7549f8ec569d3
parentebdcad3fddf6ec21f6d4dcc702379a12718cf0c4 (diff)
downloadbinutils-da944c8a70d8c26a56f9fe58e9d21dfa99cb9b02.zip
binutils-da944c8a70d8c26a56f9fe58e9d21dfa99cb9b02.tar.gz
binutils-da944c8a70d8c26a56f9fe58e9d21dfa99cb9b02.tar.bz2
x86: remove stray uses of xmmq_mode
xmmq_mode is documented to not allow for broadcast - don't include it in respective checks in OP_E_memory().
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/i386-dis.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 4f76456..54c69d8 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2021-03-11 Jan Beulich <jbeulich@suse.com>
+
+ * i386-dis.c (OP_E_memory): Drop xmmq_mode from broadcast
+ checks. Move case label past broadcast check.
+
2021-03-10 Jan Beulich <jbeulich@suse.com>
* opcodes/i386-dis.c (MVexVSIBDQWpX, MVexVSIBQDWpX,
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 6300ab9..eb91c5d 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -11418,7 +11418,6 @@ OP_E_memory (int bytemode, int sizeflag)
/* In EVEX, if operand doesn't allow broadcast, vex.b should be 0. */
if (vex.b
&& bytemode != x_mode
- && bytemode != xmmq_mode
&& bytemode != evex_half_bcst_xmmq_mode)
{
BadOp ();
@@ -11455,7 +11454,6 @@ OP_E_memory (int bytemode, int sizeflag)
break;
case x_mode:
case evex_half_bcst_xmmq_mode:
- case xmmq_mode:
if (vex.b)
{
shift = vex.w ? 3 : 2;
@@ -11464,6 +11462,7 @@ OP_E_memory (int bytemode, int sizeflag)
/* Fall through. */
case xmmqd_mode:
case xmmdw_mode:
+ case xmmq_mode:
case ymmq_mode:
case evex_x_nobcst_mode:
case x_swap_mode:
@@ -11848,11 +11847,9 @@ OP_E_memory (int bytemode, int sizeflag)
}
if (vex.evex && vex.b
&& (bytemode == x_mode
- || bytemode == xmmq_mode
|| bytemode == evex_half_bcst_xmmq_mode))
{
if (vex.w
- || bytemode == xmmq_mode
|| bytemode == evex_half_bcst_xmmq_mode)
{
switch (vex.length)