x86: most VBROADCAST{F,I}{32,64}x* only accept memory operands
authorJan Beulich <jbeulich@suse.com>
Mon, 6 Jul 2020 11:43:34 +0000 (13:43 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 6 Jul 2020 11:43:34 +0000 (13:43 +0200)
VBROADCAST{F,I}32x2 are the only exceptions here.

opcodes/ChangeLog
opcodes/i386-dis-evex-len.h
opcodes/i386-dis-evex-mod.h
opcodes/i386-dis-evex-w.h
opcodes/i386-dis.c

index edd60b913013ea851407d3969b412184cbdebf31..1ee200f0d2e1fca60719fdf602f75b35be2a41da 100644 (file)
@@ -1,3 +1,29 @@
+2020-07-06  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (MOD_EVEX_0F381A_P_2_W_0, MOD_EVEX_0F381A_P_2_W_1,
+       MOD_EVEX_0F381B_P_2_W_0, MOD_EVEX_0F381B_P_2_W_1,
+       MOD_EVEX_0F385A_P_2_W_0, MOD_EVEX_0F385A_P_2_W_1,
+       MOD_EVEX_0F385B_P_2_W_0, MOD_EVEX_0F385B_P_2_W_1): New
+       enumerators.
+       (EVEX_LEN_0F381A_P_2_W_0, EVEX_LEN_0F381A_P_2_W_1,
+       EVEX_LEN_0F381B_P_2_W_0, EVEX_LEN_0F381B_P_2_W_1,
+       EVEX_LEN_0F385A_P_2_W_0, EVEX_LEN_0F385A_P_2_W_1,
+       EVEX_LEN_0F385B_P_2_W_0, EVEX_LEN_0F385B_P_2_W_1): Rename to ...
+       (EVEX_LEN_0F381A_P_2_W_0_M_0, EVEX_LEN_0F381A_P_2_W_1_M_0,
+       EVEX_LEN_0F381B_P_2_W_0_M_0, EVEX_LEN_0F381B_P_2_W_1_M_0,
+       EVEX_LEN_0F385A_P_2_W_0_M_0, EVEX_LEN_0F385A_P_2_W_1_M_0,
+       EVEX_LEN_0F385B_P_2_W_0_M_0, EVEX_LEN_0F385B_P_2_W_1_M_0): ...
+       these, respectively.
+       * i386-dis-evex-len.h: Adjust comments.
+       * i386-dis-evex-mod.h: New MOD_EVEX_0F381A_P_2_W_0,
+       MOD_EVEX_0F381A_P_2_W_1, MOD_EVEX_0F381B_P_2_W_0,
+       MOD_EVEX_0F381B_P_2_W_1, MOD_EVEX_0F385A_P_2_W_0,
+       MOD_EVEX_0F385A_P_2_W_1, MOD_EVEX_0F385B_P_2_W_0, and
+       MOD_EVEX_0F385B_P_2_W_1 table entries.
+       * i386-dis-evex-w.h: Reference mod_table[] for
+       EVEX_W_0F381A_P_2, EVEX_W_0F381B_P_2, EVEX_W_0F385A_P_2, and
+       EVEX_W_0F385B_P_2.
+
 2020-07-06  Jan Beulich  <jbeulich@suse.com>
 
        * i386-dis-evex-len.h (vbroadcastf32x8, vbroadcasti32x8,
index 278d7225c8add4f66084bc7e41b7dcf1fa84968e..f844ed05face497be709700d2c11ad090760f289 100644 (file)
@@ -50,28 +50,28 @@ static const struct dis386 evex_len_table[][3] = {
     { "vbroadcastsd",  { XM, EXxmm_mq }, 0 },
   },
 
-  /* EVEX_LEN_0F381A_P_2_W_0 */
+  /* EVEX_LEN_0F381A_P_2_W_0_M_0 */
   {
     { Bad_Opcode },
     { "vbroadcastf32x4",       { XM, EXxmm }, 0 },
     { "vbroadcastf32x4",       { XM, EXxmm }, 0 },
   },
 
-  /* EVEX_LEN_0F381A_P_2_W_1 */
+  /* EVEX_LEN_0F381A_P_2_W_1_M_0 */
   {
     { Bad_Opcode },
     { "vbroadcastf64x2",       { XM, EXxmm }, 0 },
     { "vbroadcastf64x2",       { XM, EXxmm }, 0 },
   },
 
-  /* EVEX_LEN_0F381B_P_2_W_0 */
+  /* EVEX_LEN_0F381B_P_2_W_0_M_0 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vbroadcastf32x8",       { XM, EXymm }, 0 },
   },
 
-  /* EVEX_LEN_0F381B_P_2_W_1 */
+  /* EVEX_LEN_0F381B_P_2_W_1_M_0 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
@@ -85,28 +85,28 @@ static const struct dis386 evex_len_table[][3] = {
     { "vperm%LW",      { XM, Vex, EXx }, 0 },
   },
 
-  /* EVEX_LEN_0F385A_P_2_W_0 */
+  /* EVEX_LEN_0F385A_P_2_W_0_M_0 */
   {
     { Bad_Opcode },
     { "vbroadcasti32x4",       { XM, EXxmm }, 0 },
     { "vbroadcasti32x4",       { XM, EXxmm }, 0 },
   },
 
-  /* EVEX_LEN_0F385A_P_2_W_1 */
+  /* EVEX_LEN_0F385A_P_2_W_1_M_0 */
   {
     { Bad_Opcode },
     { "vbroadcasti64x2",       { XM, EXxmm }, 0 },
     { "vbroadcasti64x2",       { XM, EXxmm }, 0 },
   },
 
-  /* EVEX_LEN_0F385B_P_2_W_0 */
+  /* EVEX_LEN_0F385B_P_2_W_0_M_0 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vbroadcasti32x8",       { XM, EXymm }, 0 },
   },
 
-  /* EVEX_LEN_0F385B_P_2_W_1 */
+  /* EVEX_LEN_0F385B_P_2_W_1_M_0 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
index 657e40a575b4de205d561d99d84cf714f7843ac7..0c81822c41428136321ae7810d46ad9375d49a1c 100644 (file)
     /* MOD_EVEX_0F2B */
     { "vmovntpX",      { EXx, XM }, PREFIX_OPCODE },
   },
+  /* MOD_EVEX_0F381A_P_2_W_0 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_0_M_0) },
+  },
+  /* MOD_EVEX_0F381A_P_2_W_1 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_1_M_0) },
+  },
+  /* MOD_EVEX_0F381B_P_2_W_0 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_0_M_0) },
+  },
+  /* MOD_EVEX_0F381B_P_2_W_1 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_1_M_0) },
+  },
+  /* MOD_EVEX_0F385A_P_2_W_0 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_0_M_0) },
+  },
+  /* MOD_EVEX_0F385A_P_2_W_1 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_1_M_0) },
+  },
+  /* MOD_EVEX_0F385B_P_2_W_0 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_0_M_0) },
+  },
+  /* MOD_EVEX_0F385B_P_2_W_1 */
+  {
+    { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_1_M_0) },
+  },
   {
     /* MOD_EVEX_0F38C6_REG_1 */
     { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_1) },
