Add support for AVX512BW instructions and their AVX512VL versions.
[deliverable/binutils-gdb.git] / opcodes / i386-dis-evex.h
index 524e7c5c364bd470419b1e29f20786d90a40018f..ad6aab380eef97bf347656ee930732118e2e1590 100644 (file)
@@ -112,30 +112,30 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F5E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F5F) },
     /* 60 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F60) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F61) },
     { PREFIX_TABLE (PREFIX_EVEX_0F62) },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F63) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F64) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F65) },
     { PREFIX_TABLE (PREFIX_EVEX_0F66) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F67) },
     /* 68 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F68) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F69) },
     { PREFIX_TABLE (PREFIX_EVEX_0F6A) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F6B) },
     { PREFIX_TABLE (PREFIX_EVEX_0F6C) },
     { PREFIX_TABLE (PREFIX_EVEX_0F6D) },
     { PREFIX_TABLE (PREFIX_EVEX_0F6E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F6F) },
     /* 70 */
     { PREFIX_TABLE (PREFIX_EVEX_0F70) },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_0F71) },
     { REG_TABLE (REG_EVEX_0F72) },
     { REG_TABLE (REG_EVEX_0F73) },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F74) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F75) },
     { PREFIX_TABLE (PREFIX_EVEX_0F76) },
     { Bad_Opcode },
     /* 78 */
@@ -224,8 +224,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0FC2) },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FC4) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FC5) },
     { PREFIX_TABLE (PREFIX_EVEX_0FC6) },
     { Bad_Opcode },
     /* C8 */
@@ -239,67 +239,67 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     /* D0 */
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FD1) },
     { PREFIX_TABLE (PREFIX_EVEX_0FD2) },
     { PREFIX_TABLE (PREFIX_EVEX_0FD3) },
     { PREFIX_TABLE (PREFIX_EVEX_0FD4) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FD5) },
     { PREFIX_TABLE (PREFIX_EVEX_0FD6) },
     { Bad_Opcode },
     /* D8 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FD8) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FD9) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FDA) },
     { PREFIX_TABLE (PREFIX_EVEX_0FDB) },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FDC) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FDD) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FDE) },
     { PREFIX_TABLE (PREFIX_EVEX_0FDF) },
     /* E0 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE0) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE1) },
     { PREFIX_TABLE (PREFIX_EVEX_0FE2) },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE3) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE4) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE5) },
     { PREFIX_TABLE (PREFIX_EVEX_0FE6) },
     { PREFIX_TABLE (PREFIX_EVEX_0FE7) },
     /* E8 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE8) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FE9) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FEA) },
     { PREFIX_TABLE (PREFIX_EVEX_0FEB) },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FEC) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FED) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FEE) },
     { PREFIX_TABLE (PREFIX_EVEX_0FEF) },
     /* F0 */
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FF1) },
     { PREFIX_TABLE (PREFIX_EVEX_0FF2) },
     { PREFIX_TABLE (PREFIX_EVEX_0FF3) },
     { PREFIX_TABLE (PREFIX_EVEX_0FF4) },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FF5) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FF6) },
     { Bad_Opcode },
     /* F8 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FF8) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FF9) },
     { PREFIX_TABLE (PREFIX_EVEX_0FFA) },
     { PREFIX_TABLE (PREFIX_EVEX_0FFB) },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0FFC) },
+    { PREFIX_TABLE (PREFIX_EVEX_0FFD) },
     { PREFIX_TABLE (PREFIX_EVEX_0FFE) },
     { Bad_Opcode },
   },
   /* EVEX_0F38 */
   {
     /* 00 */
+    { PREFIX_TABLE (PREFIX_EVEX_0F3800) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3804) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -307,13 +307,13 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F380B) },
     { PREFIX_TABLE (PREFIX_EVEX_0F380C) },
     { PREFIX_TABLE (PREFIX_EVEX_0F380D) },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 10 */
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3810) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3811) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3812) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3813) },
@@ -326,30 +326,30 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F3819) },
     { PREFIX_TABLE (PREFIX_EVEX_0F381A) },
     { PREFIX_TABLE (PREFIX_EVEX_0F381B) },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F381C) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F381D) },
     { PREFIX_TABLE (PREFIX_EVEX_0F381E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F381F) },
     /* 20 */
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3820) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3821) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3822) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3823) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3824) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3825) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3826) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3827) },
     /* 28 */
     { PREFIX_TABLE (PREFIX_EVEX_0F3828) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3829) },
     { PREFIX_TABLE (PREFIX_EVEX_0F382A) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F382B) },
     { PREFIX_TABLE (PREFIX_EVEX_0F382C) },
     { PREFIX_TABLE (PREFIX_EVEX_0F382D) },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 30 */
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3830) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3831) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3832) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3833) },
@@ -358,13 +358,13 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F3836) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3837) },
     /* 38 */
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3838) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3839) },
     { PREFIX_TABLE (PREFIX_EVEX_0F383A) },
     { PREFIX_TABLE (PREFIX_EVEX_0F383B) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F383C) },
     { PREFIX_TABLE (PREFIX_EVEX_0F383D) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F383E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F383F) },
     /* 40 */
     { PREFIX_TABLE (PREFIX_EVEX_0F3840) },
