From: Julian Seward Date: Mon, 11 Nov 2019 16:06:54 +0000 (+0100) Subject: iselFltExpr_wrk: handle Iex_ITE, presumably caused by newly-created guarding machinery. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76e6c9df8733bacbff75aeb0f74ffa90d7867023;p=thirdparty%2Fvalgrind.git iselFltExpr_wrk: handle Iex_ITE, presumably caused by newly-created guarding machinery. --- diff --git a/VEX/priv/host_amd64_isel.c b/VEX/priv/host_amd64_isel.c index a389e81781..8dc30684bb 100644 --- a/VEX/priv/host_amd64_isel.c +++ b/VEX/priv/host_amd64_isel.c @@ -2815,6 +2815,19 @@ static HReg iselFltExpr_wrk ( ISelEnv* env, const IRExpr* e ) return dst; } + if (e->tag == Iex_ITE) { // VFD + HReg r1, r0, dst; + vassert(ty == Ity_F32); + vassert(typeOfIRExpr(env->type_env,e->Iex.ITE.cond) == Ity_I1); + r1 = iselFltExpr(env, e->Iex.ITE.iftrue); + r0 = iselFltExpr(env, e->Iex.ITE.iffalse); + dst = newVRegV(env); + addInstr(env, mk_vMOVsd_RR(r1,dst)); + AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond); + addInstr(env, AMD64Instr_SseCMov(cc ^ 1, r0, dst)); + return dst; + } + ppIRExpr(e); vpanic("iselFltExpr_wrk"); }