From 4b67fa792f97331cdaaa7c62e11f03949ccbfea1 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Fri, 16 Nov 2007 02:30:38 +0000 Subject: [PATCH] Implement SALC. Fixes #147628. git-svn-id: svn://svn.valgrind.org/vex/trunk@1796 --- VEX/priv/guest-x86/toIR.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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; -- 2.47.2