Lines Matching defs:KnownBits
73 #include "llvm/Support/KnownBits.h"
150 KnownBits &Known, unsigned Depth,
153 void llvm::computeKnownBits(const Value *V, KnownBits &Known, unsigned Depth,
164 void llvm::computeKnownBits(const Value *V, KnownBits &Known,
173 KnownBits llvm::computeKnownBits(const Value *V, const DataLayout &DL,
181 KnownBits llvm::computeKnownBits(const Value *V, const APInt &DemandedElts,
263 return KnownBits::haveNoCommonBitsSet(LHSCache.getKnownBits(SQ),
304 KnownBits Known = computeKnownBits(V, Depth, SQ);
335 KnownBits Known(Mask.getBitWidth());
370 KnownBits &KnownOut, KnownBits &Known2,
380 KnownOut = KnownBits::computeForAddSub(Add, NSW, NUW, Known2, KnownOut);
385 KnownBits &Known, KnownBits &Known2,
407 KnownBits One = KnownBits::makeConstant(APInt(Known.getBitWidth(), 1));
408 isKnownNonNegative = KnownBits::sgt(Known, One).value_or(false) ||
409 KnownBits::sgt(Known2, One).value_or(false);
426 Known = KnownBits::mul(Known, Known2, SelfMultiply);
440 KnownBits &Known) {
678 Value *LHS, Value *RHS, KnownBits &Known,
713 Known = Known.unionWith(KnownBits::makeConstant(*C));
731 Known = Known.unionWith(KnownBits::makeConstant(*C ^ *Mask));
737 KnownBits RHSKnown = KnownBits::makeConstant(*C);
744 KnownBits RHSKnown = KnownBits::makeConstant(*C);
790 KnownBits &Known,
799 KnownBits DstKnown(LHS->getType()->getScalarSizeInBits());
809 KnownBits &Known, unsigned Depth,
814 KnownBits Known2(Known.getBitWidth());
815 KnownBits Known3(Known.getBitWidth());
830 void llvm::computeKnownBitsFromContext(const Value *V, KnownBits &Known,
938 const Operator *I, const APInt &DemandedElts, KnownBits &Known,
939 KnownBits &Known2, unsigned Depth, const SimplifyQuery &Q,
940 function_ref<KnownBits(const KnownBits &, const KnownBits &, bool)> KF) {
952 static KnownBits
954 const KnownBits &KnownLHS, const KnownBits &KnownRHS,
957 KnownBits KnownOut(BitWidth);
993 const KnownBits &XBits = I->getOperand(0) == X ? KnownLHS : KnownRHS;
1011 KnownBits KnownY(BitWidth);
1023 static KnownBits computeKnownBitsForHorizontalOperation(
1026 const function_ref<KnownBits(const KnownBits &, const KnownBits &)>
1050 KnownBits llvm::analyzeKnownBitsFromAndXorOr(const Operator *I,
1051 const KnownBits &KnownLHS,
1052 const KnownBits &KnownRHS,
1082 void llvm::adjustKnownBitsForSelectArm(KnownBits &Known, Value *Cond,
1090 KnownBits CondRes(Known.getBitWidth());
1167 KnownBits &Known) {
1176 KnownBits &Known, unsigned Depth,
1180 KnownBits Known2(BitWidth);
1217 KnownBits::udiv(Known, Known2, Q.IIQ.isExact(cast<BinaryOperator>(I)));
1224 KnownBits::sdiv(Known, Known2, Q.IIQ.isExact(cast<BinaryOperator>(I)));
1229 KnownBits Res(Known.getBitWidth());
1300 Known = Known.intersectWith(KnownBits::makeConstant(
1304 Known = Known.intersectWith(KnownBits::makeConstant(
1354 KnownBits KnownSrc(SubBitWidth);
1378 auto KF = [NUW, NSW](const KnownBits &KnownVal, const KnownBits &KnownAmt,
1380 return KnownBits::shl(KnownVal, KnownAmt, NUW, NSW, ShAmtNonZero);
1392 auto KF = [Exact](const KnownBits &KnownVal, const KnownBits &KnownAmt,
1394 return KnownBits::lshr(KnownVal, KnownAmt, ShAmtNonZero, Exact);
1406 auto KF = [Exact](const KnownBits &KnownVal, const KnownBits &KnownAmt,
1408 return KnownBits::ashr(KnownVal, KnownAmt, ShAmtNonZero, Exact);
1431 Known = KnownBits::srem(Known, Known2);
1437 Known = KnownBits::urem(Known, Known2);
1487 KnownBits IndexBits(IndexBitWidth);
1491 KnownBits ScalingFactor(IndexBitWidth);
1506 KnownBits::makeConstant(APInt(IndexBitWidth, TypeSizeInBytes));
1508 IndexBits = KnownBits::mul(IndexBits, ScalingFactor);
1517 Known = KnownBits::add(Known, IndexBits);
1520 KnownBits Index = KnownBits::makeConstant(AccConstIndices);
1521 Known = KnownBits::add(Known, Index);
1608 KnownBits Known3(BitWidth);
1694 Known2 = KnownBits(BitWidth);
1721 KnownBits KnownUnion = Known2.unionWith(CR.toKnownBits());
1835 KnownBits Known3(BitWidth);
1848 Known = KnownBits::uadd_sat(Known, Known2);
1853 Known = KnownBits::usub_sat(Known, Known2);
1858 Known = KnownBits::sadd_sat(Known, Known2);
1863 Known = KnownBits::ssub_sat(Known, Known2);
1898 Known = KnownBits::umin(Known, Known2);
1903 Known = KnownBits::umax(Known, Known2);
1908 Known = KnownBits::smin(Known, Known2);
1914 Known = KnownBits::smax(Known, Known2);
1921 Known2 = KnownBits(Mask->getType()->getScalarSizeInBits());
1932 Known = KnownBits::mulhs(Known, Known2);
1939 Known = KnownBits::mulhu(Known, Known2);
1950 [](const KnownBits &KnownLHS, const KnownBits &KnownRHS) {
1951 return KnownBits::add(KnownLHS, KnownRHS);
1958 Q, KnownBits::sadd_sat);
1967 [](const KnownBits &KnownLHS, const KnownBits &KnownRHS) {
1968 return KnownBits::sub(KnownLHS, KnownRHS);
1975 Q, KnownBits::ssub_sat);
2129 KnownBits llvm::computeKnownBits(const Value *V, const APInt &DemandedElts,
2131 KnownBits Known(getBitWidth(V->getType(), Q.DL));
2138 KnownBits llvm::computeKnownBits(const Value *V, unsigned Depth,
2140 KnownBits Known(getBitWidth(V->getType(), Q.DL));
2161 KnownBits &Known, unsigned Depth,
2201 Known = KnownBits::makeConstant(*C);
2495 KnownBits LHSBits(BitWidth);
2498 KnownBits RHSBits(BitWidth);
2808 KnownBits XKnown = computeKnownBits(X, DemandedElts, Depth, Q);
2809 KnownBits YKnown = computeKnownBits(Y, DemandedElts, Depth, Q);
2840 return KnownBits::add(XKnown, YKnown, NSW, NUW).isNonZero();
2870 KnownBits XKnown = computeKnownBits(X, DemandedElts, Depth, Q);
2874 KnownBits YKnown = computeKnownBits(Y, DemandedElts, Depth, Q);
2889 const KnownBits &KnownVal) {
2918 KnownBits KnownCnt =
3035 KnownBits Known(BitWidth);
3051 KnownBits Known =
3065 KnownBits XKnown =
3072 KnownBits YKnown =
3080 std::optional<bool> XUgeY = KnownBits::uge(XKnown, YKnown);
3324 const KnownBits &OpKnown) {
3332 KnownBits Op1Known =
3337 KnownBits Op0Known =
3348 KnownBits Op1Known =
3352 KnownBits Op0Known =
3390 KnownBits Known(BitWidth);
3833 KnownBits Known1 = computeKnownBits(V1, DemandedElts, Depth, Q);
3835 KnownBits Known2 = computeKnownBits(V2, DemandedElts, Depth, Q);
4072 KnownBits Known(TyBits);
4099 KnownBits Known(TyBits);
4246 KnownBits Known(TyBits);
5577 KnownBits ExponentKnownBits(BitWidth);
6125 KnownBits Bits(Ty->getScalarSizeInBits());
6146 // Build KnownBits representing Inf and check if it must be equal or
6148 auto InfKB = KnownBits::makeConstant(
6151 if (const auto InfResult = KnownBits::eq(Bits, InfKB)) {
6158 // Build KnownBits representing Zero and check if it must be equal or
6160 auto ZeroKB = KnownBits::makeConstant(
6163 if (const auto ZeroResult = KnownBits::eq(Bits, ZeroKB)) {
7213 KnownBits LHSKnown = computeKnownBits(LHS, /*Depth=*/0, SQ);
7214 KnownBits RHSKnown = computeKnownBits(RHS, /*Depth=*/0, SQ);
7256 KnownBits LHSKnown = computeKnownBits(LHS, /*Depth=*/0, SQ);
7257 KnownBits RHSKnown = computeKnownBits(RHS, /*Depth=*/0, SQ);
7324 KnownBits AddKnown(LHSRange.getBitWidth());