@@ -409,7 +409,7 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F3864) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3865) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3866) },
     { Bad_Opcode },
     /* 68 */
     { Bad_Opcode },
@@ -426,16 +426,16 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3875) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3876) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3877) },
     /* 78 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3878) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3879) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F387A) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F387B) },
     { PREFIX_TABLE (PREFIX_EVEX_0F387C) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F387D) },
     { PREFIX_TABLE (PREFIX_EVEX_0F387E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F387F) },
     /* 80 */
@@ -453,7 +453,7 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F388A) },
     { PREFIX_TABLE (PREFIX_EVEX_0F388B) },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F388D) },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 90 */
@@ -602,14 +602,14 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A0F) },
     /* 10 */
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A14) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A15) },
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F3A17) },
     /* 18 */
@@ -622,7 +622,7 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F3A1E) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3A1F) },
     /* 20 */
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A20) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3A21) },
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F3A23) },
@@ -655,12 +655,12 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F3A3B) },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A3E) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A3F) },
     /* 40 */
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3A42) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3A43) },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -878,6 +878,16 @@ static const struct dis386 evex_table[][256] = {
 #endif /* NEED_OPCODE_TABLE */
 
 #ifdef NEED_REG_TABLE
+  /* REG_EVEX_0F71 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_2) },
+    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_4) },
+    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_6) },
+  },
   /* REG_EVEX_0F72 */
   {
     { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_0) },
@@ -893,10 +903,11 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_2) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_3) },
     { Bad_Opcode },
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_6) },
+    { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_7) },
   },
   /* REG_EVEX_0F38C6 */
   {
@@ -1085,24 +1096,78 @@ static const struct dis386 evex_table[][256] = {
     { VEX_W_TABLE (EVEX_W_0F5F_P_2) },
     { VEX_W_TABLE (EVEX_W_0F5F_P_3) },
   },
+  /* PREFIX_EVEX_0F60 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpunpcklbw",    { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F61 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpunpcklwd",    { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F62 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F62_P_2) },
   },
+  /* PREFIX_EVEX_0F63 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpacksswb",     { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F64 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpcmpgtb",      { XMask, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F65 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpcmpgtw",      { XMask, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F66 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F66_P_2) },
   },
+  /* PREFIX_EVEX_0F67 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpackuswb",     { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F68 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpunpckhbw",    { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F69 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpunpckhwd",    { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F6A */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F6A_P_2) },
   },
