]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Implement SALC. Fixes #147628.
authorJulian Seward <jseward@acm.org>
Fri, 16 Nov 2007 02:30:38 +0000 (02:30 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 16 Nov 2007 02:30:38 +0000 (02:30 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1796

VEX/priv/guest-x86/toIR.c

index b351ed05f3e7bc278df4771ba4a35144704c5b01..2717f512d4edeefa699d338433d6b5227548360a 100644 (file)
@@ -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;