summaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex-mod.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-01-14 10:54:55 +0100
committerJan Beulich <jbeulich@suse.com>2022-01-14 10:54:55 +0100
commit740a1e791175987e28cc39dbd11e3fc152ffc40b (patch)
tree4e0fe8c874266c9c34d4b18fa5080fd1bed2a3d6 /opcodes/i386-dis-evex-mod.h
parent2235ecb8afebeb56baf29eb98de34cfa1b95f697 (diff)
downloadbinutils-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-evex-mod.h')
-rw-r--r--opcodes/i386-dis-evex-mod.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h
index 7a372ce8c0b..2d35bf2a589 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 */