]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - opcodes/i386-dis-evex-len.h
x86: AVX512 VPERM{D,Q,PS,PD} insns need to honor EVEX.L'L
[thirdparty/binutils-gdb.git] / opcodes / i386-dis-evex-len.h
index 51ce98f4a90fed41f81d9129d47f1a5c98455560..2941ab1dcbb7b6c1ea7fa18d59cb1694469bd980 100644 (file)
@@ -29,6 +29,13 @@ static const struct dis386 evex_len_table[][3] = {
     { VEX_W_TABLE (EVEX_W_0FD6_P_2) },
   },
 
+  /* EVEX_LEN_0F3816_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpermp%XW",     { XM, Vex, EXx }, 0 },
+    { "vpermp%XW",     { XM, Vex, EXx }, 0 },
+  },
+
   /* EVEX_LEN_0F3819_P_2_W_0 */
   {
     { Bad_Opcode },
@@ -71,6 +78,13 @@ static const struct dis386 evex_len_table[][3] = {
     { "vbroadcastf64x4",       { XM, EXymm }, 0 },
   },
 
+  /* EVEX_LEN_0F3836_P_2 */
+  {
+    { Bad_Opcode },
+    { "vperm%LW",      { XM, Vex, EXx }, 0 },
+    { "vperm%LW",      { XM, Vex, EXx }, 0 },
+  },
+
   /* EVEX_LEN_0F385A_P_2_W_0 */
   {
     { Bad_Opcode },
@@ -183,6 +197,20 @@ static const struct dis386 evex_len_table[][3] = {
     { "vscatterpf1qpd",  { MVexVSIBQWpX }, 0 },
   },
 
+  /* EVEX_LEN_0F3A00_P_2_W_1 */
+  {
+    { Bad_Opcode },
+    { "vpermq",        { XM, EXx, Ib }, 0 },
+    { "vpermq",        { XM, EXx, Ib }, 0 },
+  },
+
+  /* EVEX_LEN_0F3A01_P_2_W_1 */
+  {
+    { Bad_Opcode },
+    { "vpermpd",       { XM, EXx, Ib }, 0 },
+    { "vpermpd",       { XM, EXx, Ib }, 0 },
+  },
+
   /* EVEX_LEN_0F3A14_P_2 */
   {
     { "vpextrb",       { Edqb, XM, Ib }, 0 },