|
From: <sv...@va...> - 2006-05-25 01:04:29
|
Author: sewardj
Date: 2006-05-25 02:04:05 +0100 (Thu, 25 May 2006)
New Revision: 1624
Log:
Yet another %eflags folding rule - this one for performance reasons.
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-05-22 12:41:19 UTC (rev 1623)
+++ trunk/priv/guest-x86/ghelpers.c 2006-05-25 01:04:05 UTC (rev 1624)
@@ -935,6 +935,11 @@
return unop(Iop_1Uto32,binop(Iop_CmpEQ32, cc_dep1, mkU32(0)));
}
=20
+ if (isU32(cc_op, X86G_CC_OP_LOGICL) && isU32(cond, X86CondNZ)) {
+ /* long and/or/xor, then NZ --> test dst!=3D0 */
+ return unop(Iop_1Uto32,binop(Iop_CmpNE32, cc_dep1, mkU32(0)));
+ }
+
if (isU32(cc_op, X86G_CC_OP_LOGICL) && isU32(cond, X86CondLE)) {
/* long and/or/xor, then LE
This is pretty subtle. LOGIC sets SF and ZF according to th=
e
|