{
UChar rs = (cins >> 16) & 0x1F;
UChar rt = (cins >> 21) & 0x1F;
- IRTemp t1;
switch ((cins >> 9) & 0x7F) {
case nano_POOL32Axf4_CLO: { /* clo */
DIP("clo r%u, r%u", rt, rs);
- t1 = newTemp(Ity_I1);
- assign(t1, binop(Iop_CmpEQ32, getIReg(rs), mkU32(0xffffffff)));
- putIReg(rt, IRExpr_ITE(mkexpr(t1),
- mkU32(0x00000020),
- unop(Iop_Clz32,
- unop(Iop_Not32, getIReg(rs)))));
+ putIReg(rt, unop(Iop_ClzNat32, unop(Iop_Not32, getIReg(rs))));
break;
}
case nano_POOL32Axf4_CLZ: { /* clz */
DIP("clz r%u, r%u", rt, rs);
- putIReg(rt, unop(Iop_Clz32, getIReg(rs)));
+ putIReg(rt, unop(Iop_ClzNat32, getIReg(rs)));
break;
}
}
return r_dst;
}
- case Iop_Clz32: {
+ case Iop_ClzNat32: {
HReg r_dst = newVRegI(env);
HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
addInstr(env, NANOMIPSInstr_Unary(NMun_CLZ, r_dst, r_src));