aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-03-10 08:16:54 +0100
committerJan Beulich <jbeulich@suse.com>2021-03-10 08:16:54 +0100
commitfc681dd6a1264a1560a711a6b69cb5a229d2316a (patch)
treede3c6d563c4b6d0966ca2da84a7fc94e1f17482b /opcodes/i386-dis.c
parent13954a31199aac7d5bcb7d614f73cead4fd3d69c (diff)
downloadfsf-binutils-gdb-fc681dd6a1264a1560a711a6b69cb5a229d2316a.zip
fsf-binutils-gdb-fc681dd6a1264a1560a711a6b69cb5a229d2316a.tar.gz
fsf-binutils-gdb-fc681dd6a1264a1560a711a6b69cb5a229d2316a.tar.bz2
x86: re-arrange order of decode for various EVEX opcodes
The order of decodes influences the overall number of table entries. Reduce table size quite a bit by first decoding few-alternatives attributes common to all valid leaves. This also adds a PREFIX_DATA 7531c61332db ("x86: simplify decode of opcodes valid with (embedded) 66 prefix only") missed to apply to vbroadcastf64x4.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c121
1 files changed, 42 insertions, 79 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 2adf8e9..25b9c44 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -716,8 +716,9 @@ enum
REG_EVEX_0F71,
REG_EVEX_0F72,
REG_EVEX_0F73,
- REG_EVEX_0F38C6,
- REG_EVEX_0F38C7
+ REG_EVEX_0F38C6_M_0_L_2,
+ REG_EVEX_0F38C7_M_0_L_2_W_0,
+ REG_EVEX_0F38C7_M_0_L_2_W_1
};
enum
@@ -856,29 +857,19 @@ enum
MOD_EVEX_0F16_PREFIX_2,
MOD_EVEX_0F17,
MOD_EVEX_0F2B,
- MOD_EVEX_0F381A_W_0,
- MOD_EVEX_0F381A_W_1,
- MOD_EVEX_0F381B_W_0,
- MOD_EVEX_0F381B_W_1,
+ MOD_EVEX_0F381A,
+ MOD_EVEX_0F381B,
MOD_EVEX_0F3828_P_1,
MOD_EVEX_0F382A_P_1_W_1,
MOD_EVEX_0F3838_P_1,
MOD_EVEX_0F383A_P_1_W_0,
- MOD_EVEX_0F385A_W_0,
- MOD_EVEX_0F385A_W_1,
- MOD_EVEX_0F385B_W_0,
- MOD_EVEX_0F385B_W_1,
+ MOD_EVEX_0F385A,
+ MOD_EVEX_0F385B,
MOD_EVEX_0F387A_W_0,
MOD_EVEX_0F387B_W_0,
MOD_EVEX_0F387C,
- MOD_EVEX_0F38C6_REG_1,
- MOD_EVEX_0F38C6_REG_2,
- MOD_EVEX_0F38C6_REG_5,
- MOD_EVEX_0F38C6_REG_6,
- MOD_EVEX_0F38C7_REG_1,
- MOD_EVEX_0F38C7_REG_2,
- MOD_EVEX_0F38C7_REG_5,
- MOD_EVEX_0F38C7_REG_6
+ MOD_EVEX_0F38C6,
+ MOD_EVEX_0F38C7
};
enum
@@ -1350,58 +1341,33 @@ enum
EVEX_LEN_0FC5,
EVEX_LEN_0FD6,
EVEX_LEN_0F3816,
- EVEX_LEN_0F3819_W_0,
- EVEX_LEN_0F3819_W_1,
- EVEX_LEN_0F381A_W_0_M_0,
- EVEX_LEN_0F381A_W_1_M_0,
- EVEX_LEN_0F381B_W_0_M_0,
- EVEX_LEN_0F381B_W_1_M_0,
+ EVEX_LEN_0F3819,
+ EVEX_LEN_0F381A_M_0,
+ EVEX_LEN_0F381B_M_0,
EVEX_LEN_0F3836,
- EVEX_LEN_0F385A_W_0_M_0,
- EVEX_LEN_0F385A_W_1_M_0,
- EVEX_LEN_0F385B_W_0_M_0,
- EVEX_LEN_0F385B_W_1_M_0,
- EVEX_LEN_0F38C6_R_1_M_0,
- EVEX_LEN_0F38C6_R_2_M_0,
- EVEX_LEN_0F38C6_R_5_M_0,
- EVEX_LEN_0F38C6_R_6_M_0,
- EVEX_LEN_0F38C7_R_1_M_0_W_0,
- EVEX_LEN_0F38C7_R_1_M_0_W_1,
- EVEX_LEN_0F38C7_R_2_M_0_W_0,
- EVEX_LEN_0F38C7_R_2_M_0_W_1,
- EVEX_LEN_0F38C7_R_5_M_0_W_0,
- EVEX_LEN_0F38C7_R_5_M_0_W_1,
- EVEX_LEN_0F38C7_R_6_M_0_W_0,
- EVEX_LEN_0F38C7_R_6_M_0_W_1,
+ EVEX_LEN_0F385A_M_0,
+ EVEX_LEN_0F385B_M_0,
+ EVEX_LEN_0F38C6_M_0,
+ EVEX_LEN_0F38C7_M_0,
EVEX_LEN_0F3A00_W_1,
EVEX_LEN_0F3A01_W_1,
EVEX_LEN_0F3A14,
EVEX_LEN_0F3A15,
EVEX_LEN_0F3A16,
EVEX_LEN_0F3A17,
- EVEX_LEN_0F3A18_W_0,
- EVEX_LEN_0F3A18_W_1,
- EVEX_LEN_0F3A19_W_0,
- EVEX_LEN_0F3A19_W_1,
- EVEX_LEN_0F3A1A_W_0,
- EVEX_LEN_0F3A1A_W_1,
- EVEX_LEN_0F3A1B_W_0,
- EVEX_LEN_0F3A1B_W_1,
+ EVEX_LEN_0F3A18,
+ EVEX_LEN_0F3A19,
+ EVEX_LEN_0F3A1A,
+ EVEX_LEN_0F3A1B,
EVEX_LEN_0F3A20,
EVEX_LEN_0F3A21_W_0,
EVEX_LEN_0F3A22,
- EVEX_LEN_0F3A23_W_0,
- EVEX_LEN_0F3A23_W_1,
- EVEX_LEN_0F3A38_W_0,
- EVEX_LEN_0F3A38_W_1,
- EVEX_LEN_0F3A39_W_0,
- EVEX_LEN_0F3A39_W_1,
- EVEX_LEN_0F3A3A_W_0,
- EVEX_LEN_0F3A3A_W_1,
- EVEX_LEN_0F3A3B_W_0,
- EVEX_LEN_0F3A3B_W_1,
- EVEX_LEN_0F3A43_W_0,
- EVEX_LEN_0F3A43_W_1
+ EVEX_LEN_0F3A23,
+ EVEX_LEN_0F3A38,
+ EVEX_LEN_0F3A39,
+ EVEX_LEN_0F3A3A,
+ EVEX_LEN_0F3A3B,
+ EVEX_LEN_0F3A43
};
enum
@@ -1605,9 +1571,9 @@ enum
EVEX_W_0F3813_P_2,
EVEX_W_0F3814_P_1,
EVEX_W_0F3815_P_1,
- EVEX_W_0F3819,
- EVEX_W_0F381A,
- EVEX_W_0F381B,
+ EVEX_W_0F3819_L_n,
+ EVEX_W_0F381A_M_0_L_n,
+ EVEX_W_0F381B_M_0_L_2,
EVEX_W_0F381E,
EVEX_W_0F381F,
EVEX_W_0F3820_P_1,
@@ -1633,8 +1599,8 @@ enum
EVEX_W_0F383A_P_1,
EVEX_W_0F3852_P_1,
EVEX_W_0F3859,
- EVEX_W_0F385A,
- EVEX_W_0F385B,
+ EVEX_W_0F385A_M_0_L_n,
+ EVEX_W_0F385B_M_0_L_2,
EVEX_W_0F3870,
EVEX_W_0F3872_P_1,
EVEX_W_0F3872_P_2,
@@ -1646,10 +1612,7 @@ enum
EVEX_W_0F3893,
EVEX_W_0F38A1,
EVEX_W_0F38A3,
- EVEX_W_0F38C7_R_1_M_0,
- EVEX_W_0F38C7_R_2_M_0,
- EVEX_W_0F38C7_R_5_M_0,
- EVEX_W_0F38C7_R_6_M_0,
+ EVEX_W_0F38C7_M_0_L_2,
EVEX_W_0F3A00,
EVEX_W_0F3A01,
@@ -1658,18 +1621,18 @@ enum
EVEX_W_0F3A09,
EVEX_W_0F3A0A,
EVEX_W_0F3A0B,
- EVEX_W_0F3A18,
- EVEX_W_0F3A19,
- EVEX_W_0F3A1A,
- EVEX_W_0F3A1B,
+ EVEX_W_0F3A18_L_n,
+ EVEX_W_0F3A19_L_n,
+ EVEX_W_0F3A1A_L_2,
+ EVEX_W_0F3A1B_L_2,
EVEX_W_0F3A21,
- EVEX_W_0F3A23,
- EVEX_W_0F3A38,
- EVEX_W_0F3A39,
- EVEX_W_0F3A3A,
- EVEX_W_0F3A3B,
+ EVEX_W_0F3A23_L_n,
+ EVEX_W_0F3A38_L_n,
+ EVEX_W_0F3A39_L_n,
+ EVEX_W_0F3A3A_L_2,
+ EVEX_W_0F3A3B_L_2,
EVEX_W_0F3A42,
- EVEX_W_0F3A43,
+ EVEX_W_0F3A43_L_n,
EVEX_W_0F3A70,
EVEX_W_0F3A72,
};