From: Julian Seward Date: Sat, 5 Nov 2005 01:12:18 +0000 (+0000) Subject: Reenable FUCOMP %st(0),%st(?). X-Git-Tag: svn/VALGRIND_3_1_1^2~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc20beff25f681f37cbb58afa8012e38b743ee0f;p=thirdparty%2Fvalgrind.git Reenable FUCOMP %st(0),%st(?). git-svn-id: svn://svn.valgrind.org/vex/trunk@1437 --- diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index 4ba03c5856..f335a766b4 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -5455,19 +5455,20 @@ ULong dis_FPU ( /*OUT*/Bool* decode_ok, ))); break; -//.. case 0xE8 ... 0xEF: /* FUCOMP %st(0),%st(?) */ -//.. r_dst = (UInt)modrm - 0xE8; -//.. DIP("fucomp %%st(0),%%st(%d)\n", r_dst); -//.. /* This forces C1 to zero, which isn't right. */ -//.. put_C3210( -//.. binop( Iop_And32, -//.. binop(Iop_Shl32, -//.. binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)), -//.. mkU8(8)), -//.. mkU32(0x4500) -//.. )); -//.. fp_pop(); -//.. break; + case 0xE8 ... 0xEF: /* FUCOMP %st(0),%st(?) */ + r_dst = (UInt)modrm - 0xE8; + DIP("fucomp %%st(0),%%st(%d)\n", r_dst); + /* This forces C1 to zero, which isn't right. */ + put_C3210( + unop(Iop_32Uto64, + binop( Iop_And32, + binop(Iop_Shl32, + binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)), + mkU8(8)), + mkU32(0x4500) + ))); + fp_pop(); + break; default: goto decode_fail;