]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Iop_1Uto64 was not handled in the ppc insn selector.
authorFlorian Krohm <florian@eich-krohm.de>
Wed, 16 Nov 2011 03:54:12 +0000 (03:54 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Wed, 16 Nov 2011 03:54:12 +0000 (03:54 +0000)
Patch by Maynard Johnson (maynardj@us.ibm.com). Fixes #286374

git-svn-id: svn://svn.valgrind.org/vex/trunk@2233

VEX/priv/host_ppc_isel.c

index 642fc8186ce0a95e0f9363d10121b758fa789960..07b5854c10c3a2dbbe0ef66a05b95f5a2fb32896 100644 (file)
@@ -1698,13 +1698,16 @@ static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e )
             return rLo; /* similar stupid comment to the above ... */
          }
          break;
+      case Iop_1Uto64:
       case Iop_1Uto32:
-      case Iop_1Uto8: {
-         HReg        r_dst = newVRegI(env);
-         PPCCondCode cond  = iselCondCode(env, e->Iex.Unop.arg);
-         addInstr(env, PPCInstr_Set(cond,r_dst));
-         return r_dst;
-      }
+      case Iop_1Uto8:
+         if ((op_unop != Iop_1Uto64) || mode64) {
+            HReg        r_dst = newVRegI(env);
+            PPCCondCode cond  = iselCondCode(env, e->Iex.Unop.arg);
+            addInstr(env, PPCInstr_Set(cond,r_dst));
+            return r_dst;
+         }
+         break;
       case Iop_1Sto8:
       case Iop_1Sto16:
       case Iop_1Sto32: {