Deal with backend case of 1Sto64
git-svn-id: svn://svn.valgrind.org/vex/trunk@1505 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/host-ppc32/isel.c b/priv/host-ppc32/isel.c
index 0ea8577..13a5c6d 100644
--- a/priv/host-ppc32/isel.c
+++ b/priv/host-ppc32/isel.c
@@ -1582,6 +1582,17 @@
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 :