diff options
author | Jan Beulich <jbeulich@suse.com> | 2021-03-10 08:16:54 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2021-03-10 08:16:54 +0100 |
commit | fc681dd6a1264a1560a711a6b69cb5a229d2316a (patch) | |
tree | de3c6d563c4b6d0966ca2da84a7fc94e1f17482b /opcodes/i386-dis-evex.h | |
parent | 13954a31199aac7d5bcb7d614f73cead4fd3d69c (diff) | |
download | gdb-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.h | 34 |
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 }, |