aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index b3367d9..1ded045 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1204,9 +1204,11 @@ enum
PREFIX_EVEX_0F3838,
PREFIX_EVEX_0F3839,
PREFIX_EVEX_0F383A,
+ PREFIX_EVEX_0F384A_X86_64_W_0_L_2,
PREFIX_EVEX_0F3852,
PREFIX_EVEX_0F3853,
PREFIX_EVEX_0F3868,
+ PREFIX_EVEX_0F386D_X86_64_W_0_L_2,
PREFIX_EVEX_0F3872,
PREFIX_EVEX_0F3874,
PREFIX_EVEX_0F389A,
@@ -1214,6 +1216,7 @@ enum
PREFIX_EVEX_0F38AA,
PREFIX_EVEX_0F38AB,
+ PREFIX_EVEX_0F3A07_X86_64_W_0_L_2,
PREFIX_EVEX_0F3A08,
PREFIX_EVEX_0F3A0A,
PREFIX_EVEX_0F3A26,
@@ -1225,6 +1228,7 @@ enum
PREFIX_EVEX_0F3A57,
PREFIX_EVEX_0F3A66,
PREFIX_EVEX_0F3A67,
+ PREFIX_EVEX_0F3A77_X86_64_W_0_L_2,
PREFIX_EVEX_0F3AC2,
PREFIX_EVEX_MAP4_4x,
@@ -1374,6 +1378,9 @@ enum
X86_64_VEX_MAP7_F8_L_0_W_0_R_0,
X86_64_EVEX_0F384A,
+ X86_64_EVEX_0F386D,
+ X86_64_EVEX_0F3A07,
+ X86_64_EVEX_0F3A77,
X86_64_EVEX_MAP5_6F,
};
@@ -1573,10 +1580,12 @@ enum
EVEX_LEN_0F384A_X86_64_W_0,
EVEX_LEN_0F385A,
EVEX_LEN_0F385B,
+ EVEX_LEN_0F386D_X86_64_W_0,
EVEX_LEN_0F38C6,
EVEX_LEN_0F38C7,
EVEX_LEN_0F3A00,
EVEX_LEN_0F3A01,
+ EVEX_LEN_0F3A07_X86_64_W_0,
EVEX_LEN_0F3A18,
EVEX_LEN_0F3A19,
EVEX_LEN_0F3A1A,
@@ -1587,6 +1596,7 @@ enum
EVEX_LEN_0F3A3A,
EVEX_LEN_0F3A3B,
EVEX_LEN_0F3A43,
+ EVEX_LEN_0F3A77_X86_64_W_0,
EVEX_LEN_MAP5_6E,
EVEX_LEN_MAP5_7E,
@@ -1806,12 +1816,14 @@ enum
EVEX_W_0F3859,
EVEX_W_0F385A_L_n,
EVEX_W_0F385B_L_2,
+ EVEX_W_0F386D_X86_64,
EVEX_W_0F3870,
EVEX_W_0F3872_P_2,
EVEX_W_0F387A,
EVEX_W_0F387B,
EVEX_W_0F3883,
+ EVEX_W_0F3A07_X86_64,
EVEX_W_0F3A18_L_n,
EVEX_W_0F3A19_L_n,
EVEX_W_0F3A1A_L_2,
@@ -1826,6 +1838,7 @@ enum
EVEX_W_0F3A43_L_n,
EVEX_W_0F3A70,
EVEX_W_0F3A72,
+ EVEX_W_0F3A77_X86_64,
EVEX_W_MAP4_8F_R_0,
EVEX_W_MAP4_F8_P1_M_1,
@@ -14034,6 +14047,25 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
}
return true;
+
+ case v_mode:
+ case dq_mode:
+ if (ins->rex & REX_W)
+ oappend_register (ins, att_names64[reg]);
+ else if (bytemode == v_mode
+ && !(sizeflag & DFLAG))
+ oappend_register (ins, att_names16[reg]);
+ else
+ oappend_register (ins, att_names32[reg]);
+ return true;
+
+ case b_mode:
+ oappend_register (ins, att_names8rex[reg]);
+ return true;
+
+ case q_mode:
+ oappend_register (ins, att_names64[reg]);
+ return true;
}
switch (ins->vex.length)
@@ -14045,22 +14077,6 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
names = att_names_xmm;
ins->evex_used |= EVEX_len_used;
break;
- case v_mode:
- case dq_mode:
- if (ins->rex & REX_W)
- names = att_names64;
- else if (bytemode == v_mode
- && !(sizeflag & DFLAG))
- names = att_names16;
- else
- names = att_names32;
- break;
- case b_mode:
- names = att_names8rex;
- break;
- case q_mode:
- names = att_names64;
- break;
case mask_bd_mode:
case mask_mode:
if (reg > 0x7)