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-evex-mod.h | |
parent | 2235ecb8afebeb56baf29eb98de34cfa1b95f697 (diff) | |
download | fsf-binutils-gdb-740a1e791175987e28cc39dbd11e3fc152ffc40b.zip fsf-binutils-gdb-740a1e791175987e28cc39dbd11e3fc152ffc40b.tar.gz fsf-binutils-gdb-740a1e791175987e28cc39dbd11e3fc152ffc40b.tar.bz2 |
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-evex-mod.h')
-rw-r--r-- | opcodes/i386-dis-evex-mod.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h index 7a372ce..2d35bf2 100644 --- a/opcodes/i386-dis-evex-mod.h +++ b/opcodes/i386-dis-evex-mod.h @@ -1,7 +1,7 @@ { /* MOD_EVEX_0F12_PREFIX_0 */ { "vmovlpX", { XMM, Vex, EXq }, PREFIX_OPCODE }, - { VEX_W_TABLE (EVEX_W_0F12_P_0_M_1) }, + { "vmovhlp%XS", { XMM, Vex, EXq }, 0 }, }, { /* MOD_EVEX_0F12_PREFIX_2 */ @@ -14,7 +14,7 @@ { /* MOD_EVEX_0F16_PREFIX_0 */ { "vmovhpX", { XMM, Vex, EXq }, PREFIX_OPCODE }, - { VEX_W_TABLE (EVEX_W_0F16_P_0_M_1) }, + { "vmovlhp%XS", { XMM, Vex, EXq }, 0 }, }, { /* MOD_EVEX_0F16_PREFIX_2 */ |