+  /* PREFIX_EVEX_0F6B */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F6B_P_2) },
+  },
   /* PREFIX_EVEX_0F6C */
   {
     { Bad_Opcode },
@@ -1126,12 +1191,32 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F6F_P_1) },
     { VEX_W_TABLE (EVEX_W_0F6F_P_2) },
+    { VEX_W_TABLE (EVEX_W_0F6F_P_3) },
   },
   /* PREFIX_EVEX_0F70 */
   {
     { Bad_Opcode },
-    { Bad_Opcode },
+    { "vpshufhw",      { XM, EXx, Ib } },
     { VEX_W_TABLE (EVEX_W_0F70_P_2) },
+    { "vpshuflw",      { XM, EXx, Ib } },
+  },
+  /* PREFIX_EVEX_0F71_REG_2 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsrlw",        { Vex, EXx, Ib } },
+  },
+  /* PREFIX_EVEX_0F71_REG_4 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsraw",        { Vex, EXx, Ib } },
+  },
+  /* PREFIX_EVEX_0F71_REG_6 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsllw",        { Vex, EXx, Ib } },
   },
   /* PREFIX_EVEX_0F72_REG_0 */
   {
@@ -1169,12 +1254,36 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F73_R_2_P_2) },
   },
+  /* PREFIX_EVEX_0F73_REG_3 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsrldq",       { Vex, EXx, Ib } },
+  },
   /* PREFIX_EVEX_0F73_REG_6 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F73_R_6_P_2) },
   },
+  /* PREFIX_EVEX_0F73_REG_7 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpslldq",       { Vex, EXx, Ib } },
+  },
+  /* PREFIX_EVEX_0F74 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpcmpeqb",      { XMask, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F75 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpcmpeqw",      { XMask, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F76 */
   {
     { Bad_Opcode },
@@ -1220,8 +1329,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F7F_P_1) },
     { VEX_W_TABLE (EVEX_W_0F7F_P_2) },
+    { VEX_W_TABLE (EVEX_W_0F7F_P_3) },
   },
-
   /* PREFIX_EVEX_0FC2 */
   {
     { VEX_W_TABLE (EVEX_W_0FC2_P_0) },
@@ -1229,12 +1338,30 @@ static const struct dis386 evex_table[][256] = {
     { VEX_W_TABLE (EVEX_W_0FC2_P_2) },
     { VEX_W_TABLE (EVEX_W_0FC2_P_3) },
   },
+  /* PREFIX_EVEX_0FC4 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpinsrw",       { XM, Vex128, Edw, Ib } },
+  },
+  /* PREFIX_EVEX_0FC5 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpextrw",       { Gdq, XS, Ib } },
+  },
   /* PREFIX_EVEX_0FC6 */
   {
     { VEX_W_TABLE (EVEX_W_0FC6_P_0) },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FC6_P_2) },
   },
+  /* PREFIX_EVEX_0FD1 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsrlw",        { XM, Vex, EXxmm } },
+  },
   /* PREFIX_EVEX_0FD2 */
   {
     { Bad_Opcode },
@@ -1253,30 +1380,102 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FD4_P_2) },
   },
+  /* PREFIX_EVEX_0FD5 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmullw",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FD6 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FD6_P_2) },
   },
+  /* PREFIX_EVEX_0FD8 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubusb",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FD9 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubusw",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FDA */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpminub",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FDB */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpand%LW",      { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0FDC */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddusb",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FDD */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddusw",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FDE */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaxub",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FDF */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpandn%LW",     { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0FE0 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpavgb",        { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FE1 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsraw",        { XM, Vex, EXxmm } },
+  },
   /* PREFIX_EVEX_0FE2 */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpsra%LW",      { XM, Vex, EXxmm } },
   },
+  /* PREFIX_EVEX_0FE3 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpavgw",        { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FE4 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmulhuw",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FE5 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmulhw",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FE6 */
   {
     { Bad_Opcode },
@@ -1290,18 +1489,60 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FE7_P_2) },
   },
