x86-64: bndmk, bndldx, and bndstx don't allow RIP-relative addressing
[binutils-gdb.git] / opcodes / i386-dis-evex.h
index 467a2d3b0de776c834460cdff1707827fa73b4d4..8b8257893401b0f7155b309d13c8fbcb18097d51 100644 (file)
@@ -389,7 +389,7 @@ static const struct dis386 evex_table[][256] = {
     { PREFIX_TABLE (PREFIX_EVEX_0F3851) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3852) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3853) },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F3854) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3855) },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -455,7 +455,7 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_0F388D) },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { PREFIX_TABLE (PREFIX_EVEX_0F388F) },
     /* 90 */
     { PREFIX_TABLE (PREFIX_EVEX_0F3890) },
     { PREFIX_TABLE (PREFIX_EVEX_0F3891) },
@@ -2031,6 +2031,12 @@ static const struct dis386 evex_table[][256] = {
     { "vpdpwssds",     { XM, Vex, EXx }, 0 },
     { "vp4dpwssds",    { XM, Vex, EXxmm }, 0 },
   },
+  /* PREFIX_EVEX_0F3854 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { VEX_W_TABLE (EVEX_W_0F3854_P_2) },
+  },
   /* PREFIX_EVEX_0F3855 */
   {
     { Bad_Opcode },
@@ -2217,6 +2223,12 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { VEX_W_TABLE (EVEX_W_0F388D_P_2) },
   },
+  /* PREFIX_EVEX_0F388F */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "vpshufbitqmb",  { XMask, Vex, EXx }, 0 },
+  },
   /* PREFIX_EVEX_0F3890 */
   {
     { Bad_Opcode },
@@ -3033,13 +3045,13 @@ static const struct dis386 evex_table[][256] = {
   },
   /* EVEX_W_0F2A_P_1 */
   {
-    { "vcvtsi2ss",     { XMScalar, VexScalar, EXxEVexR, Ed }, 0 },
-    { "vcvtsi2ss",     { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
+    { "vcvtsi2ss%LQ",  { XMScalar, VexScalar, EXxEVexR, Ed }, 0 },
+    { "vcvtsi2ss%LQ",  { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
   },
   /* EVEX_W_0F2A_P_3 */
   {
-    { "vcvtsi2sd",     { XMScalar, VexScalar, Ed }, 0 },
-    { "vcvtsi2sd",     { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
+    { "vcvtsi2sd%LQ",  { XMScalar, VexScalar, Ed }, 0 },
+    { "vcvtsi2sd%LQ",  { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
   },
   /* EVEX_W_0F2B_P_0 */
   {
@@ -3370,8 +3382,8 @@ static const struct dis386 evex_table[][256] = {
   },
   /* EVEX_W_0F7B_P_1 */
   {
-    { "vcvtusi2ss",    { XMScalar, VexScalar, EXxEVexR, Ed }, 0 },
-    { "vcvtusi2ss",    { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
+    { "vcvtusi2ss%LQ", { XMScalar, VexScalar, EXxEVexR, Ed }, 0 },
+    { "vcvtusi2ss%LQ", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
   },
   /* EVEX_W_0F7B_P_2 */
   {
@@ -3380,8 +3392,8 @@ static const struct dis386 evex_table[][256] = {
   },
   /* EVEX_W_0F7B_P_3 */
   {
-    { "vcvtusi2sd",    { XMScalar, VexScalar, Ed }, 0 },
-    { "vcvtusi2sd",    { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
+    { "vcvtusi2sd%LQ", { XMScalar, VexScalar, Ed }, 0 },
+    { "vcvtusi2sd%LQ", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 },
   },
   /* EVEX_W_0F7E_P_1 */
   {
@@ -3703,6 +3715,11 @@ static const struct dis386 evex_table[][256] = {
     { "vpmulld",       { XM, Vex, EXx }, 0 },
     { "vpmullq",       { XM, Vex, EXx }, 0 },
   },
+  /* EVEX_W_0F3854_P_2 */
+  {
+    { "vpopcntb",      { XM, EXx }, 0 },
+    { "vpopcntw",      { XM, EXx }, 0 },
+  },
   /* EVEX_W_0F3855_P_2 */
   {
     { "vpopcntd",      { XM, EXx }, 0 },
@@ -3940,13 +3957,13 @@ static const struct dis386 evex_table[][256] = {
   },
   /* EVEX_W_0F3A3E_P_2 */
   {
-    { "vpcmpub",       { XMask, Vex, EXx, Ib }, 0 },
-    { "vpcmpuw",       { XMask, Vex, EXx, Ib }, 0 },
+    { "vpcmpub",       { XMask, Vex, EXx, VPCMP }, 0 },
+    { "vpcmpuw",       { XMask, Vex, EXx, VPCMP }, 0 },
   },
   /* EVEX_W_0F3A3F_P_2 */
   {
-    { "vpcmpb",        { XMask, Vex, EXx, Ib }, 0 },
-    { "vpcmpw",        { XMask, Vex, EXx, Ib }, 0 },
+    { "vpcmpb",        { XMask, Vex, EXx, VPCMP }, 0 },
+    { "vpcmpw",        { XMask, Vex, EXx, VPCMP }, 0 },
   },
   /* EVEX_W_0F3A42_P_2 */
   {