[PATCH] x86: drop vex_encoding_vex2 enumerator

Jan Beulich jbeulich@suse.com
Wed Jan 15 07:42:00 GMT 2020


Documentation clearly says "prefer {2,3}-byte VEX prefix for VEX
instruction", as opposed to "encode with EVEX prefix" for {evex}. Hence
there not being a way to VEX-encode an insn should not be an error (not
even a warning), and with this the separate enumerator becomes unneeded.
(Really I'm having trouble seeing what {vex2} would be useful for when
it's just a suggestion hint, not one allowing the programmer to mandate
the used encoding.)

gas/
2020-01-XX  Jan Beulich  <jbeulich@suse.com>

	* config/tc-i386.c (struct _i386_insn): Drop vex_encoding_vex2
	enumerator from vec_encoding enumeration.
	(parse_insn): Use vex_encoding_default for {vex2}.
	(VEX_check_operands): Don't error when {vex2} or {vex3} cannot
	be honored.

--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -419,7 +419,6 @@ struct _i386_insn
     enum
       {
 	vex_encoding_default = 0,
-	vex_encoding_vex2,
 	vex_encoding_vex3,
 	vex_encoding_evex
       } vec_encoding;
@@ -4723,7 +4722,7 @@ parse_insn (char *line, char *mnemonic)
 		  break;
 		case 0x4:
 		  /* {vex2} */
-		  i.vec_encoding = vex_encoding_vex2;
+		  i.vec_encoding = vex_encoding_default;
 		  break;
 		case 0x5:
 		  /* {vex3} */
@@ -5707,15 +5706,7 @@ VEX_check_operands (const insn_template
     }
 
   if (!t->opcode_modifier.vex)
-    {
-      /* This instruction template doesn't have VEX prefix.  */
-      if (i.vec_encoding != vex_encoding_default)
-	{
-	  i.error = unsupported;
-	  return 1;
-	}
-      return 0;
-    }
+    return 0;
 
   /* Check the special Imm4 cases; must be the first operand.  */
   if (t->cpu_flags.bitfield.cpuxop && t->operands == 5)



More information about the Binutils mailing list