Lines Matching defs:InnerLoop
204 // before and after swapping OuterLoop vs InnerLoop
245 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), ORE(ORE) {}
276 /// to be passed as \p InnerLoop.
279 Loop *InnerLoop);
282 Loop *InnerLoop;
303 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), ORE(ORE) {}
306 bool isProfitable(const Loop *InnerLoop, const Loop *OuterLoop,
322 Loop *InnerLoop;
337 : OuterLoop(Outer), InnerLoop(Inner), SE(SE), LI(LI), DT(DT), LIL(LIL) {}
339 /// Interchange OuterLoop and InnerLoop.
344 void removeChildLoop(Loop *OuterLoop, Loop *InnerLoop);
351 Loop *InnerLoop;
503 bool processLoop(Loop *InnerLoop, Loop *OuterLoop, unsigned InnerLoopId,
509 LoopInterchangeLegality LIL(OuterLoop, InnerLoop, SE, ORE);
515 LoopInterchangeProfitability LIP(OuterLoop, InnerLoop, SE, ORE);
516 if (!LIP.isProfitable(InnerLoop, OuterLoop, InnerLoopId, OuterLoopId,
524 InnerLoop->getStartLoc(),
525 InnerLoop->getHeader())
529 LoopInterchangeTransform LIT(OuterLoop, InnerLoop, SE, LI, DT, LIL);
547 bool LoopInterchangeLegality::tightlyNested(Loop *OuterLoop, Loop *InnerLoop) {
549 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
563 if (Succ != InnerLoopPreHeader && Succ != InnerLoop->getHeader() &&
581 BasicBlock *InnerLoopExit = InnerLoop->getExitBlock();
603 BasicBlock *InnerLoopPreheader = InnerLoop->getLoopPreheader();
631 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
730 Loop *L, SmallVector<PHINode *, 8> &Inductions, Loop *InnerLoop) {
740 if (!InnerLoop) {
752 PHINode *InnerRedPhi = findInnerReductionPhi(InnerLoop, V);
771 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
775 if (InnerLoop->getExitingBlock() != InnerLoopLatch ||
793 if (!findInductionAndReductions(OuterLoop, Inductions, InnerLoop)) {
835 InnerLoop->getStartLoc(),
836 InnerLoop->getHeader())
884 static bool areOuterLoopExitPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
910 // the latch of InnerLoop, i.e., when defs of the incoming values are further
915 // TODO: Handle transformation of lcssa phis in the InnerLoop latch in case of
917 static bool areInnerLoopLatchPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
918 if (InnerLoop->getSubLoops().empty())
932 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
952 InnerLoop->getStartLoc(),
953 InnerLoop->getHeader())
978 if (!findInductions(InnerLoop, InnerLoopInductions)) {
983 if (!areInnerLoopLatchPHIsSupported(OuterLoop, InnerLoop)) {
987 InnerLoop->getStartLoc(),
988 InnerLoop->getHeader())
1003 if (!tightlyNested(OuterLoop, InnerLoop)) {
1007 InnerLoop->getStartLoc(),
1008 InnerLoop->getHeader())
1015 if (!areInnerLoopExitPHIsSupported(OuterLoop, InnerLoop,
1020 InnerLoop->getStartLoc(),
1021 InnerLoop->getHeader())
1027 if (!areOuterLoopExitPHIsSupported(OuterLoop, InnerLoop)) {
1044 for (BasicBlock *BB : InnerLoop->blocks()) {
1065 if (AR->getLoop() == InnerLoop) {
1066 // We found an InnerLoop induction after OuterLoop induction. It is
1080 // We found an OuterLoop induction after InnerLoop induction. It is
1102 if (CostMap.contains(InnerLoop) && CostMap.contains(OuterLoop)) {
1104 InnerIndex = CostMap.find(InnerLoop)->second;
1112 if (CC->getLoopCost(*OuterLoop) == CC->getLoopCost(*InnerLoop))
1154 const Loop *InnerLoop, const Loop *OuterLoop, unsigned InnerLoopId,
1177 InnerLoop->getStartLoc(),
1178 InnerLoop->getHeader())
1186 InnerLoop->getStartLoc(),
1187 InnerLoop->getHeader())
1197 Loop *InnerLoop) {
1199 if (L == InnerLoop) {
1288 if (InnerLoop->getSubLoops().empty()) {
1289 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1312 SplitBlock(InnerLoop->getLoopLatch(),
1313 InnerLoop->getLoopLatch()->getTerminator(), DT, LI);
1328 if (!InnerLoop->contains(UserI->getParent()) ||
1338 this->LI->getLoopFor(OpI->getParent()) != this->InnerLoop ||
1348 cast<BranchInst>(InnerLoop->getLoopLatch()->getTerminator())
1359 BasicBlock *InnerLoopHeader = InnerLoop->getHeader();
1370 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1447 Loop *InnerLoop, LoopInfo *LI) {
1516 if (!I || LI->getLoopFor(I->getParent()) == InnerLoop)
1545 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();
1548 InnerLoopPreHeader != InnerLoop->getHeader() && OuterLoopPreHeader &&
1560 InsertPreheaderForLoop(InnerLoop, DT, LI, nullptr, true);
1563 BasicBlock *InnerLoopHeader = InnerLoop->getHeader();
1565 BasicBlock *InnerLoopLatch = InnerLoop->getLoopLatch();
1643 restructureLoops(OuterLoop, InnerLoop, InnerLoopPreHeader,
1647 OuterLoopHeader, OuterLoopLatch, InnerLoop->getExitBlock(),
1648 InnerLoop, LI);
1705 BasicBlock *InnerLoopPreHeader = InnerLoop->getLoopPreheader();