mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
Remove %ME and used %NE for movbe.
%ME is added specifically for movbe. Now with %NE, we can use
MOD table + %NE to indicate whether a {evex} prefix is needed.
opcodes/ChangeLog:
* i386-dis-evex-mod.h: Added movbe.
* i386-dis-evex.h: Let movbe go through the mod table.
* i386-dis.c (struct dis386): Removed %ME.
(putop): Removed case ME.
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
/* MOD_EVEX_MAP4_60 */
|
||||
{
|
||||
{ "movbeS", { Gv, Mv }, PREFIX_NP_OR_DATA },
|
||||
{ "%NEmovbeS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
||||
},
|
||||
/* MOD_EVEX_MAP4_61 */
|
||||
{
|
||||
{ "movbeS", { Mv, Gv }, PREFIX_NP_OR_DATA },
|
||||
{ "%NEmovbeS", { Ev, Gv }, PREFIX_NP_OR_DATA },
|
||||
},
|
||||
/* MOD_EVEX_MAP4_F8_P1 */
|
||||
{
|
||||
{ "enqcmds", { Gva, M }, 0 },
|
||||
|
||||
@@ -983,8 +983,8 @@ static const struct dis386 evex_table[][256] = {
|
||||
{ Bad_Opcode },
|
||||
{ Bad_Opcode },
|
||||
/* 60 */
|
||||
{ "%MEmovbeS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
||||
{ "%MEmovbeS", { Ev, Gv }, PREFIX_NP_OR_DATA },
|
||||
{ MOD_TABLE (MOD_EVEX_MAP4_60) },
|
||||
{ MOD_TABLE (MOD_EVEX_MAP4_61) },
|
||||
{ Bad_Opcode },
|
||||
{ Bad_Opcode },
|
||||
{ Bad_Opcode },
|
||||
|
||||
@@ -960,6 +960,8 @@ enum
|
||||
|
||||
MOD_VEX_0F3849_X86_64_L_0_W_0,
|
||||
|
||||
MOD_EVEX_MAP4_60,
|
||||
MOD_EVEX_MAP4_61,
|
||||
MOD_EVEX_MAP4_F8_P_1,
|
||||
MOD_EVEX_MAP4_F8_P_3,
|
||||
};
|
||||
@@ -1800,9 +1802,6 @@ struct dis386 {
|
||||
"XV" => print "{vex} " pseudo prefix
|
||||
"XE" => print "{evex} " pseudo prefix if no EVEX-specific functionality is
|
||||
is used by an EVEX-encoded (AVX512VL) instruction.
|
||||
"ME" => print "{evex} " pseudo prefix for ins->modrm.mod != 3,if no
|
||||
EVEX-specific functionality is used by an EVEX-encoded (AVX512VL)
|
||||
instruction.
|
||||
"NF" => print "{nf} " pseudo prefix when EVEX.NF = 1 and print "{evex} "
|
||||
pseudo prefix when instructions without NF, EGPR and VVVV,
|
||||
"NE" => don't print "{evex} " pseudo prefix for some special instructions
|
||||
@@ -10527,11 +10526,6 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
||||
/* Skip printing {evex} for some special instructions in MAP4. */
|
||||
evex_printed = true;
|
||||
break;
|
||||
case 'M':
|
||||
if (ins->modrm.mod != 3 && !(ins->rex2 & 7))
|
||||
oappend (ins, "{evex} ");
|
||||
evex_printed = true;
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user