diff --git a/decode-test.c b/decode-test.c index 32b5df9..82996e2 100644 --- a/decode-test.c +++ b/decode-test.c @@ -417,6 +417,8 @@ main(int argc, char** argv) // TODO: MOVDIR64B first operand has address size. // TEST32("\x67\x66\x0f\x38\xf8\x01", "movdir64b ax, zmmword ptr [cx]"); // TEST64("\x67\x66\x0f\x38\xf8\x01", "movdir64b eax, zmmword ptr [ecx]"); + TEST64("\xf2\x0f\x01\xc6", "rdmsrlist"); + TEST64("\xf3\x0f\x01\xc6", "wrmsrlist"); TEST("\x0f\xae\xe8", "lfence"); TEST("\x0f\xae\xe9", "lfence"); diff --git a/encode-test.inc b/encode-test.inc index e014a63..81ce46f 100644 --- a/encode-test.inc +++ b/encode-test.inc @@ -177,6 +177,9 @@ TEST("", MOV64ar, FE_ADDR32, 0xfedcba98, FE_CX); TEST("\xc7\xf8\x02\x00\x00\x00", XBEGIN, 0, FE_PTR(8)); +TEST("\xf2\x0f\x01\xc6", RDMSRLIST, 0); +TEST("\xf3\x0f\x01\xc6", WRMSRLIST, 0); + // Test FPU instructions TEST("\xd8\x00", FADDm32, 0, FE_MEM(FE_AX, 0, FE_NOREG, 0)); TEST("\xdc\x00", FADDm64, 0, FE_MEM(FE_AX, 0, FE_NOREG, 0)); diff --git a/instrs.txt b/instrs.txt index da23bc9..03f878a 100644 --- a/instrs.txt +++ b/instrs.txt @@ -1613,6 +1613,10 @@ F3.0f01ee NP - - - - CLUI O64 F=UINTR F3.0f01ef NP - - - - STUI O64 F=UINTR F3.0fc7/6r M Ry - - - SENDUIPI O64 D64 F=UINTR +# MSRLIST +F2.0f01c6 NP - - - - RDMSRLIST O64 F=MSRLIST +F3.0f01c6 NP - - - - WRMSRLIST O64 F=MSRLIST + # AESKLE/KL (Key Locker) F3.0f38d8/0m M M - - - AESENCWIDE128KL F=AESKLE F3.0f38d8/1m M M - - - AESDECWIDE128KL F=AESKLE