Home | History | Annotate | Download | only in Utils

Lines Matching refs:SubLoop

52 static bool partitionOuterLoopBlocks(Loop *L, Loop *SubLoop,
57 BasicBlock *SubLoopLatch = SubLoop->getLoopLatch();
58 SubLoopBlocks.insert(SubLoop->block_begin(), SubLoop->block_end());
61 if (!SubLoop->contains(BB)) {
69 // Check that all blocks in ForeBlocks together dominate the subloop
71 BasicBlock *SubLoopPreHeader = SubLoop->getLoopPreheader();
88 // Aft blocks that need to be moved before the subloop. It is used in two
145 SubLoop(i, j)
153 SubLoop(i, j)
154 SubLoop(i+1, j)
160 are loads in SubLoop that are invariant to i, as they become shared between
163 We do this by spliting the blocks in the loop into Fore, Subloop and Aft.
180 Loop *SubLoop = *L->begin();
210 SE->forgetLoop(SubLoop);
253 bool SubLoopContinueOnTrue = SubLoop->contains(
254 SubLoop->getLoopLatch()->getTerminator()->getSuccessor(0));
261 partitionOuterLoopBlocks(L, SubLoop, ForeBlocks, SubLoopBlocks, AftBlocks,
265 // Fore/SubLoop/Aft in each iteration. This helps make the stapling up of
274 ForeBlocksLast.push_back(SubLoop->getLoopPreheader());
275 SubLoopBlocksFirst.push_back(SubLoop->getHeader());
276 SubLoopBlocksLast.push_back(SubLoop->getExitingBlock());
277 AftBlocksFirst.push_back(SubLoop->getExitBlock());
284 Header, LatchBlock, SubLoop->getLoopPreheader()->getTerminator(),
322 SubLoop->addBasicBlockToLoop(New, *LI);
462 // Subloop successors and phis
473 // Replace the conditional branch of the previous iteration subloop with an
499 // Replace the conditional branch of the previous iteration subloop with an
551 simplifyLoopAfterUnroll(SubLoop, true, LI, SE, DT, AC);
560 Loop *OutestLoop = OuterL ? OuterL : (!CompletelyUnroll ? L : SubLoop);
564 assert(SubLoop->isLoopSimplifyForm());
687 SubLoop blocks of all iterations. So we require that the phi node looping
689 we can arrange cloned Fore Blocks before the subloop and match up Phi's
703 Loop *SubLoop = L->getSubLoops()[0];
704 if (!SubLoop->isLoopSimplifyForm())
710 BasicBlock *SubLoopHeader = SubLoop->getHeader();
711 BasicBlock *SubLoopLatch = SubLoop->getLoopLatch();
712 BasicBlock *SubLoopExit = SubLoop->getExitingBlock();
722 // Split blocks into Fore/SubLoop/Aft based on dominators
726 if (!partitionOuterLoopBlocks(L, SubLoop, ForeBlocks, SubLoopBlocks,
737 const SCEV *SubLoopBECountSC = SE.getExitCount(SubLoop, SubLoopLatch);
754 // ForeBlocks before Subloop and AftBlocks.
755 // Subloop before AftBlocks.
756 // ForeBlock phi operands before the subloop
758 // Make sure we can move all instructions we need to before the subloop
760 Header, Latch, AftBlocks, [&AftBlocks, &SubLoop](Instruction *I) {
761 if (SubLoop->contains(I->getParent()))