instrs: Add FLD and fix FUCOMIP instructions
This commit is contained in:
@@ -1294,6 +1294,7 @@ d9/4m M MEMZ - - - FLDENV
|
||||
d9/5m M MEM16 - - - FLDCW
|
||||
d9/6m M MEMZ - - - FSTENV
|
||||
d9/7m M MEM16 - - - FSTCW
|
||||
d9/0r M FPU - - - FLD
|
||||
d9/1r M FPU - - - FXCH
|
||||
d9d0 NP - - - - FNOP
|
||||
d9e0 NP - - - - FCHS
|
||||
@@ -1401,8 +1402,8 @@ df/6m M FPU - - - FBSTP
|
||||
df/7m M MEM64 - - - FISTP ENC_SEPSZ
|
||||
# FSTSW AX
|
||||
dfe0 A GP16 - - - FSTSW
|
||||
df/5r AM FPU FPU - - FUCOMIP
|
||||
df/6r AM FPU FPU - - FCOMIP
|
||||
df/7r AM FPU FPU - - FUCOMIP
|
||||
#
|
||||
# Control Flow Enforcement
|
||||
F3.0f01/5m M GP64 - - - RSTORSSP
|
||||
|
||||
@@ -323,6 +323,16 @@ main(int argc, char** argv)
|
||||
TEST64("\x40\xc5\xf2\x2a\xc0", "UD"); // VEX+REX
|
||||
TEST64("\x40\x26\xc5\xf2\x2a\xc0", "vcvtsi2ss xmm0, xmm1, eax"); // VEX+REX, but REX doesn't precede VEX
|
||||
|
||||
TEST32("\xd9\x00", "fld dword ptr [eax]");
|
||||
TEST64("\xd9\x00", "fld dword ptr [rax]");
|
||||
TEST32("\xdd\x00", "fld qword ptr [eax]");
|
||||
TEST64("\xdd\x00", "fld qword ptr [rax]");
|
||||
TEST32("\xdb\x28", "fld tbyte ptr [eax]");
|
||||
TEST64("\xdb\x28", "fld tbyte ptr [rax]");
|
||||
TEST("\xd9\xc1", "fld st(1)");
|
||||
TEST("\xdf\xe9", "fucomip st(0), st(1)");
|
||||
TEST64("\x45\xdf\xe9", "fucomip st(0), st(1)"); // REX.RB are ignored.
|
||||
|
||||
TEST32("\xf3\x0f\x7e\x5c\x24\x08", "movq xmm3, qword ptr [esp+0x8]");
|
||||
TEST64("\xf3\x0f\x7e\x5c\x24\x08", "movq xmm3, qword ptr [rsp+0x8]");
|
||||
TEST32("\xc4\xe1\x00\x58\xc1", "vaddps xmm0, xmm7, xmm1"); // MSB in vvvv ignored
|
||||
|
||||
Reference in New Issue
Block a user