From: Julian Seward Date: Fri, 16 Nov 2007 02:30:38 +0000 (+0000) Subject: Implement SALC. Fixes #147628. X-Git-Tag: svn/VALGRIND_3_3_1^2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b67fa792f97331cdaaa7c62e11f03949ccbfea1;p=thirdparty%2Fvalgrind.git Implement SALC. Fixes #147628. git-svn-id: svn://svn.valgrind.org/vex/trunk@1796 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index b351ed05f3..2717f512d4 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -12207,6 +12207,19 @@ DisResult disInstr_X86_WRK ( stmt( IRStmt_Put( OFFB_CC_NDEP, mkU32(0) )); break; + case 0xD6: /* SALC */ + t0 = newTemp(Ity_I32); + t1 = newTemp(Ity_I32); + assign( t0, binop(Iop_And32, + mk_x86g_calculate_eflags_c(), + mkU32(1)) ); + assign( t1, binop(Iop_Sar32, + binop(Iop_Shl32, mkexpr(t0), mkU8(31)), + mkU8(31)) ); + putIReg(1, R_EAX, unop(Iop_32to8, mkexpr(t1)) ); + DIP("salc\n"); + break; + /* REPNE prefix insn */ case 0xF2: { Addr32 eip_orig = guest_EIP_bbstart + delta - 1;