|
From: Julian S. <se...@so...> - 2019-11-11 16:07:34
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=76e6c9df8733bacbff75aeb0f74ffa90d7867023 commit 76e6c9df8733bacbff75aeb0f74ffa90d7867023 Author: Julian Seward <js...@ac...> Date: Mon Nov 11 17:06:54 2019 +0100 iselFltExpr_wrk: handle Iex_ITE, presumably caused by newly-created guarding machinery. Diff: --- VEX/priv/host_amd64_isel.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/VEX/priv/host_amd64_isel.c b/VEX/priv/host_amd64_isel.c index a389e81..8dc3068 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"); } |