instrs: Remove MPX instructions
These instructions have plenty of corner cases and some instructions have a different usage of the memory operand. Given that MPX is already deprecated by Intel, it seems that the better option is to decode these (rarely occuring) instructions as NOPs.
This commit is contained in:
16
instrs.txt
16
instrs.txt
@@ -1543,14 +1543,14 @@ NP.0f38cc RM XMM XMM - - SHA256MSG1
|
|||||||
NP.0f38cd RM XMM XMM - - SHA256MSG2
|
NP.0f38cd RM XMM XMM - - SHA256MSG2
|
||||||
NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4
|
NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4
|
||||||
|
|
||||||
NP.0f1a/m RM BND MEMZ - - BNDLDX
|
#NP.0f1a/m RM BND MEMZ - - BNDLDX
|
||||||
66.0f1a RM BND BND - - BNDMOV DEF64
|
#66.0f1a RM BND BND - - BNDMOV DEF64
|
||||||
F2.0f1a RM BND GP - - BNDCU DEF64
|
#F2.0f1a RM BND GP - - BNDCU DEF64
|
||||||
F3.0f1a RM BND GP - - BNDCL DEF64
|
#F3.0f1a RM BND GP - - BNDCL DEF64
|
||||||
NP.0f1b/m MR MEMZ BND - - BNDSTX
|
#NP.0f1b/m MR MEMZ BND - - BNDSTX
|
||||||
66.0f1b MR BND BND - - BNDMOV DEF64
|
#66.0f1b MR BND BND - - BNDMOV DEF64
|
||||||
F2.0f1b RM BND GP - - BNDCN DEF64
|
#F2.0f1b RM BND GP - - BNDCN DEF64
|
||||||
F3.0f1b/m RM BND MEMZ - - BNDMK
|
#F3.0f1b/m RM BND MEMZ - - BNDMK
|
||||||
|
|
||||||
# TSXLDTRK
|
# TSXLDTRK
|
||||||
F2.0f01e8 NP - - - - XSUSLDTRK
|
F2.0f01e8 NP - - - - XSUSLDTRK
|
||||||
|
|||||||
@@ -568,6 +568,19 @@ main(int argc, char** argv)
|
|||||||
TEST32("\xd9\x20", "fldenv [eax]");
|
TEST32("\xd9\x20", "fldenv [eax]");
|
||||||
TEST64("\xd9\x20", "fldenv [rax]");
|
TEST64("\xd9\x20", "fldenv [rax]");
|
||||||
|
|
||||||
|
// MPX
|
||||||
|
#if 0
|
||||||
|
TEST("\x66\x0f\x1a\xc1", "bndmov bnd0, bnd1");
|
||||||
|
TEST("\x66\x0f\x1a\xc4", "UD"); // ModRM bnd4 is undefined
|
||||||
|
TEST64("\x41\x66\x0f\x1a\xc0", "UD"); // ModRM bnd8 is undefined
|
||||||
|
TEST32("\xf3\x0f\x1b\x00", "bndmk bnd0, [eax]");
|
||||||
|
TEST64("\xf3\x0f\x1b\x00", "bndmk bnd0, [rax]");
|
||||||
|
TEST64("\x0f\x1a\x05\x00\x00\x00\x00", "UD"); // BNDSTX+RIP-rel = UD
|
||||||
|
TEST64("\x0f\x1b\x05\x00\x00\x00\x00", "UD"); // BNDLDX+RIP-rel = UD
|
||||||
|
TEST64("\xf3\x0f\x1b\x05\x00\x00\x00\x00", "UD"); // BNDMK+RIP-rel = UD
|
||||||
|
#endif
|
||||||
|
TEST("\xf3\x0f\x1b\xc0", "nop eax, eax"); // BNDMK with reg/reg remains NOP
|
||||||
|
|
||||||
// 3DNow!
|
// 3DNow!
|
||||||
TEST("\x0f\x0f\xc0\x00", "UD");
|
TEST("\x0f\x0f\xc0\x00", "UD");
|
||||||
TEST("\x0f\x0f\xc0\x0c", "3dnow mm0, mm0, 0xc"); // PI2FW
|
TEST("\x0f\x0f\xc0\x0c", "3dnow mm0, mm0, 0xc"); // PI2FW
|
||||||
|
|||||||
Reference in New Issue
Block a user