[PATCH 1/3] x86: remove stray uses of xmmq_mode

Jan Beulich jbeulich@suse.com
Wed Mar 10 08:27:32 GMT 2021


xmmq_mode is documented to not allow for broadcast - don't include it in
respective checks in OP_E_memory().

opcodes/
2021-03-XX  Jan Beulich  <jbeulich@suse.com>

	* i386-dis.c (OP_E_memory): Drop xmmq_mode from broadcast
	checks. Move case label past broadcast check.

--- 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)



More information about the Binutils mailing list