From: Julian Seward Date: Mon, 28 Apr 2008 21:05:33 +0000 (+0000) Subject: Enable FUCOMPP on amd64. Fixes #161378. X-Git-Tag: svn/VALGRIND_3_4_1^2~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36147059cc560e762ca765bea271ed37795022de;p=thirdparty%2Fvalgrind.git Enable FUCOMPP on amd64. Fixes #161378. git-svn-id: svn://svn.valgrind.org/vex/trunk@1826 --- diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index bab42feb3c..652737aa62 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -5159,19 +5159,20 @@ ULong dis_FPU ( /*OUT*/Bool* decode_ok, get_ST(0), get_ST(r_src)) ); break; -//.. case 0xE9: /* FUCOMPP %st(0),%st(1) */ -//.. DIP("fucompp %%st(0),%%st(1)\n"); -//.. /* 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(1)), -//.. mkU8(8)), -//.. mkU32(0x4500) -//.. )); -//.. fp_pop(); -//.. fp_pop(); -//.. break; + case 0xE9: /* FUCOMPP %st(0),%st(1) */ + DIP("fucompp %%st(0),%%st(1)\n"); + /* 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(1)), + mkU8(8)), + mkU32(0x4500) + ))); + fp_pop(); + fp_pop(); + break; default: goto decode_fail;