]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
mips32: add Iex_ITE implementation for floating point numbers
authorPetar Jovanovic <mips32r2@gmail.com>
Mon, 22 May 2017 12:21:18 +0000 (12:21 +0000)
committerPetar Jovanovic <mips32r2@gmail.com>
Mon, 22 May 2017 12:21:18 +0000 (12:21 +0000)
Add missing case in Iex_ITE implementation for floating point numbers on
mips32.

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

VEX/priv/host_mips_isel.c

index 0dff8a67e14645c6cfa6c1359c3a4d0fec514e98..c06953a7656945a364502621584a1854b21fc280 100644 (file)
@@ -3385,18 +3385,17 @@ static HReg iselFltExpr_wrk(ISelEnv * env, IRExpr * e)
 
    /* --------- ITE --------- */
    if (e->tag == Iex_ITE) {
-      if (ty == Ity_F64
-          && typeOfIRExpr(env->type_env, e->Iex.ITE.cond) == Ity_I1) {
-         vassert(mode64);
-         HReg r0 = iselFltExpr(env, e->Iex.ITE.iffalse);
-         HReg r1 = iselFltExpr(env, e->Iex.ITE.iftrue);
-         HReg r_cond = iselWordExpr_R(env, e->Iex.ITE.cond);
-         HReg r_dst = newVRegF(env);
-         addInstr(env, MIPSInstr_FpUnary(Mfp_MOVD, r_dst, r0));
-         addInstr(env, MIPSInstr_MoveCond(MFpMoveCond_movnd, r_dst, r1,
-                                            r_cond));
-         return r_dst;
-      }
+      vassert(typeOfIRExpr(env->type_env, e->Iex.ITE.cond) == Ity_I1);
+      HReg r0 = iselFltExpr(env, e->Iex.ITE.iffalse);
+      HReg r1 = iselFltExpr(env, e->Iex.ITE.iftrue);
+      HReg r_cond = iselWordExpr_R(env, e->Iex.ITE.cond);
+      HReg r_dst = newVRegF(env);
+      addInstr(env, MIPSInstr_FpUnary((ty == Ity_F64) ? Mfp_MOVD : Mfp_MOVS,
+                                      r_dst, r0));
+      addInstr(env, MIPSInstr_MoveCond((ty == Ity_F64) ? MFpMoveCond_movnd :
+                                                         MFpMoveCond_movns,
+                                       r_dst, r1, r_cond));
+      return r_dst;
    }
 
    vex_printf("iselFltExpr(mips): No such tag(0x%x)\n", e->tag);