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:
Alexis Engelke
2021-01-23 16:18:12 +01:00
parent 0efd44cc28
commit d7b9c97681
2 changed files with 21 additions and 8 deletions

View File

@@ -568,6 +568,19 @@ main(int argc, char** argv)
TEST32("\xd9\x20", "fldenv [eax]");
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!
TEST("\x0f\x0f\xc0\x00", "UD");
TEST("\x0f\x0f\xc0\x0c", "3dnow mm0, mm0, 0xc"); // PI2FW