Home | History | Annotate | Download | only in Analysis

Lines Matching refs:KnownZero

47                                     APInt &KnownZero, APInt &KnownOne,
56 unsigned BitWidth = KnownZero.getBitWidth();
68 KnownZero = APInt::getHighBitsSet(BitWidth, NLZ2);
74 unsigned BitWidth = KnownZero.getBitWidth();
95 KnownZero |= KnownZero2 & Mask;
100 KnownZero |= APInt::getLowBitsSet(BitWidth,
106 KnownZero |= LHSKnownZero & Mask;
111 if (!KnownZero.isNegative() && !KnownOne.isNegative()) {
116 KnownZero |= APInt::getSignBit(BitWidth);
123 KnownZero |= APInt::getSignBit(BitWidth);
133 APInt &KnownZero, APInt &KnownOne,
136 unsigned BitWidth = KnownZero.getBitWidth();
137 ComputeMaskedBits(Op1, KnownZero, KnownOne, TD, Depth+1);
139 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
150 bool isKnownNonNegativeOp1 = KnownZero.isNegative();
172 unsigned TrailZ = KnownZero.countTrailingOnes() +
174 unsigned LeadZ = std::max(KnownZero.countLeadingOnes() +
180 KnownZero = APInt::getLowBitsSet(BitWidth, TrailZ) |
189 KnownZero.setBit(BitWidth - 1);
190 else if (isKnownNegative && !KnownZero.isNegative())
194 void llvm::computeMaskedBitsLoad(const MDNode &Ranges, APInt &KnownZero) {
195 unsigned BitWidth = KnownZero.getBitWidth();
211 KnownZero = APInt::getHighBitsSet(BitWidth, MinLeadingZeros);
214 /// or one and return them in the KnownZero/KnownOne bit sets.
228 void llvm::ComputeMaskedBits(Value *V, APInt &KnownZero, APInt &KnownOne,
232 unsigned BitWidth = KnownZero.getBitWidth();
241 KnownZero.getBitWidth() == BitWidth &&
243 "V, Mask, KnownOne and KnownZero should have same BitWidth");
248 KnownZero = ~KnownOne;
255 KnownZero = APInt::getAllOnesValue(BitWidth);
264 KnownZero.setAllBits(); KnownOne.setAllBits();
265 APInt Elt(KnownZero.getBitWidth(), 0);
268 KnownZero &= ~Elt;
292 KnownZero = APInt::getLowBitsSet(BitWidth,
295 KnownZero.clearAllBits();
303 KnownZero.clearAllBits(); KnownOne.clearAllBits();
305 ComputeMaskedBits(GA->getAliasee(), KnownZero, KnownOne, TD, Depth+1);
324 KnownZero = APInt::getLowBitsSet(BitWidth, CountTrailingZeros_32(Align));
329 KnownZero.clearAllBits(); KnownOne.clearAllBits();
337 APInt KnownZero2(KnownZero), KnownOne2(KnownOne);
342 computeMaskedBitsLoad(*MD, KnownZero);
346 ComputeMaskedBits(I->getOperand(1), KnownZero, KnownOne, TD, Depth+1);
348 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
354 KnownZero |= KnownZero2;
358 ComputeMaskedBits(I->getOperand(1), KnownZero, KnownOne, TD, Depth+1);
360 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
364 KnownZero &= KnownZero2;
370 ComputeMaskedBits(I->getOperand(1), KnownZero, KnownOne, TD, Depth+1);
372 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
376 APInt KnownZeroOut = (KnownZero & KnownZero2) | (KnownOne & KnownOne2);
378 KnownOne = (KnownZero & KnownOne2) | (KnownOne & KnownZero2);
379 KnownZero
385 KnownZero, KnownOne, KnownZero2, KnownOne2, TD, Depth);
403 KnownZero = APInt::getHighBitsSet(BitWidth, LeadZ);
407 ComputeMaskedBits(I->getOperand(2), KnownZero, KnownOne, TD, Depth+1);
410 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
415 KnownZero &= KnownZero2;
444 KnownZero = KnownZero.zextOrTrunc(SrcBitWidth);
446 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
447 KnownZero = KnownZero.zextOrTrunc(BitWidth);
451 KnownZero |= APInt::getHighBitsSet(BitWidth, BitWidth - SrcBitWidth);
460 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
469 KnownZero = KnownZero.trunc(SrcBitWidth);
471 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
472 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
473 KnownZero = KnownZero.zext(BitWidth);
478 if (KnownZero[SrcBitWidth-1]) // Input sign bit known zero
479 KnownZero |= APInt::getHighBitsSet(BitWidth, BitWidth - SrcBitWidth);
488 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
489 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
490 KnownZero <<= ShiftAmt;
492 KnownZero |= APInt::getLowBitsSet(BitWidth, ShiftAmt); // low bits known 0
503 ComputeMaskedBits(I->getOperand(0), KnownZero,KnownOne, TD, Depth+1);
504 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
505 KnownZero = APIntOps::lshr(KnownZero, ShiftAmt);
508 KnownZero |= APInt::getHighBitsSet(BitWidth, ShiftAmt);
519 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
520 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
521 KnownZero = APIntOps::lshr(KnownZero, ShiftAmt);
525 if (KnownZero[BitWidth-ShiftAmt-1]) // New bits are known zero.
526 KnownZero |= HighBits;
535 KnownZero, KnownOne, KnownZero2, KnownOne2, TD,
542 KnownZero, KnownOne, KnownZero2, KnownOne2, TD,
554 KnownZero = KnownZero2 & LowBits;
560 KnownZero |= ~LowBits;
567 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
573 if (KnownZero.isNonNegative()) {
579 KnownZero.setBit(BitWidth - 1);
588 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD,
590 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
591 KnownZero |= ~LowBits;
599 ComputeMaskedBits(I->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
602 unsigned Leaders = std::max(KnownZero.countLeadingOnes(),
605 KnownZero = APInt::getHighBitsSet(BitWidth, Leaders);
616 KnownZero = APInt::getLowBitsSet(BitWidth, CountTrailingZeros_32(Align));
652 KnownZero = APInt::getLowBitsSet(BitWidth, TrailZ);
690 APInt KnownZero3(KnownZero), KnownOne3(KnownOne);
693 KnownZero = APInt::getLowBitsSet(BitWidth,
707 if (Depth < MaxDepth - 1 && !KnownZero && !KnownOne) {
712 KnownZero = APInt::getAllOnesValue(BitWidth);
724 KnownZero &= KnownZero2;
728 if (!KnownZero && !KnownOne)
744 KnownZero = APInt::getHighBitsSet(BitWidth, BitWidth - LowBits);
749 KnownZero = APInt::getHighBitsSet(BitWidth, BitWidth - LowBits);
754 KnownZero = APInt::getHighBitsSet(64, 32);
769 II->getArgOperand(1), false, KnownZero,
775 II->getArgOperand(1), false, KnownZero,
781 KnownZero, KnownOne,
792 void llvm::ComputeSignBit(Value *V, bool &KnownZero, bool &KnownOne,
796 KnownZero = false;
804 KnownZero = ZeroBits[BitWidth - 1];
982 APInt KnownZero(BitWidth, 0);
984 ComputeMaskedBits(X, KnownZero, KnownOne, TD, Depth);
1021 APInt KnownZero(BitWidth, 0);
1026 ComputeMaskedBits(X, KnownZero, KnownOne, TD, Depth);
1031 ComputeMaskedBits(Y, KnownZero, KnownOne, TD, Depth);
1059 APInt KnownZero(BitWidth, 0);
1061 ComputeMaskedBits(V, KnownZero, KnownOne, TD, Depth);
1076 APInt KnownZero(Mask.getBitWidth(), 0), KnownOne(Mask.getBitWidth(), 0);
1077 ComputeMaskedBits(V, KnownZero, KnownOne, TD, Depth);
1078 assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
1079 return (KnownZero & Mask) == Mask;
1167 APInt KnownZero(TyBits, 0), KnownOne(TyBits, 0);
1168 ComputeMaskedBits(U->getOperand(0), KnownZero, KnownOne, TD, Depth+1);
1172 if ((KnownZero | APInt(TyBits, 1)).isAllOnesValue())
1177 if (KnownZero.isNegative())
1192 APInt KnownZero(TyBits, 0), KnownOne(TyBits, 0);
1193 ComputeMaskedBits(U->getOperand(1), KnownZero, KnownOne, TD, Depth+1);
1196 if ((KnownZero | APInt(TyBits, 1)).isAllOnesValue())
1201 if (KnownZero.isNegative())
1237 APInt KnownZero(TyBits, 0), KnownOne(TyBits, 0);
1239 ComputeMaskedBits(V, KnownZero, KnownOne, TD, Depth);
1241 if (KnownZero.isNegative()) { // sign bit is 0
1242 Mask = KnownZero;
1957 APInt KnownZero(BitWidth, 0);
1959 ComputeMaskedBits(Op, KnownZero, KnownOne, TD);
1960 return !!KnownZero;