|
From: <sv...@va...> - 2005-12-23 01:06:39
|
Author: cerion
Date: 2005-12-23 01:06:35 +0000 (Fri, 23 Dec 2005)
New Revision: 1505
Log:
Deal with backend case of 1Sto64
Modified:
trunk/priv/host-ppc32/isel.c
Modified: trunk/priv/host-ppc32/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc32/isel.c 2005-12-23 00:55:09 UTC (rev 1504)
+++ trunk/priv/host-ppc32/isel.c 2005-12-23 01:06:35 UTC (rev 1505)
@@ -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 =3D newVRegI(env);
+ PPCCondCode cond =3D 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 =3D (op_unop =3D=3D Iop_Clz32) ? Pun_CLZ32 :
|