aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-03-10 08:16:54 +0100
committerJan Beulich <jbeulich@suse.com>2021-03-10 08:16:54 +0100
commitfc681dd6a1264a1560a711a6b69cb5a229d2316a (patch)
treede3c6d563c4b6d0966ca2da84a7fc94e1f17482b /opcodes/i386-dis-evex.h
parent13954a31199aac7d5bcb7d614f73cead4fd3d69c (diff)
downloadgdb-fc681dd6a1264a1560a711a6b69cb5a229d2316a.zip
gdb-fc681dd6a1264a1560a711a6b69cb5a229d2316a.tar.gz
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-evex.h')
-rw-r--r--opcodes/i386-dis-evex.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h
index c933942..013a338 100644
--- a/opcodes/i386-dis-evex.h
+++ b/opcodes/i386-dis-evex.h
@@ -321,9 +321,9 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
/* 18 */
{ VEX_W_TABLE (VEX_W_0F3818) },
- { VEX_W_TABLE (EVEX_W_0F3819) },
- { VEX_W_TABLE (EVEX_W_0F381A) },
- { VEX_W_TABLE (EVEX_W_0F381B) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3819) },
+ { MOD_TABLE (MOD_EVEX_0F381A) },
+ { MOD_TABLE (MOD_EVEX_0F381B) },
{ "vpabsb", { XM, EXx }, PREFIX_DATA },
{ "vpabsw", { XM, EXx }, PREFIX_DATA },
{ VEX_W_TABLE (EVEX_W_0F381E) },
@@ -394,8 +394,8 @@ static const struct dis386 evex_table[][256] = {
/* 58 */
{ VEX_W_TABLE (VEX_W_0F3858) },
{ VEX_W_TABLE (EVEX_W_0F3859) },
- { VEX_W_TABLE (EVEX_W_0F385A) },
- { VEX_W_TABLE (EVEX_W_0F385B) },
+ { MOD_TABLE (MOD_EVEX_0F385A) },
+ { MOD_TABLE (MOD_EVEX_0F385B) },
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
@@ -515,8 +515,8 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ "vpconflict%DQ", { XM, EXx }, PREFIX_DATA },
{ Bad_Opcode },
- { REG_TABLE (REG_EVEX_0F38C6) },
- { REG_TABLE (REG_EVEX_0F38C7) },
+ { MOD_TABLE (MOD_EVEX_0F38C6) },
+ { MOD_TABLE (MOD_EVEX_0F38C7) },
/* C8 */
{ "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
{ Bad_Opcode },
@@ -611,10 +611,10 @@ static const struct dis386 evex_table[][256] = {
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A16) },
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A17) },
/* 18 */
- { VEX_W_TABLE (EVEX_W_0F3A18) },
- { VEX_W_TABLE (EVEX_W_0F3A19) },
- { VEX_W_TABLE (EVEX_W_0F3A1A) },
- { VEX_W_TABLE (EVEX_W_0F3A1B) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A18) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A19) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B) },
{ Bad_Opcode },
{ VEX_W_TABLE (VEX_W_0F3A1D) },
{ "vpcmpu%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
@@ -623,7 +623,7 @@ static const struct dis386 evex_table[][256] = {
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A20) },
{ VEX_W_TABLE (EVEX_W_0F3A21) },
{ EVEX_LEN_TABLE (EVEX_LEN_0F3A22) },
- { VEX_W_TABLE (EVEX_W_0F3A23) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A23) },
{ Bad_Opcode },
{ "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
{ "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
@@ -647,10 +647,10 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
/* 38 */
- { VEX_W_TABLE (EVEX_W_0F3A38) },
- { VEX_W_TABLE (EVEX_W_0F3A39) },
- { VEX_W_TABLE (EVEX_W_0F3A3A) },
- { VEX_W_TABLE (EVEX_W_0F3A3B) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A38) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A39) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B) },
{ Bad_Opcode },
{ Bad_Opcode },
{ "vpcmpu%BW", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
@@ -659,7 +659,7 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ VEX_W_TABLE (EVEX_W_0F3A42) },
- { VEX_W_TABLE (EVEX_W_0F3A43) },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A43) },
{ "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA },
{ Bad_Opcode },
{ Bad_Opcode },