binutils-gdb/opcodes/i386-dis-evex-reg.h
Jan Beulich 7531c61332 x86: simplify decode of opcodes valid with (embedded) 66 prefix only
The only valid (embedded or explicit) prefix being the data size one
(which is a fairly common pattern), avoid going through prefix_table[].
Instead extend the "required prefix" logic to also handle PREFIX_DATA
alone in a table entry, now used to identify this case. This requires
moving the (adjusted) ->prefix_requirement logic ahead of the printing
of stray prefixes, as the latter needs to observe the new setting of
PREFIX_DATA in used_prefixes.

Also add PREFIX_OPCODE on related entries when previously there was
mistakenly no decode step through prefix_table[].
2020-07-14 10:33:40 +02:00

52 lines
1.3 KiB
C

/* REG_EVEX_0F71 */
{
{ Bad_Opcode },
{ Bad_Opcode },
{ "vpsrlw", { Vex, EXx, Ib }, PREFIX_DATA },
{ Bad_Opcode },
{ "vpsraw", { Vex, EXx, Ib }, PREFIX_DATA },
{ Bad_Opcode },
{ "vpsllw", { Vex, EXx, Ib }, PREFIX_DATA },
},
/* REG_EVEX_0F72 */
{
{ "vpror%DQ", { Vex, EXx, Ib }, PREFIX_DATA },
{ "vprol%DQ", { Vex, EXx, Ib }, PREFIX_DATA },
{ VEX_W_TABLE (EVEX_W_0F72_R_2) },
{ Bad_Opcode },
{ "vpsra%DQ", { Vex, EXx, Ib }, PREFIX_DATA },
{ Bad_Opcode },
{ VEX_W_TABLE (EVEX_W_0F72_R_6) },
},
/* REG_EVEX_0F73 */
{
{ Bad_Opcode },
{ Bad_Opcode },
{ VEX_W_TABLE (EVEX_W_0F73_R_2) },
{ "vpsrldq", { Vex, EXx, Ib }, PREFIX_DATA },
{ Bad_Opcode },
{ Bad_Opcode },
{ VEX_W_TABLE (EVEX_W_0F73_R_6) },
{ "vpslldq", { Vex, EXx, Ib }, PREFIX_DATA },
},
/* REG_EVEX_0F38C6 */
{
{ Bad_Opcode },
{ MOD_TABLE (MOD_EVEX_0F38C6_REG_1) },
{ MOD_TABLE (MOD_EVEX_0F38C6_REG_2) },
{ Bad_Opcode },
{ Bad_Opcode },
{ MOD_TABLE (MOD_EVEX_0F38C6_REG_5) },
{ MOD_TABLE (MOD_EVEX_0F38C6_REG_6) },
},
/* REG_EVEX_0F38C7 */
{
{ Bad_Opcode },
{ MOD_TABLE (MOD_EVEX_0F38C7_REG_1) },
{ MOD_TABLE (MOD_EVEX_0F38C7_REG_2) },
{ Bad_Opcode },
{ Bad_Opcode },
{ MOD_TABLE (MOD_EVEX_0F38C7_REG_5) },
{ MOD_TABLE (MOD_EVEX_0F38C7_REG_6) },
},