Lines Matching defs:IVInc
1502 static bool matchIncrement(const Instruction *IVInc, Instruction *&LHS,
1504 if (match(IVInc, m_Add(m_Instruction(LHS), m_Constant(Step))) ||
1505 match(IVInc, m_ExtractValue<0>(m_Intrinsic<Intrinsic::uadd_with_overflow>(
1508 if (match(IVInc, m_Sub(m_Instruction(LHS), m_Constant(Step))) ||
1509 match(IVInc, m_ExtractValue<0>(m_Intrinsic<Intrinsic::usub_with_overflow>(
1517 /// If given \p PN is an inductive variable with value IVInc coming from the
1519 /// <IVInc, Step>. Otherwise, return std::nullopt.
1525 auto *IVInc =
1527 if (!IVInc || LI->getLoopFor(IVInc->getParent()) != L)
1531 if (matchIncrement(IVInc, LHS, Step) && LHS == PN)
1532 return std::make_pair(IVInc, Step);
1545 if (auto IVInc = getIVIncrement(PN, LI))
1546 return IVInc->first == I;
4261 auto IVInc = getIVIncrement(PN, &LI);
4262 if (!IVInc)
4270 if (auto *OIVInc = dyn_cast<OverflowingBinaryOperator>(IVInc->first))
4273 if (auto *ConstantStep = dyn_cast<ConstantInt>(IVInc->second))
4274 return std::make_pair(IVInc->first, ConstantStep->getValue());
4291 Instruction *IVInc = IVStep->first;
4296 assert(isIVIncrement(IVInc, &LI) && "implied by GetConstantStep");
4301 TestAddrMode.ScaledReg = IVInc;
4307 getDTFn().dominates(IVInc, MemoryInst)) {
4308 AddrModeInsts.push_back(cast<Instruction>(IVInc));