index 86cb68e92340c01a08db7b3323cbd5da19d42c81..1370c5cc4e7b8e6cad1dbf81c6ef11c4b3bd5889 100644 (file)
   },
   /* EVEX_W_0F381A_P_2 */
   {
-    { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_0) },
-    { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_1) },
+    { MOD_TABLE (MOD_EVEX_0F381A_P_2_W_0) },
+    { MOD_TABLE (MOD_EVEX_0F381A_P_2_W_1) },
   },
   /* EVEX_W_0F381B_P_2 */
   {
-    { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_0) },
-    { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_1) },
+    { MOD_TABLE (MOD_EVEX_0F381B_P_2_W_0) },
+    { MOD_TABLE (MOD_EVEX_0F381B_P_2_W_1) },
   },
   /* EVEX_W_0F381E_P_2 */
   {
   },
   /* EVEX_W_0F385A_P_2 */
   {
-    { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_0) },
-    { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_1) },
+    { MOD_TABLE (MOD_EVEX_0F385A_P_2_W_0) },
+    { MOD_TABLE (MOD_EVEX_0F385A_P_2_W_1) },
   },
   /* EVEX_W_0F385B_P_2 */
   {
-    { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_0) },
-    { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_1) },
+    { MOD_TABLE (MOD_EVEX_0F385B_P_2_W_0) },
+    { MOD_TABLE (MOD_EVEX_0F385B_P_2_W_1) },
   },
   /* EVEX_W_0F3862_P_2 */
   {
index 55af1eb54dc45213fcb2bac44899c310331a1541..3133d8eee62cfee8ed054b6138ff1114bc447f8f 100644 (file)
@@ -932,6 +932,14 @@ enum
   MOD_EVEX_0F16_PREFIX_2,
   MOD_EVEX_0F17,
   MOD_EVEX_0F2B,
+  MOD_EVEX_0F381A_P_2_W_0,
+  MOD_EVEX_0F381A_P_2_W_1,
+  MOD_EVEX_0F381B_P_2_W_0,
+  MOD_EVEX_0F381B_P_2_W_1,
+  MOD_EVEX_0F385A_P_2_W_0,
+  MOD_EVEX_0F385A_P_2_W_1,
+  MOD_EVEX_0F385B_P_2_W_0,
+  MOD_EVEX_0F385B_P_2_W_1,
   MOD_EVEX_0F38C6_REG_1,
   MOD_EVEX_0F38C6_REG_2,
   MOD_EVEX_0F38C6_REG_5,
@@ -1821,15 +1829,15 @@ enum
   EVEX_LEN_0F3816_P_2,
   EVEX_LEN_0F3819_P_2_W_0,
   EVEX_LEN_0F3819_P_2_W_1,
-  EVEX_LEN_0F381A_P_2_W_0,
-  EVEX_LEN_0F381A_P_2_W_1,
-  EVEX_LEN_0F381B_P_2_W_0,
-  EVEX_LEN_0F381B_P_2_W_1,
+  EVEX_LEN_0F381A_P_2_W_0_M_0,
+  EVEX_LEN_0F381A_P_2_W_1_M_0,
+  EVEX_LEN_0F381B_P_2_W_0_M_0,
+  EVEX_LEN_0F381B_P_2_W_1_M_0,
   EVEX_LEN_0F3836_P_2,
-  EVEX_LEN_0F385A_P_2_W_0,
-  EVEX_LEN_0F385A_P_2_W_1,
-  EVEX_LEN_0F385B_P_2_W_0,
-  EVEX_LEN_0F385B_P_2_W_1,
+  EVEX_LEN_0F385A_P_2_W_0_M_0,
+  EVEX_LEN_0F385A_P_2_W_1_M_0,
+  EVEX_LEN_0F385B_P_2_W_0_M_0,
+  EVEX_LEN_0F385B_P_2_W_1_M_0,
   EVEX_LEN_0F38C6_REG_1_PREFIX_2,
   EVEX_LEN_0F38C6_REG_2_PREFIX_2,
   EVEX_LEN_0F38C6_REG_5_PREFIX_2,