Lines Matching defs:ExitCond
8914 const Loop *L, Value *ExitCond, bool ExitIfTrue, bool ControlsOnlyExit,
8917 return computeExitLimitFromCondCached(Cache, L, ExitCond, ExitIfTrue,
8922 ScalarEvolution::ExitLimitCache::find(const Loop *L, Value *ExitCond,
8932 auto Itr = TripCountMap.find({ExitCond, ControlsOnlyExit});
8938 void ScalarEvolution::ExitLimitCache::insert(const Loop *L, Value *ExitCond,
8947 auto InsertResult = TripCountMap.insert({{ExitCond, ControlsOnlyExit}, EL});
8954 ExitLimitCacheTy &Cache, const Loop *L, Value *ExitCond, bool ExitIfTrue,
8957 if (auto MaybeEL = Cache.find(L, ExitCond, ExitIfTrue, ControlsOnlyExit,
8962 Cache, L, ExitCond, ExitIfTrue, ControlsOnlyExit, AllowPredicates);
8963 Cache.insert(L, ExitCond, ExitIfTrue, ControlsOnlyExit, AllowPredicates, EL);
8968 ExitLimitCacheTy &Cache, const Loop *L, Value *ExitCond, bool ExitIfTrue,
8972 Cache, L, ExitCond, ExitIfTrue, ControlsOnlyExit, AllowPredicates))
8977 if (ICmpInst *ExitCondICmp = dyn_cast<ICmpInst>(ExitCond)) {
8993 if (ConstantInt *CI = dyn_cast<ConstantInt>(ExitCond)) {
9006 if (match(ExitCond, m_ExtractValue<1>(m_WithOverflowInst(WO))) &&
9026 return computeExitCountExhaustively(L, ExitCond, ExitIfTrue);
9031 ExitLimitCacheTy &Cache, const Loop *L, Value *ExitCond, bool ExitIfTrue,
9036 if (match(ExitCond, m_LogicalAnd(m_Value(Op0), m_Value(Op1))))
9038 else if (match(ExitCond, m_LogicalOr(m_Value(Op0), m_Value(Op1))))
9055 const Constant *NeutralElement = ConstantInt::get(ExitCond->getType(), IsAnd);
9065 bool UseSequentialUMin = !isa<BinaryOperator>(ExitCond);
9111 const Loop *L, ICmpInst *ExitCond, bool ExitIfTrue, bool ControlsOnlyExit,
9116 Pred = ExitCond->getPredicate();
9118 Pred = ExitCond->getInversePredicate();
9121 const SCEV *LHS = getSCEV(ExitCond->getOperand(0));
9122 const SCEV *RHS = getSCEV(ExitCond->getOperand(1));
9130 computeExitCountExhaustively(L, ExitCond, ExitIfTrue);
9135 return computeShiftCompareExitLimit(ExitCond->getOperand(0),
9136 ExitCond->getOperand(1), L, OriginalPred);