Lines Matching refs:Loop

104 collectHomogenousInstGraphLoopInvariants(Loop &L, Instruction &Root,  in collectHomogenousInstGraphLoopInvariants()
142 static void replaceLoopInvariantUses(Loop &L, Value *Invariant, in replaceLoopInvariantUses()
160 static bool areLoopExitPHIsLoopInvariant(Loop &L, BasicBlock &ExitingBB, in areLoopExitPHIsLoopInvariant()
270 static void hoistLoopToNewParent(Loop &L, BasicBlock &Preheader, in hoistLoopToNewParent()
273 Loop *OldParentL = L.getParentLoop(); in hoistLoopToNewParent()
279 Loop *NewParentL = nullptr; in hoistLoopToNewParent()
281 if (Loop *ExitL = LI.getLoopFor(ExitBB)) in hoistLoopToNewParent()
311 for (Loop *OldContainingL = OldParentL; OldContainingL != NewParentL; in hoistLoopToNewParent()
353 static bool unswitchTrivialBranch(Loop &L, BranchInst &BI, DominatorTree &DT, in unswitchTrivialBranch()
422 if (Loop *ExitL = LI.getLoopFor(LoopExitBB)) in unswitchTrivialBranch()
573 static bool unswitchTrivialSwitch(Loop &L, SwitchInst &SI, DominatorTree &DT, in unswitchTrivialSwitch()
607 Loop *OuterL = &L; in unswitchTrivialSwitch()
614 Loop *ExitL = LI.getLoopFor(DefaultExitBB); in unswitchTrivialSwitch()
628 Loop *ExitL = LI.getLoopFor(CaseI->getCaseSuccessor()); in unswitchTrivialSwitch()
828 static bool unswitchAllTrivialConditions(Loop &L, DominatorTree &DT, in unswitchAllTrivialConditions()
943 Loop &L, BasicBlock *LoopPH, BasicBlock *SplitBB, in buildClonedLoopBlocks()
1114 static Loop *cloneLoopNest(Loop &OrigRootL, Loop *RootParentL, in cloneLoopNest()
1116 auto AddClonedBlocksToLoop = [&](Loop &OrigL, Loop &ClonedL) { in cloneLoopNest()
1129 Loop *ClonedRootL = LI.AllocateLoop(); in cloneLoopNest()
1142 SmallVector<std::pair<Loop *, Loop *>, 16> LoopsToClone; in cloneLoopNest()
1145 for (Loop *ChildL : llvm::reverse(OrigRootL)) in cloneLoopNest()
1148 Loop *ClonedParentL, *L; in cloneLoopNest()
1150 Loop *ClonedL = LI.AllocateLoop(); in cloneLoopNest()
1153 for (Loop *ChildL : llvm::reverse(*L)) in cloneLoopNest()
1173 static void buildClonedLoops(Loop &OrigL, ArrayRef<BasicBlock *> ExitBlocks, in buildClonedLoops()
1175 SmallVectorImpl<Loop *> &NonChildClonedLoops) { in buildClonedLoops()
1176 Loop *ClonedL = nullptr; in buildClonedLoops()
1188 Loop *ParentL = nullptr; in buildClonedLoops()
1190 SmallDenseMap<BasicBlock *, Loop *, 16> ExitLoopMap; in buildClonedLoops()
1194 if (Loop *ExitL = LI.getLoopFor(ExitBB)) { in buildClonedLoops()
1290 for (Loop *PL = ClonedL; PL; PL = PL->getParentLoop()) in buildClonedLoops()
1298 for (Loop *ChildL : OrigL) { in buildClonedLoops()
1348 Loop *ExitL = ExitLoopMap.lookup(ExitBB); in buildClonedLoops()
1390 if (Loop *OuterL = ExitLoopMap.lookup(BB)) in buildClonedLoops()
1405 for (Loop *ChildL : OrigL) { in buildClonedLoops()
1423 deleteDeadClonedBlocks(Loop &L, ArrayRef<BasicBlock *> ExitBlocks, in deleteDeadClonedBlocks()
1452 static void deleteDeadBlocksFromLoop(Loop &L, in deleteDeadBlocksFromLoop()
1486 for (Loop *ParentL = &L; ParentL; ParentL = ParentL->getParentLoop()) { in deleteDeadBlocksFromLoop()
1495 llvm::erase_if(L.getSubLoopsVector(), [&](Loop *ChildL) { in deleteDeadBlocksFromLoop()
1536 static SmallPtrSet<const BasicBlock *, 16> recomputeLoopBlockSet(Loop &L, in recomputeLoopBlockSet()
1583 if (Loop *InnerL = LI.getLoopFor(BB)) in recomputeLoopBlockSet()
1647 static bool rebuildLoopAfterUnswitch(Loop &L, ArrayRef<BasicBlock *> ExitBlocks, in rebuildLoopAfterUnswitch()
1649 SmallVectorImpl<Loop *> &HoistedLoops) { in rebuildLoopAfterUnswitch()
1654 Loop *ParentL = nullptr; in rebuildLoopAfterUnswitch()
1655 SmallVector<Loop *, 4> ExitLoops; in rebuildLoopAfterUnswitch()
1659 if (Loop *ExitL = LI.getLoopFor(ExitBB)) { in rebuildLoopAfterUnswitch()
1676 for (Loop *IL = L.getParentLoop(); IL != ParentL; in rebuildLoopAfterUnswitch()
1722 Loop *PrevExitL = L.getParentLoop(); // The deepest possible exit loop. in rebuildLoopAfterUnswitch()
1725 [](Loop &L, SmallPtrSetImpl<BasicBlock *> &UnloopedBlocks) { in rebuildLoopAfterUnswitch()
1740 Loop &ExitL = *LI.getLoopFor(ExitBB); in rebuildLoopAfterUnswitch()
1785 if (Loop *BBL = LI.getLoopFor(BB)) in rebuildLoopAfterUnswitch()
1799 if (Loop *BBL = LI.getLoopFor(BB)) in rebuildLoopAfterUnswitch()
1811 SubLoops.begin(), SubLoops.end(), [&](Loop *SubL) { in rebuildLoopAfterUnswitch()
1837 if (Loop *ParentL = L.getParentLoop()) in rebuildLoopAfterUnswitch()
1876 Loop &L, Instruction &TI, ArrayRef<Value *> Invariants, in unswitchNontrivialInvariants()
1878 AssumptionCache &AC, function_ref<void(bool, ArrayRef<Loop *>)> UnswitchCB, in unswitchNontrivialInvariants()
1938 Loop *ParentL = L.getParentLoop(); in unswitchNontrivialInvariants()
1947 Loop *OuterExitL = &L; in unswitchNontrivialInvariants()
1949 Loop *NewOuterExitL = LI.getLoopFor(ExitBB); in unswitchNontrivialInvariants()
2139 SmallVector<Loop *, 4> NonChildClonedLoops; in unswitchNontrivialInvariants()
2151 SmallVector<Loop *, 4> HoistedLoops; in unswitchNontrivialInvariants()
2221 auto UpdateLoop = [&](Loop &UpdateL) { in unswitchNontrivialInvariants()
2224 for (Loop *ChildL : UpdateL) { in unswitchNontrivialInvariants()
2247 for (Loop *UpdatedL : in unswitchNontrivialInvariants()
2248 llvm::concat<Loop *>(NonChildClonedLoops, HoistedLoops)) { in unswitchNontrivialInvariants()
2262 for (Loop *OuterL = ParentL; OuterL != OuterExitL; in unswitchNontrivialInvariants()
2275 SmallVector<Loop *, 4> SibLoops; in unswitchNontrivialInvariants()
2276 for (Loop *UpdatedL : llvm::concat<Loop *>(NonChildClonedLoops, HoistedLoops)) in unswitchNontrivialInvariants()
2345 turnGuardIntoBranch(IntrinsicInst *GI, Loop &L, in turnGuardIntoBranch()
2422 Instruction &TI, Loop &L, LoopInfo &LI, DominatorTree &DT, in calculateUnswitchCostMultiplier()
2494 unswitchBestCondition(Loop &L, DominatorTree &DT, LoopInfo &LI, in unswitchBestCondition()
2496 function_ref<void(bool, ArrayRef<Loop *>)> UnswitchCB, in unswitchBestCondition()
2770 static bool unswitchLoop(Loop &L, DominatorTree &DT, LoopInfo &LI, in unswitchLoop()
2773 function_ref<void(bool, ArrayRef<Loop *>)> UnswitchCB, in unswitchLoop()
2812 PreservedAnalyses SimpleLoopUnswitchPass::run(Loop &L, LoopAnalysisManager &AM, in run()
2826 ArrayRef<Loop *> NewLoops) { in run()
2872 bool runOnLoop(Loop *L, LPPassManager &LPM) override;
2887 bool SimpleLoopUnswitchLegacyPass::runOnLoop(Loop *L, LPPassManager &LPM) { in runOnLoop()
2911 ArrayRef<Loop *> NewLoops) { in runOnLoop()