]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Enable 'smulh'.
authorJulian Seward <jseward@acm.org>
Wed, 7 May 2014 09:41:40 +0000 (09:41 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 7 May 2014 09:41:40 +0000 (09:41 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2856

VEX/priv/guest_arm64_toIR.c
VEX/priv/host_arm64_defs.c
VEX/priv/host_arm64_isel.c

index 55ca7e24d11d2dec752be71cbdbf5eb844454070..57a2d4f8e71ba85b844044030a32ce166a8d7b04 100644 (file)
@@ -2373,8 +2373,7 @@ Bool dis_ARM64_data_processing_register(/*MB_OUT*/DisResult* dres,
       10011011 0  10 Rm 011111 Rn Rd   SMULH Xd,Xn,Xm
    */
    if (INSN(31,24) == BITS8(1,0,0,1,1,0,1,1)
-       && INSN(22,21) == BITS2(1,0) && INSN(15,10) == BITS6(0,1,1,1,1,1)
-       && INSN(23,23) == 1/*ATC*/) {
+       && INSN(22,21) == BITS2(1,0) && INSN(15,10) == BITS6(0,1,1,1,1,1)) {
       Bool isU = INSN(23,23) == 1;
       UInt mm  = INSN(20,16);
       UInt nn  = INSN(9,5);
index 8aa27e62524820754bdd8e3d9b2798e538a4564c..3bc52172f86058bf0d90c92b2e2778031199ae81 100644 (file)
@@ -4591,9 +4591,9 @@ Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc,
             case ARM64mul_ZX:
                *p++ = X_3_8_5_6_5_5(X100, X11011110, mm, X011111, nn, dd);
                goto done;
-            //case ARM64mul_SX:
-            //   *p++ = X_3_8_5_6_5_5(X100, X11011010, mm, X011111, nn, dd);
-            //   goto done;
+            case ARM64mul_SX:
+               *p++ = X_3_8_5_6_5_5(X100, X11011010, mm, X011111, nn, dd);
+               goto done;
             case ARM64mul_PLAIN:
                *p++ = X_3_8_5_6_5_5(X100, X11011000, mm, X011111, nn, dd);
                goto done;
index c54c973365ea6bcfa654c095123913a8ceeabfc3..eb06cdfe9d3b777db5827601e3e2e1404091b588 100644 (file)
@@ -2408,7 +2408,7 @@ static void iselInt128Expr_wrk ( HReg* rHi, HReg* rLo,
       switch (e->Iex.Binop.op) {
          /* 64 x 64 -> 128 multiply */
          case Iop_MullU64:
-         /*case Iop_MullS64:*/ {
+         case Iop_MullS64: {
             Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
             HReg argL  = iselIntExpr_R(env, e->Iex.Binop.arg1);
             HReg argR  = iselIntExpr_R(env, e->Iex.Binop.arg2);