+  /* PREFIX_EVEX_0FE8 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubsb",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FE9 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubsw",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FEA */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpminsw",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FEB */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpor%LW",       { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0FEC */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddsb",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FED */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddsw",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FEE */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaxsw",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FEF */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpxor%LW",      { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0FF1 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsllw",        { XM, Vex, EXxmm } },
+  },
   /* PREFIX_EVEX_0FF2 */
   {
     { Bad_Opcode },
@@ -1320,6 +1561,30 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FF4_P_2) },
   },
+  /* PREFIX_EVEX_0FF5 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaddwd",      { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FF6 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsadbw",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FF8 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubb",        { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FF9 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpsubw",        { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FFA */
   {
     { Bad_Opcode },
@@ -1332,13 +1597,42 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FFB_P_2) },
   },
+  /* PREFIX_EVEX_0FFC */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddb",        { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0FFD */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpaddw",        { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0FFE */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0FFE_P_2) },
   },
-
+  /* PREFIX_EVEX_0F3800 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpshufb",       { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F3804 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaddubsw",    { XM, Vex, EXx } },
+  },
+  /* PREFIX_EVEX_0F380B */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmulhrsw",     { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F380C */
   {
     { Bad_Opcode },
@@ -1351,15 +1645,23 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F380D_P_2) },
   },
+  /* PREFIX_EVEX_0F3810 */
+  {
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3810_P_1) },
+    { VEX_W_TABLE (EVEX_W_0F3810_P_2) },
+  },
   /* PREFIX_EVEX_0F3811 */
   {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F3811_P_1) },
+    { VEX_W_TABLE (EVEX_W_0F3811_P_2) },
   },
   /* PREFIX_EVEX_0F3812 */
   {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F3812_P_1) },
+    { VEX_W_TABLE (EVEX_W_0F3812_P_2) },
   },
   /* PREFIX_EVEX_0F3813 */
   {
@@ -1409,6 +1711,18 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F381B_P_2) },
   },
+  /* PREFIX_EVEX_0F381C */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpabsb",        { XM, EXx } },
+  },
+  /* PREFIX_EVEX_0F381D */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpabsw",        { XM, EXx } },
+  },
   /* PREFIX_EVEX_0F381E */
   {
     { Bad_Opcode },
@@ -1421,6 +1735,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F381F_P_2) },
   },
+  /* PREFIX_EVEX_0F3820 */
+  {
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3820_P_1) },
+    { "vpmovsxbw",     { XM, EXxmmq } },
+  },
   /* PREFIX_EVEX_0F3821 */
   {
     { Bad_Opcode },
@@ -1451,6 +1771,12 @@ static const struct dis386 evex_table[][256] = {
     { VEX_W_TABLE (EVEX_W_0F3825_P_1) },
     { VEX_W_TABLE (EVEX_W_0F3825_P_2) },
   },
+  /* PREFIX_EVEX_0F3826 */
+  {
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3826_P_1) },
+    { VEX_W_TABLE (EVEX_W_0F3826_P_2) },
+  },
   /* PREFIX_EVEX_0F3827 */
   {
     { Bad_Opcode },
@@ -1460,13 +1786,13 @@ static const struct dis386 evex_table[][256] = {
   /* PREFIX_EVEX_0F3828 */
   {
     { Bad_Opcode },
-    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3828_P_1) },
     { VEX_W_TABLE (EVEX_W_0F3828_P_2) },
   },
   /* PREFIX_EVEX_0F3829 */
   {
     { Bad_Opcode },
-    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3829_P_1) },
     { VEX_W_TABLE (EVEX_W_0F3829_P_2) },
   },
   /* PREFIX_EVEX_0F382A */
@@ -1475,6 +1801,12 @@ static const struct dis386 evex_table[][256] = {
     { VEX_W_TABLE (EVEX_W_0F382A_P_1) },
     { VEX_W_TABLE (EVEX_W_0F382A_P_2) },
   },
