#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)
#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)
{ "(bad)", { XX } },
},
+ /* PREFIX_VEX_3A44 */
+ {
+ { "(bad)", { XX } },
+ { "(bad)", { XX } },
+ { VEX_LEN_TABLE (VEX_LEN_3A44_P_2) },
+ { "(bad)", { XX } },
+ },
+
/* PREFIX_VEX_3A4A */
{
{ "(bad)", { XX } },
{ 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 } },
{ "(bad)", { XX } },
},
+ /* VEX_LEN_3A44_P_2 */
+ {
+ { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } },
+ { "(bad)", { XX } },
+ },
+
/* VEX_LEN_3A4C_P_2 */
{
{ "vpblendvb", { XM, Vex128, EXx, XMVexI4 } },
break;
default:
- oappend (INTERNAL_DISASSEMBLER_ERROR);
- return NULL;
+ abort ();
}
if (dp->name != NULL)
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;
|| bytemode == q_swap_mode))
swap_operand ();
- /* Skip mod/rm byte. */
- MODRM_CHECK;
- codep++;
if (need_vex
&& bytemode != xmm_mode
&& bytemode != xmmq_mode)