|
From: <sv...@va...> - 2005-11-05 01:12:21
|
Author: sewardj
Date: 2005-11-05 01:12:18 +0000 (Sat, 05 Nov 2005)
New Revision: 1437
Log:
Reenable FUCOMP %st(0),%st(?).
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-amd64/toIR.c 2005-11-04 20:49:36 UTC (rev 1436)
+++ trunk/priv/guest-amd64/toIR.c 2005-11-05 01:12:18 UTC (rev 1437)
@@ -5455,19 +5455,20 @@
)));
break;
=20
-//.. case 0xE8 ... 0xEF: /* FUCOMP %st(0),%st(?) */
-//.. r_dst =3D (UInt)modrm - 0xE8;
-//.. DIP("fucomp %%st(0),%%st(%d)\n", r_dst);
-//.. /* This forces C1 to zero, which isn't right. */
-//.. put_C3210(=20
-//.. binop( Iop_And32,
-//.. binop(Iop_Shl32,=20
-//.. 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 =3D (UInt)modrm - 0xE8;
+ DIP("fucomp %%st(0),%%st(%d)\n", r_dst);
+ /* This forces C1 to zero, which isn't right. */
+ put_C3210(=20
+ unop(Iop_32Uto64,=20
+ binop( Iop_And32,
+ binop(Iop_Shl32,=20
+ binop(Iop_CmpF64, get_ST(0), get_ST(r_ds=
t)),
+ mkU8(8)),
+ mkU32(0x4500)
+ )));
+ fp_pop();
+ break;
=20
default:
goto decode_fail;
|