|
From: <sv...@va...> - 2006-09-17 10:02:39
|
Author: sewardj
Date: 2006-09-17 11:02:35 +0100 (Sun, 17 Sep 2006)
New Revision: 1660
Log:
Another day, another %eflags reduction rule.
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-09-16 00:12:10 UTC (rev 1659)
+++ trunk/priv/guest-x86/ghelpers.c 2006-09-17 10:02:35 UTC (rev 1660)
@@ -853,6 +853,16 @@
binop(Iop_CmpLE32S, cc_dep1, cc_dep2));
}
=20
+ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondNLE)) {
+ /* long sub/cmp, then LE (signed not less than or equal)
+ --> test dst >s src=20
+ --> test !(dst <=3Ds src) */
+ return binop(Iop_Xor32,
+ unop(Iop_1Uto32,
+ binop(Iop_CmpLE32S, cc_dep1, cc_dep2)),
+ mkU32(1));
+ }
+
if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondBE)) {
/* long sub/cmp, then BE (unsigned less than or equal)
--> test dst <=3Du src */
|