diff options
author | Cui, Lili <lili.cui@intel.com> | 2024-06-18 10:46:31 +0800 |
---|---|---|
committer | Cui, Lili <lili.cui@intel.com> | 2024-06-18 10:52:41 +0800 |
commit | f7b1fe8dc463d1cc0758d6c010a3082ff124e360 (patch) | |
tree | 9e730a561d8eb68f6a8f2b899e09c978b683d0ff /opcodes | |
parent | d8ba1c40371a664fe6fa3ed768dbf78289548359 (diff) | |
download | gdb-f7b1fe8dc463d1cc0758d6c010a3082ff124e360.zip gdb-f7b1fe8dc463d1cc0758d6c010a3082ff124e360.tar.gz gdb-f7b1fe8dc463d1cc0758d6c010a3082ff124e360.tar.bz2 |
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.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/i386-dis-evex-mod.h | 10 | ||||
-rw-r--r-- | opcodes/i386-dis-evex.h | 4 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 10 |
3 files changed, 14 insertions, 10 deletions
diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h index 879c91f..bba3265 100644 --- a/opcodes/i386-dis-evex-mod.h +++ b/opcodes/i386-dis-evex-mod.h @@ -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 }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 77c2ee7..0f63b5f 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -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 }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 86745a1..3a1afcc 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -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 (); } |