|
From: <sv...@va...> - 2009-11-22 23:38:18
|
Author: sewardj
Date: 2009-11-22 23:38:01 +0000 (Sun, 22 Nov 2009)
New Revision: 1928
Log:
Specialise "S after 32-bit SUB/CMP"; improves performance by about 2%
for Memcheck running bzip2.
Modified:
trunk/priv/guest_amd64_helpers.c
Modified: trunk/priv/guest_amd64_helpers.c
===================================================================
--- trunk/priv/guest_amd64_helpers.c 2009-11-13 16:55:17 UTC (rev 1927)
+++ trunk/priv/guest_amd64_helpers.c 2009-11-22 23:38:01 UTC (rev 1928)
@@ -1014,6 +1014,16 @@
binop(Iop_Shl64,cc_dep1,mkU8(32))));
}
+ if (isU64(cc_op, AMD64G_CC_OP_SUBL) && isU64(cond, AMD64CondS)) {
+ /* long sub/cmp, then S (negative) --> test (dst-src <s 0) */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpLT64S,
+ binop(Iop_Sub64,
+ binop(Iop_Shl64, cc_dep1, mkU8(32)),
+ binop(Iop_Shl64, cc_dep2, mkU8(32))),
+ mkU64(0)));
+ }
+
/*---------------- SUBW ----------------*/
if (isU64(cc_op, AMD64G_CC_OP_SUBW) && isU64(cond, AMD64CondZ)) {
|