diff options
author | Jan Beulich <jbeulich@suse.com> | 2021-03-10 08:16:54 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2021-03-10 08:16:54 +0100 |
commit | fc681dd6a1264a1560a711a6b69cb5a229d2316a (patch) | |
tree | de3c6d563c4b6d0966ca2da84a7fc94e1f17482b /opcodes/i386-dis.c | |
parent | 13954a31199aac7d5bcb7d614f73cead4fd3d69c (diff) | |
download | fsf-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.c | 121 |
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, }; |