|
From: <sv...@va...> - 2006-11-22 23:31:39
|
Author: sewardj
Date: 2006-11-22 23:31:37 +0000 (Wed, 22 Nov 2006)
New Revision: 1683
Log:
Specialise computation of carry flag after ADDL.
Modified:
trunk/priv/guest-x86/ghelpers.c
Modified: trunk/priv/guest-x86/ghelpers.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-x86/ghelpers.c 2006-11-22 17:39:51 UTC (rev 1682)
+++ trunk/priv/guest-x86/ghelpers.c 2006-11-22 23:31:37 UTC (rev 1683)
@@ -1263,6 +1263,13 @@
mkU32(1)
);
}
+ if (isU32(cc_op, X86G_CC_OP_ADDL)) {
+ /* C after add denotes sum <u either arg */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpLT32U,=20
+ binop(Iop_Add32, cc_dep1, cc_dep2),=20
+ cc_dep1));
+ }
# if 0
if (cc_op->tag =3D=3D Iex_Const) {
vex_printf("CFLAG "); ppIRExpr(cc_op); vex_printf("\n");
|