aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex-mod.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-07-14 10:33:40 +0200
committerJan Beulich <jbeulich@suse.com>2020-07-14 10:33:40 +0200
commit7531c61332dbd9061b09312e44b62523547e8225 (patch)
treeb6263d54a1222a908ece3bd2612cd1fbf5dea945 /opcodes/i386-dis-evex-mod.h
parent17d3c7eccd41c5053c0b567eb67fe59808cc748a (diff)
downloadfsf-binutils-gdb-7531c61332dbd9061b09312e44b62523547e8225.zip
fsf-binutils-gdb-7531c61332dbd9061b09312e44b62523547e8225.tar.gz
fsf-binutils-gdb-7531c61332dbd9061b09312e44b62523547e8225.tar.bz2
x86: simplify decode of opcodes valid with (embedded) 66 prefix only
The only valid (embedded or explicit) prefix being the data size one (which is a fairly common pattern), avoid going through prefix_table[]. Instead extend the "required prefix" logic to also handle PREFIX_DATA alone in a table entry, now used to identify this case. This requires moving the (adjusted) ->prefix_requirement logic ahead of the printing of stray prefixes, as the latter needs to observe the new setting of PREFIX_DATA in used_prefixes. Also add PREFIX_OPCODE on related entries when previously there was mistakenly no decode step through prefix_table[].
Diffstat (limited to 'opcodes/i386-dis-evex-mod.h')
-rw-r--r--opcodes/i386-dis-evex-mod.h48
1 files changed, 24 insertions, 24 deletions
diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h
index 0c81822..acb497d 100644
--- a/opcodes/i386-dis-evex-mod.h
+++ b/opcodes/i386-dis-evex-mod.h
@@ -28,67 +28,67 @@
/* MOD_EVEX_0F2B */
{ "vmovntpX", { EXx, XM }, PREFIX_OPCODE },
},
- /* MOD_EVEX_0F381A_P_2_W_0 */
+ /* MOD_EVEX_0F381A_W_0 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_0_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F381A_W_0_M_0) },
},
- /* MOD_EVEX_0F381A_P_2_W_1 */
+ /* MOD_EVEX_0F381A_W_1 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_1_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F381A_W_1_M_0) },
},
- /* MOD_EVEX_0F381B_P_2_W_0 */
+ /* MOD_EVEX_0F381B_W_0 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_0_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F381B_W_0_M_0) },
},
- /* MOD_EVEX_0F381B_P_2_W_1 */
+ /* MOD_EVEX_0F381B_W_1 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_1_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F381B_W_1_M_0) },
},
- /* MOD_EVEX_0F385A_P_2_W_0 */
+ /* MOD_EVEX_0F385A_W_0 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_0_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F385A_W_0_M_0) },
},
- /* MOD_EVEX_0F385A_P_2_W_1 */
+ /* MOD_EVEX_0F385A_W_1 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_1_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F385A_W_1_M_0) },
},
- /* MOD_EVEX_0F385B_P_2_W_0 */
+ /* MOD_EVEX_0F385B_W_0 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_0_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F385B_W_0_M_0) },
},
- /* MOD_EVEX_0F385B_P_2_W_1 */
+ /* MOD_EVEX_0F385B_W_1 */
{
- { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_1_M_0) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F385B_W_1_M_0) },
},
{
/* MOD_EVEX_0F38C6_REG_1 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_1) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_1_M_0) },
},
{
/* MOD_EVEX_0F38C6_REG_2 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_2) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_2_M_0) },
},
{
/* MOD_EVEX_0F38C6_REG_5 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_5) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_5_M_0) },
},
{
/* MOD_EVEX_0F38C6_REG_6 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_6) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_6_M_0) },
},
{
/* MOD_EVEX_0F38C7_REG_1 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_1) },
+ { VEX_W_TABLE (EVEX_W_0F38C7_R_1_M_0) },
},
{
/* MOD_EVEX_0F38C7_REG_2 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_2) },
+ { VEX_W_TABLE (EVEX_W_0F38C7_R_2_M_0) },
},
{
/* MOD_EVEX_0F38C7_REG_5 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_5) },
+ { VEX_W_TABLE (EVEX_W_0F38C7_R_5_M_0) },
},
{
/* MOD_EVEX_0F38C7_REG_6 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_6) },
+ { VEX_W_TABLE (EVEX_W_0F38C7_R_6_M_0) },
},