Lines Matching defs:InnerLoop
225 // before and after swapping OuterLoop vs InnerLoop
286 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), ORE(ORE) {}
317 /// to be passed as \p InnerLoop.
320 Loop *InnerLoop);
323 Loop *InnerLoop;
344 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), ORE(ORE) {}
347 bool isProfitable(const Loop *InnerLoop, const Loop *OuterLoop,
363 Loop *InnerLoop;
378 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), LI(LI), DT(DT), LIL(LIL) {}
380 /// Interchange OuterLoop and InnerLoop.
385 void removeChildLoop(Loop *OuterLoop, Loop *InnerLoop);
392 Loop *InnerLoop;
539 bool processLoop(Loop *InnerLoop, Loop *OuterLoop, unsigned InnerLoopId,
545 LoopInterchangeLegality LIL(OuterLoop, InnerLoop, SE, ORE);
551 LoopInterchangeProfitability LIP(OuterLoop, InnerLoop, SE, ORE);
552 if (!LIP.isProfitable(InnerLoop, OuterLoop, InnerLoopId, OuterLoopId,
560 InnerLoop->getStartLoc(),
561 InnerLoop->getHeader())
565 LoopInterchangeTransform LIT(OuterLoop, InnerLoop, SE, LI, DT, LIL);
583 bool LoopInterchangeLegality::tightlyNested(Loop *OuterLoop, Loop *InnerLoop) {
585 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
599 if (Succ != InnerLoopPreHeader && Succ != InnerLoop->getHeader() &&
617 BasicBlock *InnerLoopExit = InnerLoop->getExitBlock();
639 BasicBlock *InnerLoopPreheader = InnerLoop->getLoopPreheader();
667 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
766 Loop *L, SmallVector<PHINode *, 8> &Inductions, Loop *InnerLoop) {
776 if (!InnerLoop) {
788 PHINode *InnerRedPhi = findInnerReductionPhi(InnerLoop, V);
807 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
811 if (InnerLoop->getExitingBlock() != InnerLoopLatch ||
829 if (!findInductionAndReductions(OuterLoop, Inductions, InnerLoop)) {
871 InnerLoop->getStartLoc(),
872 InnerLoop->getHeader())
920 static bool areOuterLoopExitPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
946 // the latch of InnerLoop, i.e., when defs of the incoming values are further
951 // TODO: Handle transformation of lcssa phis in the InnerLoop latch in case of
953 static bool areInnerLoopLatchPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
954 if (InnerLoop->getSubLoops().empty())
968 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
988 InnerLoop->getStartLoc(),
989 InnerLoop->getHeader())
1014 if (!findInductions(InnerLoop, InnerLoopInductions)) {
1019 if (!areInnerLoopLatchPHIsSupported(OuterLoop, InnerLoop)) {
1023 InnerLoop->getStartLoc(),
1024 InnerLoop->getHeader())
1039 if (!tightlyNested(OuterLoop, InnerLoop)) {
1043 InnerLoop->getStartLoc(),
1044 InnerLoop->getHeader())
1051 if (!areInnerLoopExitPHIsSupported(OuterLoop, InnerLoop,
1056 InnerLoop->getStartLoc(),
1057 InnerLoop->getHeader())
1063 if (!areOuterLoopExitPHIsSupported(OuterLoop, InnerLoop)) {
1080 for (BasicBlock *BB : InnerLoop->blocks()) {
1101 if (AR->getLoop() == InnerLoop) {
1102 // We found an InnerLoop induction after OuterLoop induction. It is
1116 // We found an OuterLoop induction after InnerLoop induction. It is
1138 if (CostMap.contains(InnerLoop) && CostMap.contains(OuterLoop)) {
1140 InnerIndex = CostMap.find(InnerLoop)->second;
1148 if (CC->getLoopCost(*OuterLoop) == CC->getLoopCost(*InnerLoop))
1190 const Loop *InnerLoop, const Loop *OuterLoop, unsigned InnerLoopId,
1213 InnerLoop->getStartLoc(),
1214 InnerLoop->getHeader())
1222 InnerLoop->getStartLoc(),
1223 InnerLoop->getHeader())
1233 Loop *InnerLoop) {
1235 if (L == InnerLoop) {
1324 if (InnerLoop->getSubLoops().empty()) {
1325 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1348 SplitBlock(InnerLoop->getLoopLatch(),
1349 InnerLoop->getLoopLatch()->getTerminator(), DT, LI);
1364 if (!InnerLoop->contains(UserI->getParent()) ||
1374 this->LI->getLoopFor(OpI->getParent()) != this->InnerLoop ||
1384 cast<BranchInst>(InnerLoop->getLoopLatch()->getTerminator())
1395 BasicBlock *InnerLoopHeader = InnerLoop->getHeader();
1407 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1484 Loop *InnerLoop, LoopInfo *LI) {
1553 if (!I || LI->getLoopFor(I->getParent()) == InnerLoop)
1582 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1585 InnerLoopPreHeader != InnerLoop->getHeader() && OuterLoopPreHeader &&
1597 InsertPreheaderForLoop(InnerLoop, DT, LI, nullptr, true);
1600 BasicBlock *InnerLoopHeader = InnerLoop->getHeader();
1602 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
1680 restructureLoops(OuterLoop, InnerLoop, InnerLoopPreHeader,
1684 OuterLoopHeader, OuterLoopLatch, InnerLoop->getExitBlock(),
1685 InnerLoop, LI);
1742 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();