diff --git a/instrs.txt b/instrs.txt index b080c1e..b2a6d18 100644 --- a/instrs.txt +++ b/instrs.txt @@ -1543,14 +1543,14 @@ NP.0f38cc RM XMM XMM - - SHA256MSG1 NP.0f38cd RM XMM XMM - - SHA256MSG2 NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4 -NP.0f1a/m RM BND MEMZ - - BNDLDX -66.0f1a RM BND BND - - BNDMOV DEF64 -F2.0f1a RM BND GP - - BNDCU DEF64 -F3.0f1a RM BND GP - - BNDCL DEF64 -NP.0f1b/m MR MEMZ BND - - BNDSTX -66.0f1b MR BND BND - - BNDMOV DEF64 -F2.0f1b RM BND GP - - BNDCN DEF64 -F3.0f1b/m RM BND MEMZ - - BNDMK +#NP.0f1a/m RM BND MEMZ - - BNDLDX +#66.0f1a RM BND BND - - BNDMOV DEF64 +#F2.0f1a RM BND GP - - BNDCU DEF64 +#F3.0f1a RM BND GP - - BNDCL DEF64 +#NP.0f1b/m MR MEMZ BND - - BNDSTX +#66.0f1b MR BND BND - - BNDMOV DEF64 +#F2.0f1b RM BND GP - - BNDCN DEF64 +#F3.0f1b/m RM BND MEMZ - - BNDMK # TSXLDTRK F2.0f01e8 NP - - - - XSUSLDTRK diff --git a/tests/test_decode.c b/tests/test_decode.c index 3bc03c7..917f0eb 100644 --- a/tests/test_decode.c +++ b/tests/test_decode.c @@ -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