Home
last modified time | relevance | path

Searched refs:Latch (Results 1 – 25 of 46) sorted by relevance

12

/llvm-project-15.0.7/llvm/lib/Transforms/Utils/
H A DMatrixUtils.cpp37 BranchInst::Create(Latch, Body); in CreateLoop()
42 B.SetInsertPoint(Latch); in CreateLoop()
45 BranchInst::Create(Header, Exit, Cond, Latch); in CreateLoop()
46 IV->addIncoming(Inc, Latch); in CreateLoop()
54 {DominatorTree::Insert, Body, Latch}, in CreateLoop()
55 {DominatorTree::Insert, Latch, Header}, in CreateLoop()
56 {DominatorTree::Insert, Latch, Exit}, in CreateLoop()
62 L->addBasicBlockToLoop(Latch, LI); in CreateLoop()
86 ColumnLoop.Latch = ColBody->getSingleSuccessor(); in CreateTiledLoops()
90 RowLoop.Latch = RowBody->getSingleSuccessor(); in CreateTiledLoops()
[all …]
H A DLoopUnrollRuntime.cpp89 BasicBlock *Latch = L->getLoopLatch(); in ConnectProlog() local
90 assert(Latch && "Loop must have a latch"); in ConnectProlog()
98 for (BasicBlock *Succ : successors(Latch)) { in ConnectProlog()
198 BasicBlock *Latch = L->getLoopLatch(); in ConnectEpilog() local
199 assert(Latch && "Loop must have a latch"); in ConnectEpilog()
276 NewPN->addIncoming(PN.getIncomingValueForBlock(Latch), Latch); in ConnectEpilog()
322 BasicBlock *Latch = L->getLoopLatch(); in CloneLoopBlocks() local
356 if (Latch == *BB) { in CloneLoopBlocks()
579 BasicBlock *Latch = L->getLoopLatch(); in UnrollRuntimeLoopRemainder() local
833 if (PredBB == Latch) in UnrollRuntimeLoopRemainder()
[all …]
H A DLoopPeel.cpp86 const BasicBlock *Latch = L->getLoopLatch(); in canPeel() local
87 if (!L->isLoopExiting(Latch)) in canPeel()
91 if (!isa<BranchInst>(Latch->getTerminator())) in canPeel()
184 BasicBlock *Latch = L.getLoopLatch(); in peelToTurnInvariantLoadsDerefencebale() local
203 if (DT.dominates(BB, Latch) && L.isLoopInvariant(Ptr) && in peelToTurnInvariantLoadsDerefencebale()
336 BasicBlock *Latch = L->getLoopLatch(); in violatesLegacyMultiExitLoopCheck() local
337 if (!Latch) in violatesLegacyMultiExitLoopCheck()
583 BasicBlock *Latch = L->getLoopLatch(); in cloneLoopBlocks() local
643 BasicBlock *NewLatch = cast<BasicBlock>(VMap[Latch]); in cloneLoopBlocks()
750 BasicBlock *Latch = L->getLoopLatch(); in peelLoop() local
[all …]
H A DLoopRotationUtils.cpp210 BasicBlock *Latch = L->getLoopLatch(); in canRotateDeoptimizingLatchExit() local
211 assert(Latch && "need latch"); in canRotateDeoptimizingLatchExit()
212 BranchInst *BI = dyn_cast<BranchInst>(Latch->getTerminator()); in canRotateDeoptimizingLatchExit()
766 BasicBlock *Latch = L->getLoopLatch(); in simplifyLoopLatch() local
767 if (!Latch || Latch->hasAddressTaken()) in simplifyLoopLatch()
770 BranchInst *Jmp = dyn_cast<BranchInst>(Latch->getTerminator()); in simplifyLoopLatch()
774 BasicBlock *LastExit = Latch->getSinglePredecessor(); in simplifyLoopLatch()
782 if (!shouldSpeculateInstrs(Latch->begin(), Jmp->getIterator(), L)) in simplifyLoopLatch()
785 LLVM_DEBUG(dbgs() << "Folding loop latch " << Latch->getName() << " into " in simplifyLoopLatch()
789 MergeBlockIntoPredecessor(Latch, &DTU, LI, MSSAU, nullptr, in simplifyLoopLatch()
H A DLoopUtils.cpp690 auto *Latch = L->getLoopLatch(); in breakLoopBackedge() local
691 assert(Latch && "multiple latches not yet supported"); in breakLoopBackedge()
704 if (auto *BI = dyn_cast<BranchInst>(Latch->getTerminator())) { in breakLoopBackedge()
714 if (L->isLoopExiting(Latch)) { in breakLoopBackedge()
723 Header->removePredecessor(Latch, true); in breakLoopBackedge()
733 DTU.applyUpdates({{DominatorTree::Delete, Latch, Header}}); in breakLoopBackedge()
735 MSSAU->applyUpdates({{DominatorTree::Delete, Latch, Header}}, DT); in breakLoopBackedge()
743 auto *BackedgeBB = SplitEdge(Latch, Header, &DT, &LI, MSSAU.get()); in breakLoopBackedge()
768 BasicBlock *Latch = L->getLoopLatch(); in getExpectedExitLoopLatchBranch() local
769 if (!Latch) in getExpectedExitLoopLatchBranch()
[all …]
H A DLoopUnrollAndJam.cpp139 static bool processHeaderPhiOperands(BasicBlock *Header, BasicBlock *Latch, in processHeaderPhiOperands() argument
144 Value *V = Phi.getIncomingValueForBlock(Latch); in processHeaderPhiOperands()
167 BasicBlock *Latch, in moveHeaderPhiOperandsToForeBlocks() argument
173 processHeaderPhiOperands(Header, Latch, AftBlocks, in moveHeaderPhiOperandsToForeBlocks()
969 BasicBlock *Latch = L->getLoopLatch(); in isSafeToUnrollAndJam() local
973 Header, Latch, AftBlocks, [&AftBlocks, &SubLoop](Instruction *I) { in isSafeToUnrollAndJam()
/llvm-project-15.0.7/llvm/test/Transforms/LoopPredication/
H A Dprofitability.ll23 ; CHECK: Latch:
40 %result.in3 = phi i64* [ %arg2, %entry ], [ %arg, %Latch ]
41 %j2 = phi i64 [ 0, %entry ], [ %j.next, %Latch ]
46 br i1 %innercmp, label %Latch, label %exit, !prof !0
81 ; CHECK: Latch:
97 %result.in3 = phi i64* [ %arg2, %entry ], [ %arg, %Latch ]
98 %j2 = phi i64 [ 0, %entry ], [ %j.next, %Latch ]
103 br i1 %innercmp, label %Latch, label %exit
136 ; CHECK: Latch:
153 %j2 = phi i64 [ 0, %entry ], [ %j.next, %Latch ]
[all …]
/llvm-project-15.0.7/llvm/lib/Transforms/Scalar/
H A DLoopFuse.cpp159 BasicBlock *Latch; member
271 Latch = L->getLoopLatch(); in updateAfterPeeling()
309 << "\tLatch: " << (Latch ? Latch->getName() : "nullptr") << "\n" in dump()
330 if (!Latch) in isEligibleForFusion()
1288 moveInstructionsToTheBeginning(*FC0.Latch, *FC1.Latch, DT, PDT, DI); in mergeLatch()
1356 if (FC0.ExitingBlock != FC0.Latch) in performFusion()
1362 FC0.Latch->replaceSuccessorsPhiUsesWith(FC1.Latch); in performFusion()
1454 if (FC0.Latch != FC0.ExitingBlock) in performFusion()
1644 if (FC0.ExitingBlock != FC0.Latch) in fuseGuardedLoops()
1652 FC0.Latch->replaceSuccessorsPhiUsesWith(FC1.Latch); in fuseGuardedLoops()
[all …]
H A DInductiveRangeCheckElimination.cpp463 BasicBlock *Latch = nullptr; member
493 Result.Latch = cast<BasicBlock>(Map(Latch)); in map()
758 BasicBlock *Latch = L.getLoopLatch(); in parseLoopStructure() local
759 assert(Latch && "Simplified loops only have one latch!"); in parseLoopStructure()
761 if (Latch->getTerminator()->getMetadata(ClonedLoopTag)) { in parseLoopStructure()
766 if (!L.isLoopExiting(Latch)) { in parseLoopStructure()
792 const SCEV *LatchCount = SE.getExitCount(&L, Latch); in parseLoopStructure()
1037 Result.Latch = Latch; in parseLoopStructure()
1268 BasicBlock *BBInsertLocation = LS.Latch->getNextNode(); in changeIterationSpaceEnd()
1330 NewPHI->addIncoming(PN.getIncomingValueForBlock(LS.Latch), in changeIterationSpaceEnd()
[all …]
H A DLoopFlatten.cpp372 BasicBlock *Latch = L->getLoopLatch(); in findLoopComponents() local
373 if (L->getExitingBlock() != Latch) { in findLoopComponents()
388 bool ContinueOnTrue = L->contains(Latch->getTerminator()->getSuccessor(0)); in findLoopComponents()
404 BackBranch = cast<BranchInst>(Latch->getTerminator()); in findLoopComponents()
415 cast<BinaryOperator>(InductionPHI->getIncomingValueForBlock(Latch)); in findLoopComponents()
H A DLoopUnrollAndJamPass.cpp379 BasicBlock *Latch = L->getLoopLatch(); in tryToUnrollAndJamLoop() local
381 unsigned OuterTripCount = SE.getSmallConstantTripCount(L, Latch); in tryToUnrollAndJamLoop()
382 unsigned OuterTripMultiple = SE.getSmallConstantTripMultiple(L, Latch); in tryToUnrollAndJamLoop()
H A DLoopDeletion.cpp226 BasicBlock *Latch = L->getLoopLatch(); in canProveExitOnFirstIteration() local
228 if (!Predecessor || !Latch) in canProveExitOnFirstIteration()
395 return !LiveEdges.count({ Latch, Header }); in canProveExitOnFirstIteration()
H A DLoopPredication.cpp1117 auto *Latch = L->getLoopLatch(); in predicateLoopExits() local
1118 if (!Latch) in predicateLoopExits()
1125 const SCEV *LatchEC = SE->getExitCount(L, Latch); in predicateLoopExits()
1229 assert(!Latch || DT->dominates(ExitingBB, Latch)); in predicateLoopExits()
/llvm-project-15.0.7/llvm/lib/Target/Hexagon/
H A DHexagonHardwareLoops.cpp409 MachineBasicBlock *Latch = L->getLoopLatch(); in findInductionRegister() local
611 else if (MBB == Latch) in getLoopTripCount()
628 if (ExitingBlock != Latch && (TB == Latch || FB == Latch)) { in getLoopTripCount()
634 if (TB == Latch) in getLoopTripCount()
1595 if (!(Header && Latch && ExitingBlock)) in fixupInductionVariable()
1648 if (ExitingBlock != Latch && (TB == Latch || FB == Latch)) { in fixupInductionVariable()
1657 if (TB == Latch) in fixupInductionVariable()
1900 if (PredB == Latch) in createPreheaderForLoop()
1913 if (PredB != Latch) { in createPreheaderForLoop()
1934 if (MO.getMBB() != Latch) in createPreheaderForLoop()
[all …]
/llvm-project-15.0.7/llvm/lib/CodeGen/
H A DMachineLoopInfo.cpp92 if (MachineBasicBlock *Latch = getLoopLatch()) { in findLoopControlBlock() local
93 if (isLoopExiting(Latch)) in findLoopControlBlock()
94 return Latch; in findLoopControlBlock()
/llvm-project-15.0.7/llvm/include/llvm/Analysis/
H A DLoopInfoImpl.h130 const BlockT *Latch = getLoopLatch(); in getUniqueNonLatchExitBlocks() local
131 assert(Latch && "Latch block must exists"); in getUniqueNonLatchExitBlocks()
133 [Latch](const BlockT *BB) { return BB != Latch; }); in getUniqueNonLatchExitBlocks()
218 BlockT *Latch = nullptr; in getLoopLatch() local
221 if (Latch) in getLoopLatch()
223 Latch = Pred; in getLoopLatch()
227 return Latch; in getLoopLatch()
/llvm-project-15.0.7/llvm/include/llvm/Support/
H A DParallel.h36 class Latch {
42 explicit Latch(uint32_t Count = 0) : Count(Count) {} in Count()
43 ~Latch() { in ~Latch()
66 Latch L;
/llvm-project-15.0.7/llvm/lib/Target/X86/
H A DX86LowerAMXIntrinsics.cpp113 BasicBlock *Latch = in createLoop() local
118 BranchInst::Create(Latch, Body); in createLoop()
123 B.SetInsertPoint(Latch); in createLoop()
126 BranchInst::Create(Header, Exit, Cond, Latch); in createLoop()
127 IV->addIncoming(Inc, Latch); in createLoop()
135 {DominatorTree::Insert, Body, Latch}, in createLoop()
136 {DominatorTree::Insert, Latch, Header}, in createLoop()
137 {DominatorTree::Insert, Latch, Exit}, in createLoop()
143 L->addBasicBlockToLoop(Latch, *LI); in createLoop()
/llvm-project-15.0.7/llvm/lib/Analysis/
H A DIVDescriptors.cpp936 auto *Latch = TheLoop->getLoopLatch(); in isFirstOrderRecurrence() local
937 if (!Preheader || !Latch) in isFirstOrderRecurrence()
942 Phi->getBasicBlockIndex(Latch) < 0) in isFirstOrderRecurrence()
947 auto *Previous = dyn_cast<Instruction>(Phi->getIncomingValueForBlock(Latch)); in isFirstOrderRecurrence()
1407 BasicBlock *Latch = L->getLoopLatch(); in getCastsForInductionPHI() local
1408 if (!Latch) in getCastsForInductionPHI()
1410 Value *Val = PN->getIncomingValueForBlock(Latch); in getCastsForInductionPHI()
1519 BasicBlock *Latch = AR->getLoop()->getLoopLatch(); in isInductionPHI() local
1520 if (!Latch) in isInductionPHI()
1532 dyn_cast<BinaryOperator>(Phi->getIncomingValueForBlock(Latch)); in isInductionPHI()
H A DLoopInfo.cpp171 if (BasicBlock *Latch = getLoopLatch()) in getLatchCmpInst() local
172 if (BranchInst *BI = dyn_cast_or_null<BranchInst>(Latch->getTerminator())) in getLatchCmpInst()
229 BasicBlock *Latch = L.getLoopLatch(); in getCanonicalPredicate() local
230 assert(Latch && "Expecting valid latch"); in getCanonicalPredicate()
232 BranchInst *BI = dyn_cast_or_null<BranchInst>(Latch->getTerminator()); in getCanonicalPredicate()
308 BasicBlock *Latch = getLoopLatch(); in getInductionVariable() local
309 Value *StepInst = IndVar.getIncomingValueForBlock(Latch); in getInductionVariable()
H A DLoopNestAnalysis.cpp54 const BasicBlock *Latch = OuterLoop.getLoopLatch(); in getOuterLoopLatchCmp() local
55 assert(Latch && "Expecting a valid loop latch"); in getOuterLoopLatchCmp()
57 const BranchInst *BI = dyn_cast<BranchInst>(Latch->getTerminator()); in getOuterLoopLatchCmp()
/llvm-project-15.0.7/llvm/unittests/Transforms/Utils/
H A DUnrollLoopTest.cpp31 TEST(LoopUnrollRuntime, Latch) { in TEST() argument
/llvm-project-15.0.7/llvm/include/llvm/Transforms/Utils/
H A DMatrixUtils.h51 BasicBlock *Latch = nullptr; member
/llvm-project-15.0.7/llvm/lib/Target/ARM/
H A DMVETPAndVPTOptimisationsPass.cpp115 MachineBasicBlock *Latch = ML->getLoopLatch(); in findLoopComponents() local
116 if (!Header || !Latch) { in findLoopComponents()
123 for (auto &T : Latch->terminators()) { in findLoopComponents()
165 (LoopPhi->getOperand(2).getMBB() != Latch && in findLoopComponents()
166 LoopPhi->getOperand(4).getMBB() != Latch)) { in findLoopComponents()
172 Register StartReg = LoopPhi->getOperand(2).getMBB() == Latch in findLoopComponents()
/llvm-project-15.0.7/llvm/lib/Frontend/OpenMP/
H A DOMPIRBuilder.cpp1860 BasicBlock *Latch = in createLoopSkeleton() local
1884 Builder.CreateBr(Latch); in createLoopSkeleton()
1886 Builder.SetInsertPoint(Latch); in createLoopSkeleton()
1890 IndVarPHI->addIncoming(Next, Latch); in createLoopSkeleton()
1901 CL->Latch = Latch; in createLoopSkeleton()
2404 BasicBlock *Latch = CLI->getLatch(); in applyDynamicWorkshareLoop() local
2857 BasicBlock *Latch = Loop->getLatch(); in addLoopMetadata() local
4434 if (Pred != Latch) in getPreheader()
4526 assert(Latch); in assertOK()
4533 assert(!isa<PHINode>(Latch->front())); in assertOK()
[all …]

12