Lines Matching refs:Q

151                              const SimplifyQuery &Q);
154 const SimplifyQuery &Q) { in computeKnownBits() argument
161 ::computeKnownBits(V, DemandedElts, Known, Depth, Q); in computeKnownBits()
262 const SimplifyQuery &Q);
274 unsigned Depth, const SimplifyQuery &Q);
277 const SimplifyQuery &Q);
307 const SimplifyQuery &Q);
326 unsigned Depth, const SimplifyQuery &Q);
329 const SimplifyQuery &Q) { in ComputeNumSignBits() argument
333 return ComputeNumSignBits(V, DemandedElts, Depth, Q); in ComputeNumSignBits()
355 unsigned Depth, const SimplifyQuery &Q) { in computeKnownBitsAddSub() argument
356 computeKnownBits(Op1, DemandedElts, KnownOut, Depth + 1, Q); in computeKnownBitsAddSub()
363 computeKnownBits(Op0, DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsAddSub()
370 const SimplifyQuery &Q) { in computeKnownBitsMul() argument
371 computeKnownBits(Op1, DemandedElts, Known, Depth + 1, Q); in computeKnownBitsMul()
372 computeKnownBits(Op0, DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsMul()
402 isGuaranteedNotToBeUndef(Op0, Q.AC, Q.CxtI, Q.DT, Depth + 1); in computeKnownBitsMul()
571 static bool isKnownNonZeroFromAssume(const Value *V, const SimplifyQuery &Q) { in isKnownNonZeroFromAssume() argument
574 if (!Q.AC || !Q.CxtI) in isKnownNonZeroFromAssume()
577 for (AssumptionCache::ResultElem &Elem : Q.AC->assumptionsFor(V)) { in isKnownNonZeroFromAssume()
582 assert(I->getFunction() == Q.CxtI->getFunction() && in isKnownNonZeroFromAssume()
593 !NullPointerIsDefined(Q.CxtI->getFunction(), in isKnownNonZeroFromAssume()
595 isValidAssumeForContext(I, Q.CxtI, Q.DT)) in isKnownNonZeroFromAssume()
611 if (cmpExcludesZero(Pred, RHS) && isValidAssumeForContext(I, Q.CxtI, Q.DT)) in isKnownNonZeroFromAssume()
620 const SimplifyQuery &Q) { in computeKnownBitsFromCmp() argument
645 m_CombineOr(m_Specific(V), m_PtrToIntSameSize(Q.DL, m_Specific(V))); in computeKnownBitsFromCmp()
710 unsigned Depth, const SimplifyQuery &Q) { in computeKnownBitsFromContext() argument
711 if (!Q.CxtI) in computeKnownBitsFromContext()
714 if (Q.DC && Q.DT) { in computeKnownBitsFromContext()
716 for (BranchInst *BI : Q.DC->conditionsFor(V)) { in computeKnownBitsFromContext()
722 if (Q.DT->dominates(Edge0, Q.CxtI->getParent())) in computeKnownBitsFromContext()
724 Cmp->getOperand(1), Known, Q); in computeKnownBitsFromContext()
727 if (Q.DT->dominates(Edge1, Q.CxtI->getParent())) in computeKnownBitsFromContext()
730 Q); in computeKnownBitsFromContext()
737 if (!Q.AC) in computeKnownBitsFromContext()
745 for (AssumptionCache::ResultElem &Elem : Q.AC->assumptionsFor(V)) { in computeKnownBitsFromContext()
750 assert(I->getParent()->getParent() == Q.CxtI->getParent()->getParent() && in computeKnownBitsFromContext()
760 isValidAssumeForContext(I, Q.CxtI, Q.DT)) in computeKnownBitsFromContext()
772 if (Arg == V && isValidAssumeForContext(I, Q.CxtI, Q.DT)) { in computeKnownBitsFromContext()
779 isValidAssumeForContext(I, Q.CxtI, Q.DT)) { in computeKnownBitsFromContext()
794 if (!isValidAssumeForContext(I, Q.CxtI, Q.DT)) in computeKnownBitsFromContext()
798 Cmp->getOperand(1), Known, Q); in computeKnownBitsFromContext()
817 KnownBits &Known2, unsigned Depth, const SimplifyQuery &Q, in computeKnownBitsFromShiftOperator() argument
819 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromShiftOperator()
820 computeKnownBits(I->getOperand(1), DemandedElts, Known, Depth + 1, Q); in computeKnownBitsFromShiftOperator()
826 isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q)); in computeKnownBitsFromShiftOperator()
833 unsigned Depth, const SimplifyQuery &Q) { in getKnownBitsFromAndXorOr() argument
890 computeKnownBits(Y, DemandedElts, KnownY, Depth + 1, Q); in getKnownBitsFromAndXorOr()
937 const SimplifyQuery &Q) { in computeKnownBitsFromOperator() argument
945 Q.IIQ.getMetadata(cast<LoadInst>(I), LLVMContext::MD_range)) in computeKnownBitsFromOperator()
949 computeKnownBits(I->getOperand(1), DemandedElts, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
950 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
952 Known = getKnownBitsFromAndXorOr(I, DemandedElts, Known2, Known, Depth, Q); in computeKnownBitsFromOperator()
955 computeKnownBits(I->getOperand(1), DemandedElts, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
956 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
958 Known = getKnownBitsFromAndXorOr(I, DemandedElts, Known2, Known, Depth, Q); in computeKnownBitsFromOperator()
961 computeKnownBits(I->getOperand(1), DemandedElts, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
962 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
964 Known = getKnownBitsFromAndXorOr(I, DemandedElts, Known2, Known, Depth, Q); in computeKnownBitsFromOperator()
967 bool NSW = Q.IIQ.hasNoSignedWrap(cast<OverflowingBinaryOperator>(I)); in computeKnownBitsFromOperator()
969 Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
973 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
974 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
976 KnownBits::udiv(Known, Known2, Q.IIQ.isExact(cast<BinaryOperator>(I))); in computeKnownBitsFromOperator()
980 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
981 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
983 KnownBits::sdiv(Known, Known2, Q.IIQ.isExact(cast<BinaryOperator>(I))); in computeKnownBitsFromOperator()
987 computeKnownBits(I->getOperand(2), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
988 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1014 Q.DL.getPointerTypeSizeInBits(ScalarTy) : in computeKnownBitsFromOperator()
1015 Q.DL.getTypeSizeInBits(ScalarTy); in computeKnownBitsFromOperator()
1019 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1032 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1072 Depth + 1, Q); in computeKnownBitsFromOperator()
1073 unsigned ShiftElt = Q.DL.isLittleEndian() ? i : SubScale - 1 - i; in computeKnownBitsFromOperator()
1084 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1091 bool NUW = Q.IIQ.hasNoUnsignedWrap(cast<OverflowingBinaryOperator>(I)); in computeKnownBitsFromOperator()
1092 bool NSW = Q.IIQ.hasNoSignedWrap(cast<OverflowingBinaryOperator>(I)); in computeKnownBitsFromOperator()
1097 computeKnownBitsFromShiftOperator(I, DemandedElts, Known, Known2, Depth, Q, in computeKnownBitsFromOperator()
1110 computeKnownBitsFromShiftOperator(I, DemandedElts, Known, Known2, Depth, Q, in computeKnownBitsFromOperator()
1123 computeKnownBitsFromShiftOperator(I, DemandedElts, Known, Known2, Depth, Q, in computeKnownBitsFromOperator()
1128 bool NSW = Q.IIQ.hasNoSignedWrap(cast<OverflowingBinaryOperator>(I)); in computeKnownBitsFromOperator()
1130 DemandedElts, Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
1134 bool NSW = Q.IIQ.hasNoSignedWrap(cast<OverflowingBinaryOperator>(I)); in computeKnownBitsFromOperator()
1136 DemandedElts, Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
1140 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1141 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1146 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1147 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1156 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1184 const StructLayout *SL = Q.DL.getStructLayout(STy); in computeKnownBitsFromOperator()
1199 computeKnownBits(Index, IndexBits, Depth + 1, Q); in computeKnownBitsFromOperator()
1200 TypeSize IndexTypeSize = GTI.getSequentialElementStride(Q.DL); in computeKnownBitsFromOperator()
1263 SimplifyQuery RecQ = Q; in computeKnownBitsFromOperator()
1296 SimplifyQuery RecQ = Q; in computeKnownBitsFromOperator()
1316 if (OverflowOp && Q.IIQ.hasNoSignedWrap(OverflowOp)) { in computeKnownBitsFromOperator()
1374 SimplifyQuery RecQ = Q; in computeKnownBitsFromOperator()
1432 Q.IIQ.getMetadata(cast<Instruction>(I), LLVMContext::MD_range)) in computeKnownBitsFromOperator()
1436 computeKnownBits(RV, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1444 computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1450 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1455 computeKnownBits(I->getOperand(0), DemandedElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1460 computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1471 computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1482 computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1504 computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1505 computeKnownBits(I->getOperand(1), Known3, Depth + 1, Q); in computeKnownBitsFromOperator()
1514 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1515 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1519 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1520 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1524 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1525 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1529 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1530 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1534 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1535 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1539 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1540 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1544 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1545 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1549 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1550 computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1554 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1558 computeKnownBits(Mask, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1601 computeKnownBits(LHS, DemandedLHS, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1608 computeKnownBits(RHS, DemandedRHS, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1632 computeKnownBits(Elt, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1641 computeKnownBits(Vec, DemandedVecElts, Known2, Depth + 1, Q); in computeKnownBitsFromOperator()
1661 computeKnownBits(Vec, DemandedVecElts, Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1675 Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
1681 Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
1686 DemandedElts, Known, Known2, Depth, Q); in computeKnownBitsFromOperator()
1693 if (isGuaranteedNotToBePoison(I->getOperand(0), Q.AC, Q.CxtI, Q.DT, in computeKnownBitsFromOperator()
1695 computeKnownBits(I->getOperand(0), Known, Depth + 1, Q); in computeKnownBitsFromOperator()
1703 unsigned Depth, const SimplifyQuery &Q) { in computeKnownBits() argument
1704 KnownBits Known(getBitWidth(V->getType(), Q.DL)); in computeKnownBits()
1705 ::computeKnownBits(V, DemandedElts, Known, Depth, Q); in computeKnownBits()
1712 const SimplifyQuery &Q) { in computeKnownBits() argument
1713 KnownBits Known(getBitWidth(V->getType(), Q.DL)); in computeKnownBits()
1714 computeKnownBits(V, Known, Depth, Q); in computeKnownBits()
1735 const SimplifyQuery &Q) { in computeKnownBits() argument
1763 assert(BitWidth == Q.DL.getPointerTypeSizeInBits(ScalarTy) && in computeKnownBits()
1766 assert(BitWidth == Q.DL.getTypeSizeInBits(ScalarTy) && in computeKnownBits()
1845 computeKnownBits(GA->getAliasee(), Known, Depth + 1, Q); in computeKnownBits()
1850 computeKnownBitsFromOperator(I, DemandedElts, Known, Depth, Q); in computeKnownBits()
1858 Align Alignment = V->getPointerAlignment(Q.DL); in computeKnownBits()
1866 computeKnownBitsFromContext(V, Known, Depth, Q); in computeKnownBits()
1874 unsigned Depth, SimplifyQuery &Q) { in isPowerOfTwoRecurrence() argument
1885 Q.CxtI = PN->getIncomingBlock(U)->getTerminator(); in isPowerOfTwoRecurrence()
1886 if (!isKnownToBeAPowerOfTwo(Start, OrZero, Depth, Q)) in isPowerOfTwoRecurrence()
1896 Q.CxtI = BO->getParent()->getTerminator(); in isPowerOfTwoRecurrence()
1900 return (OrZero || Q.IIQ.hasNoUnsignedWrap(BO) || in isPowerOfTwoRecurrence()
1901 Q.IIQ.hasNoSignedWrap(BO)) && in isPowerOfTwoRecurrence()
1902 isKnownToBeAPowerOfTwo(Step, OrZero, Depth, Q); in isPowerOfTwoRecurrence()
1913 return (OrZero || Q.IIQ.isExact(BO)) && in isPowerOfTwoRecurrence()
1914 isKnownToBeAPowerOfTwo(Step, false, Depth, Q); in isPowerOfTwoRecurrence()
1916 return OrZero || Q.IIQ.hasNoUnsignedWrap(BO) || Q.IIQ.hasNoSignedWrap(BO); in isPowerOfTwoRecurrence()
1922 return OrZero || Q.IIQ.isExact(BO); in isPowerOfTwoRecurrence()
1933 const SimplifyQuery &Q) { in isKnownToBeAPowerOfTwo() argument
1947 if (Q.CxtI && match(V, m_VScale())) { in isKnownToBeAPowerOfTwo()
1948 const Function *F = Q.CxtI->getFunction(); in isKnownToBeAPowerOfTwo()
1969 return isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
1971 return OrZero && isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
1973 if (OrZero || Q.IIQ.hasNoUnsignedWrap(I) || Q.IIQ.hasNoSignedWrap(I)) in isKnownToBeAPowerOfTwo()
1974 return isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
1977 if (OrZero || Q.IIQ.isExact(cast<BinaryOperator>(I))) in isKnownToBeAPowerOfTwo()
1978 return isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
1981 if (Q.IIQ.isExact(cast<BinaryOperator>(I))) in isKnownToBeAPowerOfTwo()
1982 return isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
1985 return isKnownToBeAPowerOfTwo(I->getOperand(1), OrZero, Depth, Q) && in isKnownToBeAPowerOfTwo()
1986 isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q) && in isKnownToBeAPowerOfTwo()
1987 (OrZero || isKnownNonZero(I, Depth, Q)); in isKnownToBeAPowerOfTwo()
1991 (isKnownToBeAPowerOfTwo(I->getOperand(1), /*OrZero*/ true, Depth, Q) || in isKnownToBeAPowerOfTwo()
1992 isKnownToBeAPowerOfTwo(I->getOperand(0), /*OrZero*/ true, Depth, Q))) in isKnownToBeAPowerOfTwo()
1997 return OrZero || isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownToBeAPowerOfTwo()
2003 if (OrZero || Q.IIQ.hasNoUnsignedWrap(VOBO) || in isKnownToBeAPowerOfTwo()
2004 Q.IIQ.hasNoSignedWrap(VOBO)) { in isKnownToBeAPowerOfTwo()
2007 isKnownToBeAPowerOfTwo(I->getOperand(1), OrZero, Depth, Q)) in isKnownToBeAPowerOfTwo()
2011 isKnownToBeAPowerOfTwo(I->getOperand(0), OrZero, Depth, Q)) in isKnownToBeAPowerOfTwo()
2016 computeKnownBits(I->getOperand(0), LHSBits, Depth, Q); in isKnownToBeAPowerOfTwo()
2019 computeKnownBits(I->getOperand(1), RHSBits, Depth, Q); in isKnownToBeAPowerOfTwo()
2032 return isKnownToBeAPowerOfTwo(I->getOperand(1), OrZero, Depth, Q) && in isKnownToBeAPowerOfTwo()
2033 isKnownToBeAPowerOfTwo(I->getOperand(2), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
2039 SimplifyQuery RecQ = Q; in isKnownToBeAPowerOfTwo()
2067 return isKnownToBeAPowerOfTwo(II->getArgOperand(1), OrZero, Depth, Q) && in isKnownToBeAPowerOfTwo()
2068 isKnownToBeAPowerOfTwo(II->getArgOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
2073 return isKnownToBeAPowerOfTwo(II->getArgOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
2078 return isKnownToBeAPowerOfTwo(II->getArgOperand(0), OrZero, Depth, Q); in isKnownToBeAPowerOfTwo()
2098 const SimplifyQuery &Q) { in isGEPKnownNonNull() argument
2112 if (isKnownNonZero(GEP->getPointerOperand(), Depth, Q)) in isGEPKnownNonNull()
2124 const StructLayout *SL = Q.DL.getStructLayout(STy); in isGEPKnownNonNull()
2132 if (GTI.getSequentialElementStride(Q.DL).isZero()) in isGEPKnownNonNull()
2151 if (isKnownNonZero(GTI.getOperand(), Depth, Q)) in isGEPKnownNonNull()
2301 const SimplifyQuery &Q, unsigned BitWidth, Value *X, in isNonZeroAdd() argument
2303 KnownBits XKnown = computeKnownBits(X, DemandedElts, Depth, Q); in isNonZeroAdd()
2304 KnownBits YKnown = computeKnownBits(Y, DemandedElts, Depth, Q); in isNonZeroAdd()
2309 if (isKnownNonZero(Y, DemandedElts, Depth, Q) || in isNonZeroAdd()
2310 isKnownNonZero(X, DemandedElts, Depth, Q)) in isNonZeroAdd()
2329 isKnownToBeAPowerOfTwo(Y, /*OrZero*/ false, Depth, Q)) in isNonZeroAdd()
2332 isKnownToBeAPowerOfTwo(X, /*OrZero*/ false, Depth, Q)) in isNonZeroAdd()
2340 const SimplifyQuery &Q, unsigned BitWidth, Value *X, in isNonZeroSub() argument
2344 if (C->isNullValue() && isKnownNonZero(Y, DemandedElts, Depth, Q)) in isNonZeroSub()
2347 return ::isKnownNonEqual(X, Y, Depth, Q); in isNonZeroSub()
2351 unsigned Depth, const SimplifyQuery &Q, in isNonZeroShift() argument
2382 computeKnownBits(I->getOperand(1), DemandedElts, Depth, Q); in isNonZeroShift()
2395 isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q)) in isNonZeroShift()
2403 unsigned Depth, const SimplifyQuery &Q) { in isKnownNonZeroFromOperator() argument
2404 unsigned BitWidth = getBitWidth(I->getType()->getScalarType(), Q.DL); in isKnownNonZeroFromOperator()
2411 return isGEPKnownNonNull(cast<GEPOperator>(I), Depth, Q); in isKnownNonZeroFromOperator()
2443 (BitWidth % getBitWidth(FromTy->getScalarType(), Q.DL)) == 0) in isKnownNonZeroFromOperator()
2444 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2451 Q.DL.getTypeSizeInBits(I->getOperand(0)->getType()).getFixedValue() <= in isKnownNonZeroFromOperator()
2452 Q.DL.getTypeSizeInBits(I->getType()).getFixedValue()) in isKnownNonZeroFromOperator()
2453 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2459 Q.DL.getTypeSizeInBits(I->getOperand(0)->getType()).getFixedValue() <= in isKnownNonZeroFromOperator()
2460 Q.DL.getTypeSizeInBits(I->getType()).getFixedValue()) in isKnownNonZeroFromOperator()
2461 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2464 return isNonZeroSub(DemandedElts, Depth, Q, BitWidth, I->getOperand(0), in isKnownNonZeroFromOperator()
2468 return isKnownNonZero(I->getOperand(1), DemandedElts, Depth, Q) || in isKnownNonZeroFromOperator()
2469 isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2473 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2478 if (Q.IIQ.hasNoUnsignedWrap(BO) || Q.IIQ.hasNoSignedWrap(BO)) in isKnownNonZeroFromOperator()
2479 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2484 computeKnownBits(I->getOperand(0), DemandedElts, Known, Depth, Q); in isKnownNonZeroFromOperator()
2488 return isNonZeroShift(I, DemandedElts, Depth, Q, Known); in isKnownNonZeroFromOperator()
2495 return isKnownNonZero(I->getOperand(0), Depth, Q); in isKnownNonZeroFromOperator()
2500 computeKnownBits(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2504 return isNonZeroShift(I, DemandedElts, Depth, Q, Known); in isKnownNonZeroFromOperator()
2511 return isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2515 computeKnownBits(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2522 computeKnownBits(I->getOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2540 if (Q.IIQ.hasNoUnsignedWrap(BO)) in isKnownNonZeroFromOperator()
2541 return isKnownNonZero(I->getOperand(1), DemandedElts, Depth, Q) || in isKnownNonZeroFromOperator()
2542 isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2544 return isNonZeroAdd(DemandedElts, Depth, Q, BitWidth, I->getOperand(0), in isKnownNonZeroFromOperator()
2545 I->getOperand(1), Q.IIQ.hasNoSignedWrap(BO)); in isKnownNonZeroFromOperator()
2551 if (Q.IIQ.hasNoSignedWrap(BO) || Q.IIQ.hasNoUnsignedWrap(BO)) in isKnownNonZeroFromOperator()
2552 return isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q) && in isKnownNonZeroFromOperator()
2553 isKnownNonZero(I->getOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2558 computeKnownBits(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2560 return isKnownNonZero(I->getOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2563 computeKnownBits(I->getOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2566 isKnownNonZero(I->getOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2587 if (isKnownNonZero(Op, DemandedElts, Depth, Q)) in isKnownNonZeroFromOperator()
2610 if (Q.IIQ.UseInstrInfo && isNonZeroRecurrence(PN)) in isKnownNonZeroFromOperator()
2614 SimplifyQuery RecQ = Q; in isKnownNonZeroFromOperator()
2650 return isKnownNonZero(Vec, DemandedVecElts, Depth, Q); in isKnownNonZeroFromOperator()
2655 return isKnownNonZero(I->getOperand(0), Depth, Q) && in isKnownNonZeroFromOperator()
2656 isGuaranteedNotToBePoison(I->getOperand(0), Q.AC, Q.CxtI, Q.DT, in isKnownNonZeroFromOperator()
2663 if (Q.IIQ.getMetadata(LI, LLVMContext::MD_nonnull) || in isKnownNonZeroFromOperator()
2664 (Q.IIQ.getMetadata(LI, LLVMContext::MD_dereferenceable) && in isKnownNonZeroFromOperator()
2679 return isKnownNonZero(RP, Depth, Q); in isKnownNonZeroFromOperator()
2681 if (RV->getType() == I->getType() && isKnownNonZero(RV, Depth, Q)) in isKnownNonZeroFromOperator()
2693 return isKnownNonZero(II->getArgOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2695 return isNonZeroSub(DemandedElts, Depth, Q, BitWidth, in isKnownNonZeroFromOperator()
2698 return isNonZeroAdd(DemandedElts, Depth, Q, BitWidth, in isKnownNonZeroFromOperator()
2703 return isKnownNonZero(II->getArgOperand(1), DemandedElts, Depth, Q) || in isKnownNonZeroFromOperator()
2704 isKnownNonZero(II->getArgOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2713 computeKnownBits(II->getArgOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2717 computeKnownBits(II->getArgOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2726 return isKnownNonZero(II->getArgOperand(0), DemandedElts, Depth, Q) && in isKnownNonZeroFromOperator()
2727 isKnownNonZero(II->getArgOperand(1), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2729 return computeKnownBits(II->getArgOperand(0), DemandedElts, Depth, Q) in isKnownNonZeroFromOperator()
2732 return computeKnownBits(II->getArgOperand(0), DemandedElts, Depth, Q) in isKnownNonZeroFromOperator()
2738 return isKnownNonZero(II->getArgOperand(0), DemandedElts, Depth, Q); in isKnownNonZeroFromOperator()
2752 computeKnownBits(I, DemandedElts, Known, Depth, Q); in isKnownNonZeroFromOperator()
2763 const SimplifyQuery &Q) { in isKnownNonZero() argument
2816 if (MDNode *Ranges = Q.IIQ.getMetadata(I, LLVMContext::MD_range)) { in isKnownNonZero()
2827 if (!isa<Constant>(V) && isKnownNonZeroFromAssume(V, Q)) in isKnownNonZero()
2848 if (isKnownNonZeroFromOperator(I, DemandedElts, Depth, Q)) in isKnownNonZero()
2852 isKnownNonNullFromDominatingCondition(V, Q.CxtI, Q.DT)) in isKnownNonZero()
2858 bool isKnownNonZero(const Value *V, unsigned Depth, const SimplifyQuery &Q) { in isKnownNonZero() argument
2862 return isKnownNonZero(V, DemandedElts, Depth, Q); in isKnownNonZero()
2974 const SimplifyQuery &Q) { in isAddOfNonZero() argument
2985 return isKnownNonZero(Op, Depth + 1, Q); in isAddOfNonZero()
2991 const SimplifyQuery &Q) { in isNonEqualMul() argument
2996 !C->isZero() && !C->isOne() && isKnownNonZero(V1, Depth + 1, Q); in isNonEqualMul()
3004 const SimplifyQuery &Q) { in isNonEqualShl() argument
3009 !C->isZero() && isKnownNonZero(V1, Depth + 1, Q); in isNonEqualShl()
3015 unsigned Depth, const SimplifyQuery &Q) { in isNonEqualPHIs() argument
3035 SimplifyQuery RecQ = Q; in isNonEqualPHIs()
3045 const SimplifyQuery &Q) { in isNonEqualSelect() argument
3055 Depth + 1, Q) && in isNonEqualSelect()
3057 Depth + 1, Q); in isNonEqualSelect()
3059 return isKnownNonEqual(SI1->getTrueValue(), V2, Depth + 1, Q) && in isNonEqualSelect()
3060 isKnownNonEqual(SI1->getFalseValue(), V2, Depth + 1, Q); in isNonEqualSelect()
3069 const SimplifyQuery &Q) { in isNonEqualPointersWithRecursiveGEP() argument
3099 unsigned IndexWidth = Q.DL.getIndexTypeSizeInBits(Start->getType()); in isNonEqualPointersWithRecursiveGEP()
3101 Start = Start->stripAndAccumulateInBoundsConstantOffsets(Q.DL, StartOffset); in isNonEqualPointersWithRecursiveGEP()
3103 Step = Step->stripAndAccumulateInBoundsConstantOffsets(Q.DL, StepOffset); in isNonEqualPointersWithRecursiveGEP()
3109 B = B->stripAndAccumulateInBoundsConstantOffsets(Q.DL, OffsetB); in isNonEqualPointersWithRecursiveGEP()
3117 const SimplifyQuery &Q) { in isKnownNonEqual() argument
3134 return isKnownNonEqual(Values->first, Values->second, Depth + 1, Q); in isKnownNonEqual()
3140 if (isNonEqualPHIs(PN1, PN2, Depth, Q)) in isKnownNonEqual()
3145 if (isAddOfNonZero(V1, V2, Depth, Q) || isAddOfNonZero(V2, V1, Depth, Q)) in isKnownNonEqual()
3148 if (isNonEqualMul(V1, V2, Depth, Q) || isNonEqualMul(V2, V1, Depth, Q)) in isKnownNonEqual()
3151 if (isNonEqualShl(V1, V2, Depth, Q) || isNonEqualShl(V2, V1, Depth, Q)) in isKnownNonEqual()
3157 KnownBits Known1 = computeKnownBits(V1, Depth, Q); in isKnownNonEqual()
3159 KnownBits Known2 = computeKnownBits(V2, Depth, Q); in isKnownNonEqual()
3166 if (isNonEqualSelect(V1, V2, Depth, Q) || isNonEqualSelect(V2, V1, Depth, Q)) in isKnownNonEqual()
3169 if (isNonEqualPointersWithRecursiveGEP(V1, V2, Q) || in isKnownNonEqual()
3170 isNonEqualPointersWithRecursiveGEP(V2, V1, Q)) in isKnownNonEqual()
3176 if (match(V1, m_PtrToIntSameSize(Q.DL, m_Value(A))) && in isKnownNonEqual()
3177 match(V2, m_PtrToIntSameSize(Q.DL, m_Value(B)))) in isKnownNonEqual()
3178 return isKnownNonEqual(A, B, Depth + 1, Q); in isKnownNonEqual()
3261 unsigned Depth, const SimplifyQuery &Q);
3264 unsigned Depth, const SimplifyQuery &Q) { in ComputeNumSignBits() argument
3265 unsigned Result = ComputeNumSignBitsImpl(V, DemandedElts, Depth, Q); in ComputeNumSignBits()
3279 unsigned Depth, const SimplifyQuery &Q) { in ComputeNumSignBitsImpl() argument
3300 Q.DL.getPointerTypeSizeInBits(ScalarTy) : in ComputeNumSignBitsImpl()
3301 Q.DL.getTypeSizeInBits(ScalarTy); in ComputeNumSignBitsImpl()
3317 return ComputeNumSignBits(U->getOperand(0), Depth + 1, Q) + Tmp; in ComputeNumSignBitsImpl()
3329 unsigned NumBits = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3338 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3369 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3385 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3397 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3399 Tmp2 = ComputeNumSignBits(U->getOperand(1), Depth + 1, Q); in ComputeNumSignBitsImpl()
3415 Tmp = ComputeNumSignBits(U->getOperand(1), Depth + 1, Q); in ComputeNumSignBitsImpl()
3417 Tmp2 = ComputeNumSignBits(U->getOperand(2), Depth + 1, Q); in ComputeNumSignBitsImpl()
3424 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3431 computeKnownBits(U->getOperand(0), Known, Depth + 1, Q); in ComputeNumSignBitsImpl()
3444 Tmp2 = ComputeNumSignBits(U->getOperand(1), Depth + 1, Q); in ComputeNumSignBitsImpl()
3449 Tmp2 = ComputeNumSignBits(U->getOperand(1), Depth + 1, Q); in ComputeNumSignBitsImpl()
3456 computeKnownBits(U->getOperand(1), Known, Depth + 1, Q); in ComputeNumSignBitsImpl()
3473 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3480 unsigned SignBitsOp0 = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3482 unsigned SignBitsOp1 = ComputeNumSignBits(U->getOperand(1), Depth + 1, Q); in ComputeNumSignBitsImpl()
3499 SimplifyQuery RecQ = Q; in ComputeNumSignBitsImpl()
3514 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3527 return ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3545 Tmp = ComputeNumSignBits(LHS, DemandedLHS, Depth + 1, Q); in ComputeNumSignBitsImpl()
3553 Tmp2 = ComputeNumSignBits(RHS, DemandedRHS, Depth + 1, Q); in ComputeNumSignBitsImpl()
3568 Tmp = ComputeNumSignBits(U->getOperand(0), Depth + 1, Q); in ComputeNumSignBitsImpl()
3595 computeKnownBits(V, DemandedElts, Known, Depth, Q); in ComputeNumSignBitsImpl()
4248 const SimplifyQuery &Q) { in computeKnownFPClassFromAssumes() argument
4253 for (auto &AssumeVH : Q.AC->assumptionsFor(V)) { in computeKnownFPClassFromAssumes()
4259 assert(F == Q.CxtI->getParent()->getParent() && in computeKnownFPClassFromAssumes()
4264 if (!isValidAssumeForContext(I, Q.CxtI, Q.DT)) in computeKnownFPClassFromAssumes()
4296 unsigned Depth, const SimplifyQuery &Q);
4300 const SimplifyQuery &Q) { in computeKnownFPClass() argument
4304 computeKnownFPClass(V, DemandedElts, InterestedClasses, Known, Depth, Q); in computeKnownFPClass()
4311 const SimplifyQuery &Q) { in computeKnownFPClassForFPTrunc() argument
4318 KnownSrc, Depth + 1, Q); in computeKnownFPClassForFPTrunc()
4333 unsigned Depth, const SimplifyQuery &Q) { in computeKnownFPClass() argument
4393 if (Q.AC) { in computeKnownFPClass()
4394 FPClassTest AssumedClasses = computeKnownFPClassFromAssumes(V, Q); in computeKnownFPClass()
4417 Known, Depth + 1, Q); in computeKnownFPClass()
4460 Depth + 1, Q); in computeKnownFPClass()
4464 Known2, Depth + 1, Q); in computeKnownFPClass()
4479 InterestedClasses, Known, Depth + 1, Q); in computeKnownFPClass()
4489 Known, Depth + 1, Q); in computeKnownFPClass()
4491 KnownSign, Depth + 1, Q); in computeKnownFPClass()
4509 KnownAddend, Depth + 1, Q); in computeKnownFPClass()
4524 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4541 if (Q.IIQ.hasNoSignedZeros(II) || in computeKnownFPClass()
4555 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4567 KnownLHS, Depth + 1, Q); in computeKnownFPClass()
4569 KnownRHS, Depth + 1, Q); in computeKnownFPClass()
4633 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4691 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4724 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4734 Depth, Q); in computeKnownFPClass()
4758 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4781 ExponentKnownBits, Depth + 1, Q); in computeKnownFPClass()
4798 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4806 KnownSrc, Depth + 1, Q); in computeKnownFPClass()
4832 ExpArg, true, Q.IIQ.UseInstrInfo, Q.AC, Q.CxtI, Q.DT, Depth + 1); in computeKnownFPClass()
4865 Known, Depth + 1, Q); in computeKnownFPClass()
4908 KnownRHS, Depth + 1, Q); in computeKnownFPClass()
4917 KnownLHS, Depth + 1, Q); in computeKnownFPClass()
4968 Depth + 1, Q); in computeKnownFPClass()
4973 Depth + 1, Q); in computeKnownFPClass()
5021 Depth + 1, Q); in computeKnownFPClass()
5033 Depth + 1, Q); in computeKnownFPClass()
5078 Known, Depth + 1, Q); in computeKnownFPClass()
5101 Depth, Q); in computeKnownFPClass()
5147 Depth + 1, Q); in computeKnownFPClass()
5167 computeKnownFPClass(Elt, Known, InterestedClasses, Depth + 1, Q); in computeKnownFPClass()
5181 Depth + 1, Q); in computeKnownFPClass()
5198 Depth + 1, Q); in computeKnownFPClass()
5211 Depth + 1, Q); in computeKnownFPClass()
5230 InterestedClasses, KnownSrc, Depth + 1, Q); in computeKnownFPClass()
5262 Q); in computeKnownFPClass()
5292 PhiRecursionLimit, Q); in computeKnownFPClass()