* src/gdb/target.h: Remove all tests for already defined
[deliverable/binutils-gdb.git] / opcodes / i386-dis.c
index 434ecfca6bf3b59a75b5de11fc2e04fa18d8c71a..9e980e75381451493109c316dce7c871a2e413df 100644 (file)
@@ -1003,7 +1003,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 #define PREFIX_VEX_3A40                (PREFIX_VEX_3A22 + 1)
 #define PREFIX_VEX_3A41                (PREFIX_VEX_3A40 + 1)
 #define PREFIX_VEX_3A42                (PREFIX_VEX_3A41 + 1)
-#define PREFIX_VEX_3A4A                (PREFIX_VEX_3A42 + 1)
+#define PREFIX_VEX_3A44                (PREFIX_VEX_3A42 + 1)
+#define PREFIX_VEX_3A4A                (PREFIX_VEX_3A44 + 1)
 #define PREFIX_VEX_3A4B                (PREFIX_VEX_3A4A + 1)
 #define PREFIX_VEX_3A4C                (PREFIX_VEX_3A4B + 1)
 #define PREFIX_VEX_3A60                (PREFIX_VEX_3A4C + 1)
@@ -1239,7 +1240,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 #define VEX_LEN_3A22_P_2       (VEX_LEN_3A21_P_2 + 1)
 #define VEX_LEN_3A41_P_2       (VEX_LEN_3A22_P_2 + 1)
 #define VEX_LEN_3A42_P_2       (VEX_LEN_3A41_P_2 + 1)
-#define VEX_LEN_3A4C_P_2       (VEX_LEN_3A42_P_2 + 1)
+#define VEX_LEN_3A44_P_2       (VEX_LEN_3A42_P_2 + 1)
+#define VEX_LEN_3A4C_P_2       (VEX_LEN_3A44_P_2 + 1)
 #define VEX_LEN_3A60_P_2       (VEX_LEN_3A4C_P_2 + 1)
 #define VEX_LEN_3A61_P_2       (VEX_LEN_3A60_P_2 + 1)
 #define VEX_LEN_3A62_P_2       (VEX_LEN_3A61_P_2 + 1)
@@ -5024,6 +5026,14 @@ static const struct dis386 prefix_table[][4] = {
     { "(bad)", { XX } },
   },
 
+  /* PREFIX_VEX_3A44 */
+  {
+    { "(bad)", { XX } },
+    { "(bad)", { XX } },
+    { VEX_LEN_TABLE (VEX_LEN_3A44_P_2) },
+    { "(bad)", { XX } },
+  },
+
   /* PREFIX_VEX_3A4A */
   {
     { "(bad)", { XX } },
@@ -7670,7 +7680,7 @@ static const struct dis386 vex_table[][256] = {
     { PREFIX_TABLE (PREFIX_VEX_3A41) },
     { PREFIX_TABLE (PREFIX_VEX_3A42) },
     { "(bad)",         { XX } },
-    { "(bad)",         { XX } },
+    { PREFIX_TABLE (PREFIX_VEX_3A44) },
     { "(bad)",         { XX } },
     { "(bad)",         { XX } },
     { "(bad)",         { XX } },
@@ -9007,6 +9017,12 @@ static const struct dis386 vex_len_table[][2] = {
     { "(bad)",         { XX } },
   },
 
+  /* VEX_LEN_3A44_P_2 */
+  {
+    { "vpclmulqdq",    { XM, Vex128, EXx, PCLMUL } },
+    { "(bad)",         { XX } },
+  },
+
   /* VEX_LEN_3A4C_P_2 */
   {
     { "vpblendvb",     { XM, Vex128, EXx, XMVexI4 } },
@@ -10028,8 +10044,7 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
       break;
 
     default:
-      oappend (INTERNAL_DISASSEMBLER_ERROR);
-      return NULL;
+      abort ();
     }
 
   if (dp->name != NULL)
@@ -12660,11 +12675,17 @@ static void
 OP_EX (int bytemode, int sizeflag)
 {
   int add;
+
+  /* Skip mod/rm byte.  */
+  MODRM_CHECK;
+  codep++;
+
   if (modrm.mod != 3)
     {
-      OP_E (bytemode, sizeflag);
+      OP_E_memory (bytemode, sizeflag, 0);
       return;
     }
+
   USED_REX (REX_B);
   if (rex & REX_B)
     add = 8;
@@ -12677,9 +12698,6 @@ OP_EX (int bytemode, int sizeflag)
          || bytemode == q_swap_mode))
     swap_operand ();
 
-  /* Skip mod/rm byte.  */
-  MODRM_CHECK;
-  codep++;
   if (need_vex
       && bytemode != xmm_mode
       && bytemode != xmmq_mode)
This page took 0.025594 seconds and 4 git commands to generate.