Lines Matching defs:BitsToClear
1011 /// (in BitsToClear) which indicates that the value it computes is correct for
1012 /// the zero extend, but that the additional BitsToClear bits need to be zero'd
1019 /// CanEvaluateZExtd for the 'lshr' will return true, and BitsToClear will be
1025 static bool canEvaluateZExtd(Value *V, Type *Ty, unsigned &BitsToClear,
1027 BitsToClear = 0;
1046 if (!canEvaluateZExtd(I->getOperand(0), Ty, BitsToClear, IC, CxtI) ||
1050 if (BitsToClear == 0 && Tmp == 0)
1054 // other side, BitsToClear is ok.
1060 APInt::getHighBitsSet(VSize, BitsToClear),
1062 // If this is an And instruction and all of the BitsToClear are
1063 // known to be zero we can reset BitsToClear.
1065 BitsToClear = 0;
1070 // Otherwise, we don't know how to analyze this BitsToClear case yet.
1075 // upper bits we can reduce BitsToClear by the shift amount.
1078 if (!canEvaluateZExtd(I->getOperand(0), Ty, BitsToClear, IC, CxtI))
1081 BitsToClear = ShiftAmt < BitsToClear ? BitsToClear - ShiftAmt : 0;
1091 if (!canEvaluateZExtd(I->getOperand(0), Ty, BitsToClear, IC, CxtI))
1093 BitsToClear += Amt->getZExtValue();
1094 if (BitsToClear > V->getType()->getScalarSizeInBits())
1095 BitsToClear = V->getType()->getScalarSizeInBits();
1103 !canEvaluateZExtd(I->getOperand(2), Ty, BitsToClear, IC, CxtI) ||
1104 // TODO: If important, we could handle the case when the BitsToClear are
1106 Tmp != BitsToClear)
1115 if (!canEvaluateZExtd(PN->getIncomingValue(0), Ty, BitsToClear, IC, CxtI))
1119 // TODO: If important, we could handle the case when the BitsToClear
1121 Tmp != BitsToClear)
1157 unsigned BitsToClear;
1159 canEvaluateZExtd(Src, DestTy, BitsToClear, *this, &Zext)) {
1160 assert(BitsToClear <= SrcTy->getScalarSizeInBits() &&
1176 uint32_t SrcBitsKept = SrcTy->getScalarSizeInBits() - BitsToClear;