From: Julian Seward Date: Sat, 23 Oct 2004 01:13:57 +0000 (+0000) Subject: Fast-case some more stuff. X-Git-Tag: svn/VALGRIND_3_0_1^2~932 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29ab2efe621dda9630a07b3a3cfc42c3a83e0b97;p=thirdparty%2Fvalgrind.git Fast-case some more stuff. git-svn-id: svn://svn.valgrind.org/vex/trunk@402 --- diff --git a/VEX/priv/guest-x86/ghelpers.c b/VEX/priv/guest-x86/ghelpers.c index 122c8ccd29..1717a7dc55 100644 --- a/VEX/priv/guest-x86/ghelpers.c +++ b/VEX/priv/guest-x86/ghelpers.c @@ -494,12 +494,23 @@ UInt calculate_eflags_all ( UInt cc_op, UInt cc_src_formal, UInt cc_dst_formal ) static UInt calculate_eflags_c ( UInt cc_op, UInt cc_src, UInt cc_dst ) { /* Fast-case some common ones. */ - if (cc_op == CC_OP_LOGICL) - return 0; - if (cc_op == CC_OP_DECL) - return cc_src; - if (cc_op == CC_OP_SUBL) - return ( ((UInt)cc_src) > ((UInt)cc_dst) ) ? CC_MASK_C : 0; + switch (cc_op) { + case CC_OP_LOGICL: case CC_OP_LOGICW: case CC_OP_LOGICB: + return 0; + case CC_OP_DECL: + return cc_src; + case CC_OP_SUBL: + return ( ((UInt)cc_src) > ((UInt)cc_dst) ) + ? CC_MASK_C : 0; + case CC_OP_ADDL: + return ( ((UInt)cc_src + (UInt)cc_dst) < ((UInt)cc_src) ) + ? CC_MASK_C : 0; + case CC_OP_SUBB: + return ( ((UInt)(cc_src & 0xFF)) > ((UInt)(cc_dst & 0xFF)) ) + ? CC_MASK_C : 0; + default: + break; + } # if PROFILE_EFLAGS if (!initted)