Home
last modified time | relevance | path

Searched refs:Loop (Results 1 – 25 of 310) sorted by relevance

12345678910>>...13

/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/
H A DLoopUtils.h32 class Loop; variable
125 SinkAndHoistLICMFlags(bool IsSink, Loop *L = nullptr,
218 getOptionalElementCountLoopAttribute(const Loop *TheLoop);
250 bool hasDisableAllTransformsHint(const Loop *L);
253 bool hasDisableLICMTransformsHint(const Loop *L);
284 TransformationMode hasUnrollTransformation(const Loop *L);
303 getLoopEstimatedTripCount(Loop *L,
394 bool isKnownNonNegativeInLoop(const SCEV *S, const Loop *L,
432 void setProfileInfoAfterUnrolling(Loop *OrigLoop, Loop *UnrolledLoop,
462 Loop *cloneLoop(Loop *L, Loop *PL, ValueToValueMapTy &VM,
[all …]
H A DUnrollLoop.h28 class Loop; variable
37 using NewLoopsMap = SmallDenseMap<const Loop *, Loop *, 4>;
48 const Loop* addClonedBlockToLoopInfo(BasicBlock *OriginalBB,
81 Loop **RemainderLoop = nullptr);
84 Loop *L, unsigned Count, bool AllowExpensiveTripCount,
88 Loop **ResultLoop = nullptr);
96 Loop **EpilogueLoop = nullptr);
101 bool computeUnrollCount(Loop *L, const TargetTransformInfo &TTI,
111 void simplifyLoopAfterUnroll(Loop *L, bool SimplifyIVs, LoopInfo *LI,
119 Loop *L, ScalarEvolution &SE, const TargetTransformInfo &TTI,
[all …]
H A DLoopVersioning.h25 class Loop; variable
47 ArrayRef<RuntimePointerCheck> Checks, Loop *L, LoopInfo *LI,
72 Loop *getVersionedLoop() { return VersionedLoop; } in getVersionedLoop()
76 Loop *getNonVersionedLoop() { return NonVersionedLoop; } in getNonVersionedLoop()
113 Loop *VersionedLoop;
116 Loop *NonVersionedLoop;
/freebsd-13.1/contrib/llvm-project/llvm/lib/CodeGen/
H A DMachineLoopUtils.cpp31 MachineFunction &MF = *Loop->getParent(); in PeelSingleBlockLoop()
33 if (Preheader == Loop) in PeelSingleBlockLoop()
34 Preheader = *std::next(Loop->pred_begin()); in PeelSingleBlockLoop()
36 if (Exit == Loop) in PeelSingleBlockLoop()
37 Exit = *std::next(Loop->succ_begin()); in PeelSingleBlockLoop()
41 MF.insert(Loop->getIterator(), NewBB); in PeelSingleBlockLoop()
47 for (MachineInstr &MI : *Loop) { in PeelSingleBlockLoop()
108 NewBB->addSuccessor(Loop); in PeelSingleBlockLoop()
115 Loop->replaceSuccessor(Exit, NewBB); in PeelSingleBlockLoop()
116 Exit->replacePhiUsesWith(Loop, NewBB); in PeelSingleBlockLoop()
[all …]
/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/
H A DLoopPassManager.h189 static const Loop &getLoopFromIR(Loop &L) { return L; } in getLoopFromIR()
190 static const Loop &getLoopFromIR(LoopNest &LN) { in getLoopFromIR()
272 void setParentLoop(Loop *L) {
292 for (Loop *NewL : NewChildLoops)
313 for (Loop *NewL : NewSibLoops)
344 SmallPriorityWorklist<Loop *, 4> &Worklist;
349 Loop *CurrentL;
356 Loop *ParentL;
370 const Loop &L = getLoopFromIR(IR);
373 if (!PI.runBeforePass<Loop>(*Pass, L))
[all …]
/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/Analysis/
H A DLoopNestAnalysis.h23 using LoopVectorTy = SmallVector<Loop *, 8>;
30 LoopNest(Loop &Root, ScalarEvolution &SE);
48 static bool arePerfectlyNested(const Loop &OuterLoop, const Loop &InnerLoop,
60 static unsigned getMaxPerfectDepth(const Loop &Root, ScalarEvolution &SE);
71 Loop &getOutermostLoop() const { return *Loops.front(); } in getOutermostLoop()
76 Loop *getInnermostLoop() const { in getInnermostLoop()
83 Loop *LastLoop = Loops.back(); in getInnermostLoop()
91 Loop *getLoop(unsigned Index) const { in getLoop()
100 ArrayRef<Loop *> getLoops() const { return Loops; } in getLoops()
140 return all_of(Loops, [](const Loop *L) { return L->isRotatedForm(); }); in areAllLoopsRotatedForm()
[all …]
H A DScalarEvolution.h63 class Loop; variable
864 void forgetLoop(const Loop *L);
870 void forgetTopmostLoop(const Loop *L);
882 void forgetLoopDispositions(const Loop *L);
1217 const SCEV *S, const Loop *L,
1553 bool loopHasNoSideEffects(const Loop *L) {
1557 bool loopHasNoAbnormalExits(const Loop *L) {
1563 bool loopIsFiniteByAssumption(const Loop *L);
1715 const Loop *L;
1976 const Loop *L);
[all …]
H A DLoopCacheAnalysis.h32 using LoopVectorTy = SmallVector<Loop *, 8>;
93 CacheCostTy computeRefCost(const Loop &L, unsigned CLS) const;
100 bool isLoopInvariant(const Loop &L) const;
106 bool isConsecutive(const Loop &L, unsigned CLS) const;
114 const Loop &L) const;
176 using LoopTripCountTy = std::pair<const Loop *, unsigned>;
177 using LoopCacheCostTy = std::pair<const Loop *, CacheCostTy>;
200 CacheCostTy getLoopCost(const Loop &L) const { in getLoopCost()
222 CacheCostTy computeLoopCacheCost(const Loop &L,
236 const Loop &L) const;
[all …]
H A DDependenceAnalysis.h50 class Loop; variable
391 const Loop *AssociatedLoop;
436 const Loop *getAssociatedLoop() const;
541 const Loop *LoopNest,
547 const Loop *LoopNest,
553 const Loop *LoopNest,
654 const Loop *CurrentLoop,
691 const Loop *CurrentLoop,
744 const Loop *SrcLoop,
745 const Loop *DstLoop,
[all …]
H A DLoopInfo.h59 class Loop; variable
521 Loop.print(OS);
530 class LLVM_EXTERNAL_VISIBILITY Loop : public LoopBase<BasicBlock, Loop> {
646 static Optional<Loop::LoopBounds> getBounds(const Loop &L, PHINode &IndVar,
712 const Loop &L;
874 Loop() = default;
878 explicit Loop(BasicBlock *BB) : LoopBase<BasicBlock, Loop>(BB) {} in Loop() function
879 ~Loop() = default;
1111 void erase(Loop *L);
1161 auto Contains = [](const Loop *Outer, const Loop *Inner) { in movementPreservesLCSSAForm()
[all …]
H A DLoopPass.h38 virtual bool runOnLoop(Loop *L, LPPassManager &LPM) = 0;
44 virtual bool doInitialization(Loop *L, LPPassManager &LPM) { in doInitialization()
72 bool skipLoop(const Loop *L) const;
108 void addLoop(Loop &L);
111 void markLoopAsDeleted(Loop &L);
114 std::deque<Loop *> LQ;
116 Loop *CurrentLoop;
H A DDivergenceAnalysis.h28 class Loop; variable
46 DivergenceAnalysisImpl(const Function &F, const Loop *RegionLoop,
51 const Loop *getRegionLoop() const { return RegionLoop; } in getRegionLoop()
97 const Loop &DivLoop);
101 const Loop &OuterDivLoop);
106 const Loop &OuterDivLoop);
119 const Loop *RegionLoop;
125 DenseSet<const Loop *> DivergentLoops;
H A DBlockFrequencyInfoImpl.h62 class Loop; variable
285 bool isLoopHeader() const { return Loop && Loop->isHeader(Node); } in isLoopHeader()
288 return isLoopHeader() && Loop->Parent && Loop->Parent->isIrreducible() && in isDoubleLoopHeader()
294 return Loop; in getContainingLoop()
319 if (!Loop || !Loop->IsPackaged) in getPackagedLoop()
321 auto L = Loop; in getPackagedLoop()
553 using LoopT = Loop;
1226 if (!Loop)
1235 Working[Index].Loop = HeaderData.Loop;
1317 if (!propagateMassToSuccessors(&Loop, Loop.getHeader()))
[all …]
/freebsd-13.1/contrib/llvm-project/llvm/lib/Analysis/
H A DLoopInfo.cpp201 Optional<Loop::LoopBounds> Loop::LoopBounds::getBounds(const Loop &L, in getBounds()
287 Optional<Loop::LoopBounds> Loop::getBounds(ScalarEvolution &SE) const { in getBounds()
503 MDNode *Loop::getLoopID() const { in getLoopID()
635 Loop::LocRange Loop::getLocRange() const { in getLocRange()
684 Loop &Unloop;
693 DenseMap<Loop *, Loop *> SubloopParents;
710 Loop *getNearestLoop(BasicBlock *BB, Loop *BBLoop);
803 Loop *UnloopUpdater::getNearestLoop(BasicBlock *BB, Loop *BBLoop) { in getNearestLoop()
807 Loop *NearLoop = BBLoop; in getNearestLoop()
809 Loop *Subloop = nullptr; in getNearestLoop()
[all …]
H A DBlockFrequencyInfoImpl.cpp412 Loop.Scale = in computeLoopScale()
428 Loop->Exits.clear(); in packageLoop()
431 Loop.IsPackaged = true; in packageLoop()
523 << ": mass = " << Loop.Mass << ", scale = " << Loop.Scale in unwrapLoop()
525 Loop.Scale *= Loop.Mass.toScaled(); in unwrapLoop()
526 Loop.IsPackaged = false; in unwrapLoop()
549 unwrapLoop(*this, Loop); in unwrapLoops()
643 return getBlockName(Loop.getHeader()) + (Loop.isIrreducible() ? "**" : "*"); in getLoopName()
799 BFI.Working[N.Index].Loop->Parent = &*Loop; in createIrreducibleLoop()
801 BFI.Working[N.Index].Loop = &*Loop; in createIrreducibleLoop()
[all …]
H A DSyncDependenceAnalysis.cpp138 static void computeLoopPO(const LoopInfo &LI, Loop &Loop, POCB CallBack,
142 static void computeStackPO(BlockStack &Stack, const LoopInfo &LI, Loop *Loop, in computeStackPO() argument
144 const auto *LoopHeader = Loop ? Loop->getHeader() : nullptr; in computeStackPO()
149 bool IsNestedLoop = NestedLoop != Loop; in computeStackPO()
159 if (Loop && !Loop->contains(NestedExitBB)) in computeStackPO()
179 if (Loop && !Loop->contains(SuccBB)) in computeStackPO()
204 static void computeLoopPO(const LoopInfo &LI, Loop &Loop, POCB CallBack, in computeLoopPO() argument
208 const auto *LoopHeader = Loop.getHeader(); in computeLoopPO()
216 if (!Loop.contains(BB)) in computeLoopPO()
224 computeStackPO(Stack, LI, &Loop, CallBack, Finalized); in computeLoopPO()
H A DLoopNestAnalysis.cpp36 static bool checkLoopsStructure(const Loop &OuterLoop, const Loop &InnerLoop,
43 LoopNest::LoopNest(Loop &Root, ScalarEvolution &SE) in LoopNest()
48 std::unique_ptr<LoopNest> LoopNest::getLoopNest(Loop &Root, in getLoopNest()
53 bool LoopNest::arePerfectlyNested(const Loop &OuterLoop, const Loop &InnerLoop, in arePerfectlyNested()
165 for (Loop *L : depth_first(const_cast<Loop *>(Loops.front()))) { in getPerfectLoops()
181 unsigned LoopNest::getMaxPerfectDepth(const Loop &Root, ScalarEvolution &SE) { in getMaxPerfectDepth()
185 const Loop *CurrentLoop = &Root; in getMaxPerfectDepth()
190 const Loop *InnerLoop = SubLoops->front(); in getMaxPerfectDepth()
235 static bool checkLoopsStructure(const Loop &OuterLoop, const Loop &InnerLoop, in checkLoopsStructure()
366 for (const Loop *L : LN.getLoops()) in operator <<()
[all …]
H A DDivergenceAnalysis.cpp94 const Function &F, const Loop *RegionLoop, const DominatorTree &DT, in DivergenceAnalysisImpl()
118 for (const auto *Loop = LI.getLoopFor(Inst->getParent()); in isTemporalDivergent() local
119 Loop != RegionLoop && !Loop->contains(&ObservingBlock); in isTemporalDivergent()
120 Loop = Loop->getParentLoop()) { in isTemporalDivergent()
121 if (DivergentLoops.contains(Loop)) in isTemporalDivergent()
170 const Instruction &I, const Loop &OuterDivLoop) { in analyzeTemporalDivergence()
192 const BasicBlock &DivExit, const Loop &OuterDivLoop) { in analyzeLoopExitDivergence()
246 const BasicBlock &DivExit, const Loop &InnerDivLoop) { in propagateLoopExitDivergence()
250 const Loop *DivLoop = &InnerDivLoop; in propagateLoopExitDivergence()
251 const Loop *OuterDivLoop = DivLoop; in propagateLoopExitDivergence()
[all …]
H A DLoopAnalysisManager.cpp25 template class AllAnalysesOn<Loop>;
26 template class AnalysisManager<Loop, LoopStandardAnalysisResults &>;
28 template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
39 SmallVector<Loop *, 4> PreOrderLoops = LI->getLoopsInReverseSiblingPreorder(); in invalidate()
65 for (Loop *L : PreOrderLoops) { in invalidate()
87 PA.allAnalysesInSetPreserved<AllAnalysesOn<Loop>>(); in invalidate()
95 for (Loop *L : reverse(PreOrderLoops)) { in invalidate()
H A DLoopCacheAnalysis.cpp61 static Loop *getInnerMostLoop(const LoopVectorTy &Loops) { in getInnerMostLoop()
64 Loop *LastLoop = Loops.back(); in getInnerMostLoop()
65 Loop *ParentLoop = LastLoop->getParentLoop(); in getInnerMostLoop()
73 [](const Loop *L1, const Loop *L2) { in getInnerMostLoop()
262 CacheCostTy IndexedReference::computeRefCost(const Loop &L, in computeRefCost()
330 if (Loop *L = LI.getLoopFor(BB)) { in delinearize()
473 const Loop *L = LC.first; in operator <<()
488 for (const Loop *L : Loops) { in CacheCost()
524 for (const Loop *L : Loops) { in calculateCacheFootprint()
542 Loop *InnerMostLoop = getInnerMostLoop(Loops); in populateReferenceGroups()
[all …]
/freebsd-13.1/contrib/llvm-project/llvm/lib/Transforms/Scalar/
H A DLoopPassManager.cpp28 LPMUpdater &>::run(Loop &L, LoopAnalysisManager &AM, in run()
42 PA.preserveSet<AllAnalysesOn<Loop>>(); in run()
225 SmallPriorityWorklist<Loop *, 4> Worklist; in run()
236 for (Loop *L : LI) in run()
245 const Loop *L = any_isa<const Loop *>(IR) in run()
246 ? any_cast<const Loop *>(IR) in run()
258 Loop *L = Worklist.pop_back_val(); in run()
273 if (!PI.runBeforePass<Loop>(*Pass, *L)) in run()
284 PI.runAfterPassInvalidated<Loop>(*Pass, PassPA); in run()
286 PI.runAfterPass<Loop>(*Pass, *L, PassPA); in run()
[all …]
H A DSimpleLoopUnswitch.cpp401 Loop *Current = TopMost; in getTopMostExitingLoop()
708 Loop *OuterL = &L; in unswitchTrivialSwitch()
1252 static Loop *cloneLoopNest(Loop &OrigRootL, Loop *RootParentL, in cloneLoopNest()
1254 auto AddClonedBlocksToLoop = [&](Loop &OrigL, Loop &ClonedL) { in cloneLoopNest()
1280 SmallVector<std::pair<Loop *, Loop *>, 16> LoopsToClone; in cloneLoopNest()
1314 Loop *ClonedL = nullptr; in buildClonedLoops()
1326 Loop *ParentL = nullptr; in buildClonedLoops()
1800 Loop *ParentL = nullptr; in rebuildLoopAfterUnswitch()
2104 Loop *OuterExitL = &L; in unswitchNontrivialInvariants()
2428 for (Loop *UpdatedL : in unswitchNontrivialInvariants()
[all …]
H A DLoopInterchange.cpp346 bool tightlyNested(Loop *Outer, Loop *Inner);
357 Loop *OuterLoop;
358 Loop *InnerLoop;
385 Loop *OuterLoop;
386 Loop *InnerLoop;
405 void restructureLoops(Loop *NewInner, Loop *NewOuter,
408 void removeChildLoop(Loop *OuterLoop, Loop *InnerLoop);
414 Loop *OuterLoop;
415 Loop *InnerLoop;
970 areInnerLoopExitPHIsSupported(Loop *InnerL, Loop *OuterL, in areInnerLoopExitPHIsSupported()
[all …]
/freebsd-13.1/contrib/llvm-project/llvm/lib/Transforms/Utils/
H A DLoopUtils.cpp690 Loop::iterator I = find(*LI, L); in deleteDeadLoop()
698 static Loop *getOutermostLoop(Loop *L) { in getOutermostLoop()
770 llvm::getLoopEstimatedTripCount(Loop *L, in getLoopEstimatedTripCount()
1419 void llvm::setProfileInfoAfterUnrolling(Loop *OrigLoop, Loop *UnrolledLoop, in setProfileInfoAfterUnrolling()
1455 for (Loop *RootL : Loops) { in appendReversedLoopsToWorklist()
1478 ArrayRef<Loop *> &Loops, SmallPriorityWorklist<Loop *, 4> &Worklist);
1481 llvm::appendLoopsToWorklist<Loop &>(Loop &L,
1489 Loop *llvm::cloneLoop(Loop *L, Loop *PL, ValueToValueMapTy &VM, in cloneLoop()
1491 Loop &New = *LI->AllocateLoop(); in cloneLoop()
1507 for (Loop *I : *L) in cloneLoop()
[all …]
H A DLoopUnrollAndJam.cpp75 Loop *SubLoop = L.getSubLoops()[0]; in partitionLoopBlocks()
105 Loop &Root, Loop &JamLoop, BasicBlockSet &JamLoopBlocks, in partitionOuterLoopBlocks()
110 for (Loop *L : Root.getLoopsInPreorder()) { in partitionOuterLoopBlocks()
123 static bool partitionOuterLoopBlocks(Loop *L, Loop *SubLoop, in partitionOuterLoopBlocks()
235 Loop *SubLoop = *L->begin(); in UnrollAndJamLoop()
373 SmallDenseMap<const Loop *, Loop *, 4> NewLoops; in UnrollAndJamLoop()
766 for (Loop *L : Root.getLoopsInPreorder()) in checkDependencies()
816 const Loop *L = &Root; in isEligibleLoopForm()
861 static Loop *getInnerMostLoop(Loop *L) { in getInnerMostLoop()
926 Loop *JamLoop = getInnerMostLoop(L); in isSafeToUnrollAndJam()
[all …]

12345678910>>...13