// (shl X, C1) & C2 == 0 iff (X & C2 >>u C1) == 0
if (ConstantUInt *SA = dyn_cast<ConstantUInt>(I->getOperand(1)))
return ComputeMaskedNonZeroBits(I->getOperand(0),Mask >> SA->getValue(),
- Depth+1);
+ Depth+1) << SA->getValue();
break;
case Instruction::Shr:
// (ushr X, C1) & C2 == 0 iff (-1 >> C1) & C2 == 0
if (I->getType()->isUnsigned()) {
Mask <<= SA->getValue();
Mask &= I->getType()->getIntegralTypeMask();
- return ComputeMaskedNonZeroBits(I->getOperand(0), Mask, Depth+1);
+ return ComputeMaskedNonZeroBits(I->getOperand(0), Mask, Depth+1)
+ >> SA->getValue();
}
break;
}