+  /* PREFIX_EVEX_0F382B */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F382B_P_2) },
+  },
   /* PREFIX_EVEX_0F382C */
   {
     { Bad_Opcode },
@@ -1487,6 +1819,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vscalefs%XW",   { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR } },
   },
+  /* PREFIX_EVEX_0F3830 */
+  {
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3830_P_1) },
+    { "vpmovzxbw",     { XM, EXxmmq } },
+  },
   /* PREFIX_EVEX_0F3831 */
   {
     { Bad_Opcode },
@@ -1529,6 +1867,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F3837_P_2) },
   },
+  /* PREFIX_EVEX_0F3838 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpminsb",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F3839 */
   {
     { Bad_Opcode },
@@ -1539,6 +1883,7 @@ static const struct dis386 evex_table[][256] = {
   {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F383A_P_1) },
+    { "vpminuw",       { XM, Vex, EXx } },
   },
   /* PREFIX_EVEX_0F383B */
   {
@@ -1546,12 +1891,24 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpminu%LW",     { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0F383C */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaxsb",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F383D */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpmaxs%LW",     { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0F383E */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpmaxuw",       { XM, Vex, EXx } },
+  },
   /* PREFIX_EVEX_0F383F */
   {
     { Bad_Opcode },
@@ -1660,6 +2017,18 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vblendmp%XW",   { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0F3866 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3866_P_2) },
+  },
+  /* PREFIX_EVEX_0F3875 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3875_P_2) },
+  },
   /* PREFIX_EVEX_0F3876 */
   {
     { Bad_Opcode },
@@ -1672,12 +2041,42 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpermi2p%XW",   { XM, Vex, EXx } },
   },
+  /* PREFIX_EVEX_0F3878 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3878_P_2) },
+  },
+  /* PREFIX_EVEX_0F3879 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3879_P_2) },
+  },
+  /* PREFIX_EVEX_0F387A */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F387A_P_2) },
+  },
+  /* PREFIX_EVEX_0F387B */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F387B_P_2) },
+  },
   /* PREFIX_EVEX_0F387C */
   {
     { Bad_Opcode },
     { Bad_Opcode },
     { "vpbroadcast%LW",        { XM, Rdq } },
   },
+  /* PREFIX_EVEX_0F387D */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F387D_P_2) },
+  },
   /* PREFIX_EVEX_0F387E */
   {
     { Bad_Opcode },
@@ -1714,6 +2113,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpcompress%LW", { EXEvexXGscat, XM } },
   },
+  /* PREFIX_EVEX_0F388D */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F388D_P_2) },
+  },
   /* PREFIX_EVEX_0F3890 */
   {
     { Bad_Opcode },
@@ -2080,6 +2485,24 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F3A0B_P_2) },
   },
+  /* PREFIX_EVEX_0F3A0F */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpalignr",      { XM, Vex, EXx, Ib } },
+  },
+  /* PREFIX_EVEX_0F3A14 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpextrb",       { Edqb, XM, Ib } },
+  },
+  /* PREFIX_EVEX_0F3A15 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpextrw",       { EdqwS, XM, Ib } },
+  },
   /* PREFIX_EVEX_0F3A17 */
   {
     { Bad_Opcode },
@@ -2128,6 +2551,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpcmp%LW",      { XMask, Vex, EXx, VPCMP } },
   },
+  /* PREFIX_EVEX_0F3A20 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpinsrb",       { XM, Vex128, Edb, Ib } },
+  },
   /* PREFIX_EVEX_0F3A21 */
   {
     { Bad_Opcode },
@@ -2182,6 +2611,24 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F3A3B_P_2) },
   },
