aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-03-10 08:19:11 +0100
committerJan Beulich <jbeulich@suse.com>2021-03-10 08:19:11 +0100
commit85ba7507f695f914d0ad22b6d1c60bc3571f5345 (patch)
tree9de6b0b4de79c378ee0d1dafd1870532d806e9db /opcodes/i386-dis-evex.h
parent066f82b96a4902b9f4f76dfc8d24f8d73ceeef0f (diff)
downloadfsf-binutils-gdb-85ba7507f695f914d0ad22b6d1c60bc3571f5345.zip
fsf-binutils-gdb-85ba7507f695f914d0ad22b6d1c60bc3571f5345.tar.gz
fsf-binutils-gdb-85ba7507f695f914d0ad22b6d1c60bc3571f5345.tar.bz2
x86: reuse further VEX entries for EVEX
When the VEX.L=1 decode matches that of both EVEX.L'L=1 and EVEX.L'L=2 (typically when all three are invalid) the (smaller) VEX table entry can be reused by EVEX, instead of duplicating data. (Note that XM and XMM as well as EXxmm_md and EXd are equivalent at least for the purposes here.)
Diffstat (limited to 'opcodes/i386-dis-evex.h')
-rw-r--r--opcodes/i386-dis-evex.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h
index 27446c4..eb88e5f 100644
--- a/opcodes/i386-dis-evex.h
+++ b/opcodes/i386-dis-evex.h
@@ -125,7 +125,7 @@ static const struct dis386 evex_table[][256] = {
{ VEX_W_TABLE (EVEX_W_0F6B) },
{ VEX_W_TABLE (EVEX_W_0F6C) },
{ VEX_W_TABLE (EVEX_W_0F6D) },
- { EVEX_LEN_TABLE (EVEX_LEN_0F6E) },
+ { VEX_LEN_TABLE (VEX_LEN_0F6E) },
{ PREFIX_TABLE (PREFIX_EVEX_0F6F) },
/* 70 */
{ PREFIX_TABLE (PREFIX_EVEX_0F70) },
@@ -222,8 +222,8 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ PREFIX_TABLE (PREFIX_EVEX_0FC2) },
{ Bad_Opcode },
- { EVEX_LEN_TABLE (EVEX_LEN_0FC4) },
- { EVEX_LEN_TABLE (EVEX_LEN_0FC5) },
+ { VEX_LEN_TABLE (VEX_LEN_0FC4) },
+ { VEX_LEN_TABLE (VEX_LEN_0FC5) },
{ "vshufpX", { XM, Vex, EXx, Ib }, PREFIX_OPCODE },
{ Bad_Opcode },
/* C8 */
@@ -242,7 +242,7 @@ static const struct dis386 evex_table[][256] = {
{ VEX_W_TABLE (EVEX_W_0FD3) },
{ VEX_W_TABLE (EVEX_W_0FD4) },
{ "vpmullw", { XM, Vex, EXx }, PREFIX_DATA },
- { EVEX_LEN_TABLE (EVEX_LEN_0FD6) },
+ { VEX_W_TABLE (EVEX_W_0FD6) },
{ Bad_Opcode },
/* D8 */
{ "vpsubusb", { XM, Vex, EXx }, PREFIX_DATA },
@@ -606,10 +606,10 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A14) },
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A15) },
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A16) },
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A17) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A14) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A15) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A16) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A17) },
/* 18 */
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A18) },
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A19) },
@@ -620,9 +620,9 @@ static const struct dis386 evex_table[][256] = {
{ "vpcmpu%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
{ "vpcmp%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
/* 20 */
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A20) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A20) },
{ VEX_W_TABLE (EVEX_W_0F3A21) },
- { EVEX_LEN_TABLE (EVEX_LEN_0F3A22) },
+ { VEX_LEN_TABLE (VEX_LEN_0F3A22) },
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A23) },
{ Bad_Opcode },
{ "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },