]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
mips: implement Iop_8Uto64 in iselInt64Expr
authorPetar Jovanovic <mips32r2@gmail.com>
Thu, 4 Jul 2013 00:39:37 +0000 (00:39 +0000)
committerPetar Jovanovic <mips32r2@gmail.com>
Thu, 4 Jul 2013 00:39:37 +0000 (00:39 +0000)
Iop_8Uto64 was missing in iselInt64Expr.
The change should resolve Bugzilla #319505.

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

VEX/priv/host_mips_isel.c

index 404b8da1722a2f099fb162de76e0bbaf936de952..7be6c93f9adada26de0a0e2ca6762821c3b0fd9b 100644 (file)
@@ -2278,6 +2278,20 @@ static void iselInt64Expr_wrk(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e)
             return;
          }
 
+         /* 8Uto64(e) */
+         case Iop_8Uto64: {
+            HReg tLo = newVRegI(env);
+            HReg tHi = newVRegI(env);
+            HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
+            addInstr(env, MIPSInstr_Alu(Malu_AND, tLo, src,
+                                        MIPSRH_Imm(False, 0xFF)));
+            addInstr(env, MIPSInstr_Alu(Malu_ADD, tHi, hregMIPS_GPR0(mode64),
+                                        MIPSRH_Reg(hregMIPS_GPR0(mode64))));
+            *rHi = tHi;
+            *rLo = tLo;
+            return;
+         }
+
          /* 32Uto64(e) */
          case Iop_32Uto64: {
             HReg tLo = newVRegI(env);