binutils-gdb/opcodes/i386-dis-evex-mod.h
Jan Beulich fc681dd6a1 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 7531c61332 ("x86: simplify decode of
opcodes valid with (embedded) 66 prefix only") missed to apply to
vbroadcastf64x4.
2021-03-10 08:16:54 +01:00

90 lines
1.9 KiB
C

{
/* MOD_EVEX_0F12_PREFIX_0 */
{ "vmovlpX", { XMM, Vex, EXxmm_mq }, PREFIX_OPCODE },
{ VEX_W_TABLE (EVEX_W_0F12_P_0_M_1) },
},
{
/* MOD_EVEX_0F12_PREFIX_2 */
{ "vmovlpX", { XMM, Vex, EXxmm_mq }, PREFIX_OPCODE },
},
{
/* MOD_EVEX_0F13 */
{ "vmovlpX", { EXxmm_mq, XMM }, PREFIX_OPCODE },
},
{
/* MOD_EVEX_0F16_PREFIX_0 */
{ "vmovhpX", { XMM, Vex, EXxmm_mq }, PREFIX_OPCODE },
{ VEX_W_TABLE (EVEX_W_0F16_P_0_M_1) },
},
{
/* MOD_EVEX_0F16_PREFIX_2 */
{ "vmovhpX", { XMM, Vex, EXxmm_mq }, PREFIX_OPCODE },
},
{
/* MOD_EVEX_0F17 */
{ "vmovhpX", { EXxmm_mq, XMM }, PREFIX_OPCODE },
},
{
/* MOD_EVEX_0F2B */
{ "vmovntpX", { EXx, XM }, PREFIX_OPCODE },
},
/* MOD_EVEX_0F381A */
{
{ EVEX_LEN_TABLE (EVEX_LEN_0F381A_M_0) },
},
/* MOD_EVEX_0F381B */
{
{ EVEX_LEN_TABLE (EVEX_LEN_0F381B_M_0) },
},
/* MOD_EVEX_0F3828_P_1 */
{
{ Bad_Opcode },
{ "vpmovm2%BW", { XM, MaskE }, 0 },
},
/* MOD_EVEX_0F382A_P_1_W_1 */
{
{ Bad_Opcode },
{ "vpbroadcastmb2q", { XM, MaskE }, 0 },
},
/* MOD_EVEX_0F3838_P_1 */
{
{ Bad_Opcode },
{ "vpmovm2%DQ", { XM, MaskE }, 0 },
},
/* MOD_EVEX_0F383A_P_1_W_0 */
{
{ Bad_Opcode },
{ "vpbroadcastmw2d", { XM, MaskE }, 0 },
},
/* MOD_EVEX_0F385A */
{
{ EVEX_LEN_TABLE (EVEX_LEN_0F385A_M_0) },
},
/* MOD_EVEX_0F385B */
{
{ EVEX_LEN_TABLE (EVEX_LEN_0F385B_M_0) },
},
/* MOD_EVEX_0F387A_W_0 */
{
{ Bad_Opcode },
{ "vpbroadcastb", { XM, Ed }, PREFIX_DATA },
},
/* MOD_EVEX_0F387B_W_0 */
{
{ Bad_Opcode },
{ "vpbroadcastw", { XM, Ed }, PREFIX_DATA },
},
/* MOD_EVEX_0F387C */
{
{ Bad_Opcode },
{ "vpbroadcastK", { XM, Edq }, PREFIX_DATA },
},
{
/* MOD_EVEX_0F38C6 */
{ EVEX_LEN_TABLE (EVEX_LEN_0F38C6_M_0) },
},
{
/* MOD_EVEX_0F38C7 */
{ EVEX_LEN_TABLE (EVEX_LEN_0F38C7_M_0) },
},