x86: drop further EVEX table entries that can be served by VEX ones
authorJan Beulich <jbeulich@suse.com>
Tue, 14 Jul 2020 08:32:51 +0000 (10:32 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 14 Jul 2020 08:32:51 +0000 (10:32 +0200)
A few cases were missed by 6df22cf64c93 ("x86: drop EVEX table entries
that can be served by VEX ones").

opcodes/ChangeLog
opcodes/i386-dis-evex-prefix.h
opcodes/i386-dis-evex.h
opcodes/i386-dis.c

index 52f7b89139519baf6c0eec45d6438c104baa00a1..7ade597ade4726bc35c08dcd0e9027433d4682d2 100644 (file)
@@ -1,3 +1,16 @@
+2020-07-14  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (PREFIX_EVEX_0F2C, PREFIX_EVEX_0F2D,
+       PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F): Delete.
+       (prefix_table): Add EXxEVexS operand to vcvttss2si, vcvttsd2si,
+       vcvtss2si, vcvtsd2si, vucomiss, and vucomisd table entries.
+       Retain X macro and PREFIX_OPCODE use from tjhe EVEX table for
+       the latter two.
+       * i386-dis-evex.h (evex_table): Reference VEX table for opcodes
+       0F2C, 0F2D, 0F2E, and 0F2F.
+       * i386-dis-evex-prefix.h: Delete opcode 0F2C, 0F2D, 0F2E, and
+       0F2F table entries.
+
 2020-07-14  Jan Beulich  <jbeulich@suse.com>
 
        * i386-dis.c (OP_VexR, VexScalarR): New.
index 8e2c361539b38135e9e25cf849dc2ba3b7e8ae3b..9b3553259cbcfe594835f2c6e9c27866a3c1ce73 100644 (file)
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F2A_P_3) },
   },
-  /* PREFIX_EVEX_0F2C */
-  {
-    { Bad_Opcode },
-    { "vcvttss2si",    { Gdq, EXxmm_md, EXxEVexS }, 0 },
-    { Bad_Opcode },
-    { "vcvttsd2si",    { Gdq, EXxmm_mq, EXxEVexS }, 0 },
-  },
-  /* PREFIX_EVEX_0F2D */
-  {
-    { Bad_Opcode },
-    { "vcvtss2si",     { Gdq, EXxmm_md, EXxEVexR }, 0 },
-    { Bad_Opcode },
-    { "vcvtsd2si",     { Gdq, EXxmm_mq, EXxEVexR }, 0 },
-  },
-  /* PREFIX_EVEX_0F2E */
-  {
-    { "vucomisX",      { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE },
-    { Bad_Opcode },
-    { "vucomisX",      { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE },
-  },
-  /* PREFIX_EVEX_0F2F */
-  {
-    { "vcomisX",       { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE },
-    { Bad_Opcode },
-    { "vcomisX",       { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE },
-  },
   /* PREFIX_EVEX_0F51 */
   {
     { "vsqrtpX",       { XM, EXx, EXxEVexR }, PREFIX_OPCODE },
index 1f6635d29234b52d089c288c602040f71c379d4c..120c55d566d5169a987b0763788738a17779fd0c 100644 (file)
@@ -51,10 +51,10 @@ static const struct dis386 evex_table[][256] = {
     { "vmovapX",       { EXxS, XM }, PREFIX_OPCODE },
     { PREFIX_TABLE (PREFIX_EVEX_0F2A) },
     { MOD_TABLE (MOD_EVEX_0F2B) },
-    { PREFIX_TABLE (PREFIX_EVEX_0F2C) },
-    { PREFIX_TABLE (PREFIX_EVEX_0F2D) },
-    { PREFIX_TABLE (PREFIX_EVEX_0F2E) },
-    { PREFIX_TABLE (PREFIX_EVEX_0F2F) },
+    { PREFIX_TABLE (PREFIX_VEX_0F2C) },
+    { PREFIX_TABLE (PREFIX_VEX_0F2D) },
+    { PREFIX_TABLE (PREFIX_VEX_0F2E) },
+    { PREFIX_TABLE (PREFIX_VEX_0F2F) },
     /* 30 */
     { Bad_Opcode },
     { Bad_Opcode },
index 3b8eb3009745faa75189875d9d2e1625be8052c5..acee3c9416f7948a5a964b76489e61a0fbde7b4f 100644 (file)
@@ -1411,10 +1411,6 @@ enum
   PREFIX_EVEX_0F12,
   PREFIX_EVEX_0F16,
   PREFIX_EVEX_0F2A,
-  PREFIX_EVEX_0F2C,
-  PREFIX_EVEX_0F2D,
-  PREFIX_EVEX_0F2E,
-  PREFIX_EVEX_0F2F,
   PREFIX_EVEX_0F51,
   PREFIX_EVEX_0F58,
   PREFIX_EVEX_0F59,
@@ -4664,31 +4660,31 @@ static const struct dis386 prefix_table[][4] = {
   /* PREFIX_VEX_0F2C */
   {
     { Bad_Opcode },
-    { "vcvttss2si",    { Gdq, EXxmm_md }, 0 },
+    { "vcvttss2si",    { Gdq, EXxmm_md, EXxEVexS }, 0 },
     { Bad_Opcode },
-    { "vcvttsd2si",    { Gdq, EXxmm_mq }, 0 },
+    { "vcvttsd2si",    { Gdq, EXxmm_mq, EXxEVexS }, 0 },
   },
 
   /* PREFIX_VEX_0F2D */
   {
     { Bad_Opcode },
-    { "vcvtss2si",     { Gdq, EXxmm_md }, 0 },
+    { "vcvtss2si",     { Gdq, EXxmm_md, EXxEVexR }, 0 },
     { Bad_Opcode },
-    { "vcvtsd2si",     { Gdq, EXxmm_mq }, 0 },
+    { "vcvtsd2si",     { Gdq, EXxmm_mq, EXxEVexR }, 0 },
   },
 
   /* PREFIX_VEX_0F2E */
   {
-    { "vucomiss",      { XMScalar, EXxmm_md }, 0 },
+    { "vucomisX",      { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE },
     { Bad_Opcode },
-    { "vucomisd",      { XMScalar, EXxmm_mq }, 0 },
+    { "vucomisX",      { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE },
   },
 
   /* PREFIX_VEX_0F2F */
   {
-    { "vcomiss",       { XMScalar, EXxmm_md }, 0 },
+    { "vcomisX",       { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE },
     { Bad_Opcode },
-    { "vcomisd",       { XMScalar, EXxmm_mq }, 0 },
+    { "vcomisX",       { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE },
   },
 
   /* PREFIX_VEX_0F41 */