From: Petar Jovanovic Date: Mon, 22 May 2017 12:21:18 +0000 (+0000) Subject: mips32: add Iex_ITE implementation for floating point numbers X-Git-Tag: svn/VALGRIND_3_13_0^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62bd4c100435dac902a7f00b67131b614089786c;p=thirdparty%2Fvalgrind.git mips32: add Iex_ITE implementation for floating point numbers Add missing case in Iex_ITE implementation for floating point numbers on mips32. git-svn-id: svn://svn.valgrind.org/vex/trunk@3380 --- diff --git a/VEX/priv/host_mips_isel.c b/VEX/priv/host_mips_isel.c index 0dff8a67e1..c06953a765 100644 --- a/VEX/priv/host_mips_isel.c +++ b/VEX/priv/host_mips_isel.c @@ -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);