+  /* PREFIX_EVEX_0F3A3E */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3A3E_P_2) },
+  },
+  /* PREFIX_EVEX_0F3A3F */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3A3F_P_2) },
+  },
+  /* PREFIX_EVEX_0F3A42 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3A42_P_2) },
+  },
   /* PREFIX_EVEX_0F3A43 */
   {
     { Bad_Opcode },
@@ -2555,6 +3002,10 @@ static const struct dis386 evex_table[][256] = {
   {
     { "vpunpckhdq",    { XM, Vex, EXx } },
   },
+  /* EVEX_W_0F6B_P_2 */
+  {
+    { "vpackssdw",     { XM, Vex, EXx } },
+  },
   /* EVEX_W_0F6C_P_2 */
   {
     { Bad_Opcode },
@@ -2580,6 +3031,11 @@ static const struct dis386 evex_table[][256] = {
     { "vmovdqa32",     { XM, EXEvexXNoBcst } },
     { "vmovdqa64",     { XM, EXEvexXNoBcst } },
   },
+  /* EVEX_W_0F6F_P_3 */
+  {
+    { "vmovdqu8",      { XM, EXx } },
+    { "vmovdqu16",     { XM, EXx } },
+  },
   /* EVEX_W_0F70_P_2 */
   {
     { "vpshufd",       { XM, EXx, Ib } },
@@ -2654,6 +3110,11 @@ static const struct dis386 evex_table[][256] = {
     { "vmovdqa32",     { EXxS, XM } },
     { "vmovdqa64",     { EXxS, XM } },
   },
+  /* EVEX_W_0F7F_P_3 */
+  {
+    { "vmovdqu8",      { EXxS, XM } },
+    { "vmovdqu16",     { EXxS, XM } },
+  },
   /* EVEX_W_0FC2_P_0 */
   {
     { "vcmpps",        { XMask, Vex, EXx, EXxEVexS, VCMP } },
@@ -2745,7 +3206,6 @@ static const struct dis386 evex_table[][256] = {
   {
     { "vpaddd",        { XM, Vex, EXx } },
   },
-
   /* EVEX_W_0F380C_P_2 */
   {
     { "vpermilps",     { XM, Vex, EXx } },
@@ -2755,14 +3215,33 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpermilpd",     { XM, Vex, EXx } },
   },
+  /* EVEX_W_0F3810_P_1 */
+  {
+    { "vpmovuswb",     { EXxmmq, XM } },
+  },
+  /* EVEX_W_0F3810_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpsrlvw",       { XM, Vex, EXx } },
+  },
   /* EVEX_W_0F3811_P_1 */
   {
     { "vpmovusdb",     { EXxmmqd, XM } },
   },
+  /* EVEX_W_0F3811_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpsravw",       { XM, Vex, EXx } },
+  },
   /* EVEX_W_0F3812_P_1 */
   {
     { "vpmovusqb",     { EXxmmdw, XM } },
   },
+  /* EVEX_W_0F3812_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpsllvw",       { XM, Vex, EXx } },
+  },
   /* EVEX_W_0F3813_P_1 */
   {
     { "vpmovusdw",     { EXxmmq, XM } },
@@ -2806,6 +3285,10 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vpabsq",        { XM, EXx } },
   },
+  /* EVEX_W_0F3820_P_1 */
+  {
+    { "vpmovswb",      { EXxmmq, XM } },
+  },
   /* EVEX_W_0F3821_P_1 */
   {
     { "vpmovsdb",      { EXxmmqd, XM } },
@@ -2830,11 +3313,31 @@ static const struct dis386 evex_table[][256] = {
   {
     { "vpmovsxdq",     { XM, EXxmmq } },
   },
+  /* EVEX_W_0F3826_P_1 */
+  {
+    { "vptestnmb",     { XMask, Vex, EXx } },
+    { "vptestnmw",     { XMask, Vex, EXx } },
+  },
+  /* EVEX_W_0F3826_P_2 */
+  {
+    { "vptestmb",      { XMask, Vex, EXx } },
+    { "vptestmw",      { XMask, Vex, EXx } },
+  },
+  /* EVEX_W_0F3828_P_1 */
+  {
+    { "vpmovm2b",      { XM, MaskR } },
+    { "vpmovm2w",      { XM, MaskR } },
+  },
   /* EVEX_W_0F3828_P_2 */
   {
     { Bad_Opcode },
     { "vpmuldq",       { XM, Vex, EXx } },
   },
+  /* EVEX_W_0F3829_P_1 */
+  {
+    { "vpmovb2m",      { XMask, EXx } },
+    { "vpmovw2m",      { XMask, EXx } },
+  },
   /* EVEX_W_0F3829_P_2 */
   {
     { Bad_Opcode },
@@ -2849,6 +3352,14 @@ static const struct dis386 evex_table[][256] = {
   {
     { "vmovntdqa",     { XM, EXEvexXNoBcst } },
   },
+  /* EVEX_W_0F382B_P_2 */
+  {
+    { "vpackusdw",     { XM, Vex, EXx } },
+  },
+  /* EVEX_W_0F3830_P_1 */
+  {
+    { "vpmovwb",       { EXxmmq, XM } },
+  },
   /* EVEX_W_0F3831_P_1 */
   {
     { "vpmovdb",       { EXxmmqd, XM } },
@@ -2904,6 +3415,42 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vbroadcasti64x4",       { XM, EXymm } },
   },
+  /* EVEX_W_0F3866_P_2 */
+  {
+    { "vpblendmb",     { XM, Vex, EXx } },
+    { "vpblendmw",     { XM, Vex, EXx } },
+  },
+  /* EVEX_W_0F3875_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpermi2w",      { XM, Vex, EXx } },
+  },
+  /* EVEX_W_0F3878_P_2 */
+  {
+    { "vpbroadcastb",  { XM, EXxmm_mb } },
+  },
+  /* EVEX_W_0F3879_P_2 */
+  {
+    { "vpbroadcastw",  { XM, EXxmm_mw } },
+  },
+  /* EVEX_W_0F387A_P_2 */
+  {
+    { "vpbroadcastb",  { XM, Rd } },
+  },
+  /* EVEX_W_0F387B_P_2 */
+  {
+    { "vpbroadcastw",  { XM, Rd } },
+  },
+  /* EVEX_W_0F387D_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpermt2w",      { XM, Vex, EXx } },
+  },
+  /* EVEX_W_0F388D_P_2 */
+  {
+    { Bad_Opcode },
+    { "vpermw",        { XM, Vex, EXx } },
+  },
   /* EVEX_W_0F3891_P_2 */
   {
     { "vpgatherqd",    { XMxmmq, MVexVSIBQDWpX } },
@@ -2944,7 +3491,6 @@ static const struct dis386 evex_table[][256] = {
     { "vscatterpf1qps",  { MVexVSIBDQWpX } },
     { "vscatterpf1qpd",  { MVexVSIBQWpX } },
   },
-
   /* EVEX_W_0F3A00_P_2 */
   {
     { Bad_Opcode },
@@ -3031,6 +3577,20 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { "vextracti64x4", { EXxmmq, XM, Ib } },
   },
+  /* EVEX_W_0F3A3E_P_2 */
+  {
+    { "vpcmpub",       { XMask, Vex, EXx, Ib } },
+    { "vpcmpuw",       { XMask, Vex, EXx, Ib } },
+  },
+  /* EVEX_W_0F3A3F_P_2 */
+  {
+    { "vpcmpb",        { XMask, Vex, EXx, Ib } },
+    { "vpcmpw",        { XMask, Vex, EXx, Ib } },
+  },
+  /* EVEX_W_0F3A42_P_2 */
+  {
+    { "vdbpsadbw",     { XM, Vex, EXx, Ib } },
+  },
   /* EVEX_W_0F3A43_P_2 */
   {
     { "vshufi32x4",    { XM, Vex, EXx, Ib } },
This page took 0.036925 seconds and 4 git commands to generate.