) ) ) );
assign( clz[0],
- unop( Iop_Clz64,
+ unop( Iop_ClzNat64,
mkexpr( extracted_bits[0] ) ) );
assign( extracted_bits[1],
mkexpr( cnt_extract_bits[1] )
) ) ) );
assign( clz[1],
- unop( Iop_Clz64,
+ unop( Iop_ClzNat64,
mkexpr( extracted_bits[1] ) ) );
putVReg( vRT_addr, binop( Iop_64HLtoV128,
}
break;
- case Iop_Clz32: case Iop_ClzNat32:
- case Iop_Clz64: case Iop_ClzNat64: {
+ case Iop_ClzNat32:
+ case Iop_ClzNat64: {
// cntlz is available even in the most basic (earliest) ppc
// variants, so it's safe to generate it unconditionally.
HReg r_src, r_dst;
- PPCUnaryOp op_clz = (op_unop == Iop_Clz32 || op_unop == Iop_ClzNat32)
+ PPCUnaryOp op_clz = (op_unop == Iop_ClzNat32)
? Pun_CLZ32 : Pun_CLZ64;
- if ((op_unop == Iop_Clz64 || op_unop == Iop_ClzNat64) && !mode64)
+ if ((op_unop == Iop_ClzNat64) && !mode64)
goto irreducible;
/* Count leading zeroes. */
r_dst = newVRegI(env);
return r_dst;
}
- //case Iop_Ctz32:
case Iop_CtzNat32:
- //case Iop_Ctz64:
case Iop_CtzNat64:
{
// Generate code using Clz, because we can't assume the host has
// creating a Ctz in ir_opt.c from smaller fragments.
PPCUnaryOp op_clz = Pun_CLZ64;
Int WS = 64;
- if (op_unop == Iop_Ctz32 || op_unop == Iop_CtzNat32) {
+ if (op_unop == Iop_CtzNat32) {
op_clz = Pun_CLZ32;
WS = 32;
}