From: Cerion Armour-Brown Date: Fri, 23 Dec 2005 01:06:35 +0000 (+0000) Subject: Deal with backend case of 1Sto64 X-Git-Tag: svn/VALGRIND_3_2_3^2~149 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f05e1b3022450bb10d08e7c63c804b55de0784d;p=thirdparty%2Fvalgrind.git Deal with backend case of 1Sto64 git-svn-id: svn://svn.valgrind.org/vex/trunk@1505 --- diff --git a/VEX/priv/host-ppc32/isel.c b/VEX/priv/host-ppc32/isel.c index 0ea8577596..13a5c6d85a 100644 --- a/VEX/priv/host-ppc32/isel.c +++ b/VEX/priv/host-ppc32/isel.c @@ -1582,6 +1582,17 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e ) r_dst, r_dst, PPCRH_Imm(False,31))); return r_dst; } + case Iop_1Sto64: { + /* could do better than this, but for now ... */ + HReg r_dst = newVRegI(env); + PPCCondCode cond = iselCondCode(env, e->Iex.Unop.arg); + addInstr(env, PPCInstr_Set(cond,r_dst)); + addInstr(env, PPCInstr_Shft(Pshft_SHL, False/*64bit shift*/, + r_dst, r_dst, PPCRH_Imm(False,63))); + addInstr(env, PPCInstr_Shft(Pshft_SAR, False/*64bit shift*/, + r_dst, r_dst, PPCRH_Imm(False,63))); + return r_dst; + } case Iop_Clz32: case Iop_Clz64: { PPCUnaryOp op_clz = (op_unop == Iop_Clz32) ? Pun_CLZ32 :