disas/i386.c: disassemble pclmulqdq instruction
authorAurelien Jarno <aurelien@aurel32.net>
Sun, 31 Mar 2013 10:58:30 +0000 (12:58 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Sat, 13 Apr 2013 11:51:56 +0000 (13:51 +0200)
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
disas/i386.c

index 73cc06f1c37e583b7e620a19cfb13ab26260de05..c52efbc647564e238394261759a6fc831b782d09 100644 (file)
@@ -664,6 +664,7 @@ fetch_data(struct disassemble_info *info, bfd_byte *addr)
 #define PREGRP95  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 95 } }
 #define PREGRP96  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 96 } }
 #define PREGRP97  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } }
+#define PREGRP98  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 98 } }
 
 
 #define X86_64_0  NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } }
@@ -1503,7 +1504,7 @@ static const unsigned char threebyte_0x3a_uses_DATA_prefix[256] = {
   /* 10 */ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* 1f */
   /* 20 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */
   /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */
-  /* 40 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */
+  /* 40 */ 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, /* 4f */
   /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */
   /* 60 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */
   /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */
@@ -2710,6 +2711,14 @@ static const struct dis386 prefix_user_table[][4] = {
     { "punpckldq",{ MX, EMq } },
     { "(bad)", { XX } },
   },
+
+  /* PREGRP98 */
+  {
+    { "(bad)", { XX } },
+    { "(bad)", { XX } },
+    { "pclmulqdq", { XM, EXx, Ib } },
+    { "(bad)", { XX } },
+  },
 };
 
 static const struct dis386 x86_64_table[][2] = {
@@ -3102,7 +3111,7 @@ static const struct dis386 three_byte_table[][256] = {
     { PREGRP84 },
     { PREGRP85 },
     { "(bad)", { XX } },
-    { "(bad)", { XX } },
+    { PREGRP98 },
     { "(bad)", { XX } },
     { "(bad)", { XX } },
     { "(bad)", { XX } },