diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-01-14 10:54:55 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-01-14 10:54:55 +0100 |
commit | 740a1e791175987e28cc39dbd11e3fc152ffc40b (patch) | |
tree | 4e0fe8c874266c9c34d4b18fa5080fd1bed2a3d6 /opcodes/i386-dis.c | |
parent | 2235ecb8afebeb56baf29eb98de34cfa1b95f697 (diff) | |
download | binutils-gdb-740a1e791175987e28cc39dbd11e3fc152ffc40b.tar.gz |
x86: reduce AVX512 FP set of insns decoded through vex_w_table[]
Like for AVX512-FP16, there's not that many FP insns where going through
this table is easier / cheaper than using suitable macros. Utilize %XS
and %XD more to eliminate a fair number of table entries.
While doing this I noticed a few anomalies. Where lines get touched /
moved anyway, these are being addressed right here:
- vmovshdup used EXx for its 2nd operand, thus displaying seemingly
valid broadcast when EVEX.b is set with a memory operand; use
EXEvexXNoBcst instead just like vmovsldup already does
- vmovlhps used EXx for its 3rd operand, when all sibling entries use
EXq; switch to EXq there for consistency (the two differ only for
memory operands)
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 42 |
1 files changed, 1 insertions, 41 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index afc3743e4e8..ad560b1899c 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1621,36 +1621,7 @@ enum VEX_W_0FXOP_09_E2_L_0, VEX_W_0FXOP_09_E3_L_0, - EVEX_W_0F10_P_1, - EVEX_W_0F10_P_3, - EVEX_W_0F11_P_1, - EVEX_W_0F11_P_3, - EVEX_W_0F12_P_0_M_1, - EVEX_W_0F12_P_1, - EVEX_W_0F12_P_3, - EVEX_W_0F16_P_0_M_1, - EVEX_W_0F16_P_1, - EVEX_W_0F51_P_1, - EVEX_W_0F51_P_3, - EVEX_W_0F58_P_1, - EVEX_W_0F58_P_3, - EVEX_W_0F59_P_1, - EVEX_W_0F59_P_3, - EVEX_W_0F5A_P_0, - EVEX_W_0F5A_P_1, - EVEX_W_0F5A_P_2, - EVEX_W_0F5A_P_3, EVEX_W_0F5B_P_0, - EVEX_W_0F5B_P_1, - EVEX_W_0F5B_P_2, - EVEX_W_0F5C_P_1, - EVEX_W_0F5C_P_3, - EVEX_W_0F5D_P_1, - EVEX_W_0F5D_P_3, - EVEX_W_0F5E_P_1, - EVEX_W_0F5E_P_3, - EVEX_W_0F5F_P_1, - EVEX_W_0F5F_P_3, EVEX_W_0F62, EVEX_W_0F66, EVEX_W_0F6A, @@ -1678,15 +1649,11 @@ enum EVEX_W_0F7F_P_1, EVEX_W_0F7F_P_2, EVEX_W_0F7F_P_3, - EVEX_W_0FC2_P_1, - EVEX_W_0FC2_P_3, EVEX_W_0FD2, EVEX_W_0FD3, EVEX_W_0FD4, EVEX_W_0FD6, EVEX_W_0FE6_P_1, - EVEX_W_0FE6_P_2, - EVEX_W_0FE6_P_3, EVEX_W_0FE7, EVEX_W_0FF2, EVEX_W_0FF3, @@ -1694,7 +1661,7 @@ enum EVEX_W_0FFA, EVEX_W_0FFB, EVEX_W_0FFE, - EVEX_W_0F380D, + EVEX_W_0F3810_P_1, EVEX_W_0F3810_P_2, EVEX_W_0F3811_P_1, @@ -1702,7 +1669,6 @@ enum EVEX_W_0F3812_P_1, EVEX_W_0F3812_P_2, EVEX_W_0F3813_P_1, - EVEX_W_0F3813_P_2, EVEX_W_0F3814_P_1, EVEX_W_0F3815_P_1, EVEX_W_0F3819_L_n, @@ -1731,21 +1697,15 @@ enum EVEX_W_0F3835_P_2, EVEX_W_0F3837, EVEX_W_0F383A_P_1, - EVEX_W_0F3852_P_1, EVEX_W_0F3859, 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, - EVEX_W_0F3872_P_3, EVEX_W_0F387A, EVEX_W_0F387B, EVEX_W_0F3883, - EVEX_W_0F3A05, - EVEX_W_0F3A09, - EVEX_W_0F3A0B, EVEX_W_0F3A18_L_n, EVEX_W_0F3A19_L_n, EVEX_W_0F3A1A_L_2, |