Home
last modified time | relevance | path

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

12

/freebsd-12-stable/contrib/llvm-project/llvm/lib/Transforms/Utils/
DMatrixUtils.cpp32 BasicBlock *Latch = BasicBlock::Create(Header->getContext(), Name + ".latch", in CreateLoop() local
37 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()
DLoopUnrollRuntime.cpp87 BasicBlock *Latch = L->getLoopLatch(); in ConnectProlog() local
88 assert(Latch && "Loop must have a latch"); in ConnectProlog()
89 BasicBlock *PrologLatch = cast<BasicBlock>(VMap[Latch]); in ConnectProlog()
96 for (BasicBlock *Succ : successors(Latch)) { in ConnectProlog()
118 Value *V = PN.getIncomingValueForBlock(Latch); in ConnectProlog()
191 BasicBlock *Latch = L->getLoopLatch(); in ConnectEpilog() local
192 assert(Latch && "Loop must have a latch"); in ConnectEpilog()
193 BasicBlock *EpilogLatch = cast<BasicBlock>(VMap[Latch]); in ConnectEpilog()
229 Value *V = PN.getIncomingValueForBlock(Latch); in ConnectEpilog()
253 for (BasicBlock *Succ : successors(Latch)) { in ConnectEpilog()
[all …]
DLoopPeel.cpp101 const BasicBlock *Latch = L->getLoopLatch(); in canPeel() local
102 const BranchInst *T = dyn_cast<BranchInst>(Latch->getTerminator()); in canPeel()
103 return T && T->isConditional() && L->isLoopExiting(Latch) && in canPeel()
118 const BasicBlock *Latch = L->getLoopLatch(); in canPeel() local
119 if (Latch != L->getExitingBlock()) in canPeel()
123 if (!isa<BranchInst>(Latch->getTerminator())) in canPeel()
512 BasicBlock *Latch = L->getLoopLatch(); in cloneLoopBlocks() local
572 BasicBlock *NewLatch = cast<BasicBlock>(VMap[Latch]); in cloneLoopBlocks()
595 Value *LatchVal = NewPHI->getIncomingValueForBlock(Latch); in cloneLoopBlocks()
678 BasicBlock *Latch = L->getLoopLatch(); in peelLoop() local
[all …]
DLoopRotationUtils.cpp220 BasicBlock *Latch = L->getLoopLatch(); in canRotateDeoptimizingLatchExit() local
221 assert(Latch && "need latch"); in canRotateDeoptimizingLatchExit()
222 BranchInst *BI = dyn_cast<BranchInst>(Latch->getTerminator()); in canRotateDeoptimizingLatchExit()
771 BasicBlock *Latch = L->getLoopLatch(); in simplifyLoopLatch() local
772 if (!Latch || Latch->hasAddressTaken()) in simplifyLoopLatch()
775 BranchInst *Jmp = dyn_cast<BranchInst>(Latch->getTerminator()); in simplifyLoopLatch()
779 BasicBlock *LastExit = Latch->getSinglePredecessor(); in simplifyLoopLatch()
787 if (!shouldSpeculateInstrs(Latch->begin(), Jmp->getIterator(), L)) in simplifyLoopLatch()
790 LLVM_DEBUG(dbgs() << "Folding loop latch " << Latch->getName() << " into " in simplifyLoopLatch()
794 MergeBlockIntoPredecessor(Latch, &DTU, LI, MSSAU, nullptr, in simplifyLoopLatch()
DLoopUnrollAndJam.cpp141 static bool processHeaderPhiOperands(BasicBlock *Header, BasicBlock *Latch, in processHeaderPhiOperands() argument
146 Value *V = Phi.getIncomingValueForBlock(Latch); in processHeaderPhiOperands()
169 BasicBlock *Latch, in moveHeaderPhiOperandsToForeBlocks() argument
175 processHeaderPhiOperands(Header, Latch, AftBlocks, in moveHeaderPhiOperandsToForeBlocks()
971 BasicBlock *Latch = L->getLoopLatch(); in isSafeToUnrollAndJam() local
975 Header, Latch, AftBlocks, [&AftBlocks, &SubLoop](Instruction *I) { in isSafeToUnrollAndJam()
DLoopUtils.cpp706 auto *Latch = L->getLoopLatch(); in breakLoopBackedge() local
707 assert(Latch && "multiple latches not yet supported"); in breakLoopBackedge()
723 auto *BackedgeBB = SplitEdge(Latch, Header, &DT, &LI, MSSAU.get()); in breakLoopBackedge()
747 BasicBlock *Latch = L->getLoopLatch(); in getExpectedExitLoopLatchBranch() local
748 if (!Latch) in getExpectedExitLoopLatchBranch()
751 BranchInst *LatchBR = dyn_cast<BranchInst>(Latch->getTerminator()); in getExpectedExitLoopLatchBranch()
752 if (!LatchBR || LatchBR->getNumSuccessors() != 2 || !L->isLoopExiting(Latch)) in getExpectedExitLoopLatchBranch()
DLoopUnroll.cpp745 for (BasicBlock *Latch : Latches) { in UnrollLoop()
746 BranchInst *Term = dyn_cast<BranchInst>(Latch->getTerminator()); in UnrollLoop()
748 (CompletelyUnroll && !LatchIsExiting && Latch == Latches.back())) && in UnrollLoop()
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Transforms/Scalar/
DLoopFuse.cpp159 BasicBlock *Latch; member
191 Latch(L->getLoopLatch()), L(L), Valid(true), in FusionCandidate()
236 return Preheader && Header && ExitingBlock && ExitBlock && Latch && L && in isValid()
249 assert(Latch == L->getLoopLatch() && "Latch is out of sync"); in verify()
271 Latch = L->getLoopLatch(); in updateAfterPeeling()
309 << "\tLatch: " << (Latch ? Latch->getName() : "nullptr") << "\n" in dump()
330 if (!Latch) in isEligibleForFusion()
1274 BranchInst *FCLatchBranch = dyn_cast<BranchInst>(FC.Latch->getTerminator()); in simplifyLatchBranch()
1288 moveInstructionsToTheBeginning(*FC0.Latch, *FC1.Latch, DT, PDT, DI); in mergeLatch()
1289 if (BasicBlock *Succ = FC0.Latch->getUniqueSuccessor()) { in mergeLatch()
[all …]
DInductiveRangeCheckElimination.cpp465 BasicBlock *Latch = nullptr; member
495 Result.Latch = cast<BasicBlock>(Map(Latch)); in map()
760 BasicBlock *Latch = L.getLoopLatch(); in parseLoopStructure() local
761 assert(Latch && "Simplified loops only have one latch!"); in parseLoopStructure()
763 if (Latch->getTerminator()->getMetadata(ClonedLoopTag)) { in parseLoopStructure()
768 if (!L.isLoopExiting(Latch)) { in parseLoopStructure()
780 BranchInst *LatchBr = dyn_cast<BranchInst>(Latch->getTerminator()); in parseLoopStructure()
794 const SCEV *LatchCount = SE.getExitCount(&L, Latch); in parseLoopStructure()
1039 Result.Latch = Latch; in parseLoopStructure()
1270 BasicBlock *BBInsertLocation = LS.Latch->getNextNode(); in changeIterationSpaceEnd()
[all …]
DLoopFlatten.cpp118 BasicBlock *Latch = L->getLoopLatch(); in findLoopComponents() local
119 if (L->getExitingBlock() != Latch) { in findLoopComponents()
134 bool ContinueOnTrue = L->contains(Latch->getTerminator()->getSuccessor(0)); in findLoopComponents()
150 BackBranch = cast<BranchInst>(Latch->getTerminator()); in findLoopComponents()
161 dyn_cast<BinaryOperator>(InductionPHI->getIncomingValueForBlock(Latch)); in findLoopComponents()
DLoopDeletion.cpp210 BasicBlock *Latch = L->getLoopLatch(); in canProveExitOnFirstIteration() local
212 if (!Predecessor || !Latch) in canProveExitOnFirstIteration()
381 return !LiveEdges.count({ Latch, Header }); in canProveExitOnFirstIteration()
DLoopUnrollAndJamPass.cpp371 BasicBlock *Latch = L->getLoopLatch(); in tryToUnrollAndJamLoop() local
373 unsigned OuterTripCount = SE.getSmallConstantTripCount(L, Latch); in tryToUnrollAndJamLoop()
374 unsigned OuterTripMultiple = SE.getSmallConstantTripMultiple(L, Latch); in tryToUnrollAndJamLoop()
DLoopPredication.cpp1056 auto *Latch = L->getLoopLatch(); in predicateLoopExits() local
1057 if (!Latch) in predicateLoopExits()
1064 const SCEV *LatchEC = SE->getExitCount(L, Latch); in predicateLoopExits()
1164 assert(!Latch || DT->dominates(ExitingBB, Latch)); in predicateLoopExits()
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/Hexagon/
DHexagonHardwareLoops.cpp409 MachineBasicBlock *Latch = L->getLoopLatch(); in findInductionRegister() local
411 if (!Header || !Preheader || !Latch || !ExitingBlock) in findInductionRegister()
436 if (Phi->getOperand(i+1).getMBB() != Latch) in findInductionRegister()
606 MachineBasicBlock *Latch = L->getLoopLatch(); in getLoopTripCount() local
611 else if (MBB == Latch) in getLoopTripCount()
628 if (ExitingBlock != Latch && (TB == Latch || FB == Latch)) { in getLoopTripCount()
631 bool NotAnalyzed = TII->analyzeBranch(*Latch, LTB, LFB, LCond, false); in getLoopTripCount()
634 if (TB == Latch) in getLoopTripCount()
1606 MachineBasicBlock *Latch = L->getLoopLatch(); in fixupInductionVariable() local
1609 if (!(Header && Latch && ExitingBlock)) in fixupInductionVariable()
[all …]
/freebsd-12-stable/contrib/llvm-project/llvm/lib/CodeGen/
DMachineLoopInfo.cpp92 if (MachineBasicBlock *Latch = getLoopLatch()) { in findLoopControlBlock() local
93 if (isLoopExiting(Latch)) in findLoopControlBlock()
94 return Latch; in findLoopControlBlock()
DHardwareLoops.cpp508 BasicBlock *Latch = ExitBranch->getParent(); in InsertPHICounter() local
512 Index->addIncoming(EltsRem, Latch); in InsertPHICounter()
/freebsd-12-stable/contrib/llvm-project/llvm/include/llvm/Analysis/
DLoopInfoImpl.h131 const BlockT *Latch = getLoopLatch(); in getUniqueNonLatchExitBlocks() local
132 assert(Latch && "Latch block must exists"); in getUniqueNonLatchExitBlocks()
134 [Latch](const BlockT *BB) { return BB != Latch; }); in getUniqueNonLatchExitBlocks()
219 BlockT *Latch = nullptr; in getLoopLatch() local
222 if (Latch) in getLoopLatch()
224 Latch = Pred; in getLoopLatch()
228 return Latch; in getLoopLatch()
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/X86/
DX86LowerAMXIntrinsics.cpp112 BasicBlock *Latch = in createLoop() local
117 BranchInst::Create(Latch, Body); in createLoop()
122 B.SetInsertPoint(Latch); in createLoop()
125 BranchInst::Create(Header, Exit, Cond, Latch); in createLoop()
126 IV->addIncoming(Inc, Latch); in createLoop()
134 {DominatorTree::Insert, Body, Latch}, in createLoop()
135 {DominatorTree::Insert, Latch, Header}, in createLoop()
136 {DominatorTree::Insert, Latch, Exit}, in createLoop()
142 L->addBasicBlockToLoop(Latch, *LI); in createLoop()
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Analysis/
DIVDescriptors.cpp729 auto *Latch = TheLoop->getLoopLatch(); in isFirstOrderRecurrence() local
730 if (!Preheader || !Latch) in isFirstOrderRecurrence()
735 Phi->getBasicBlockIndex(Latch) < 0) in isFirstOrderRecurrence()
740 auto *Previous = dyn_cast<Instruction>(Phi->getIncomingValueForBlock(Latch)); in isFirstOrderRecurrence()
1127 BasicBlock *Latch = L->getLoopLatch(); in getCastsForInductionPHI() local
1128 if (!Latch) in getCastsForInductionPHI()
1130 Value *Val = PN->getIncomingValueForBlock(Latch); in getCastsForInductionPHI()
1239 BasicBlock *Latch = AR->getLoop()->getLoopLatch(); in isInductionPHI() local
1240 if (!Latch) in isInductionPHI()
1243 dyn_cast<BinaryOperator>(Phi->getIncomingValueForBlock(Latch)); in isInductionPHI()
DLoopNestAnalysis.cpp81 const BasicBlock *Latch = OuterLoop.getLoopLatch(); in arePerfectlyNested() local
82 assert(Latch && "Expecting a valid loop latch"); in arePerfectlyNested()
83 const BranchInst *BI = dyn_cast<BranchInst>(Latch->getTerminator()); in arePerfectlyNested()
DLoopInfo.cpp175 if (BasicBlock *Latch = getLoopLatch()) in getLatchCmpInst() local
176 if (BranchInst *BI = dyn_cast_or_null<BranchInst>(Latch->getTerminator())) in getLatchCmpInst()
233 BasicBlock *Latch = L.getLoopLatch(); in getCanonicalPredicate() local
234 assert(Latch && "Expecting valid latch"); in getCanonicalPredicate()
236 BranchInst *BI = dyn_cast_or_null<BranchInst>(Latch->getTerminator()); in getCanonicalPredicate()
/freebsd-12-stable/contrib/llvm-project/llvm/include/llvm/Support/
DParallel.h36 class Latch {
42 explicit Latch(uint32_t Count = 0) : Count(Count) {} in Count()
43 ~Latch() { sync(); } in ~Latch()
63 Latch L;
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/ARM/
DMVETPAndVPTOptimisationsPass.cpp110 MachineBasicBlock *Latch = ML->getLoopLatch(); in findLoopComponents() local
111 if (!Header || !Latch) { in findLoopComponents()
118 for (auto &T : Latch->terminators()) { in findLoopComponents()
160 (LoopPhi->getOperand(2).getMBB() != Latch && in findLoopComponents()
161 LoopPhi->getOperand(4).getMBB() != Latch)) { in findLoopComponents()
167 Register StartReg = LoopPhi->getOperand(2).getMBB() == Latch in findLoopComponents()
/freebsd-12-stable/contrib/llvm-project/llvm/lib/Frontend/OpenMP/
DOMPIRBuilder.cpp1089 BasicBlock *Latch = in createLoopSkeleton() local
1113 Builder.CreateBr(Latch); in createLoopSkeleton()
1115 Builder.SetInsertPoint(Latch); in createLoopSkeleton()
1119 IndVarPHI->addIncoming(Next, Latch); in createLoopSkeleton()
1132 CL->Latch = Latch; in createLoopSkeleton()
2747 BBs.append({Preheader, Header, Cond, Latch, Exit, After}); in collectControlBlocks()
2786 assert(Latch); in assertOK()
2787 assert(isa<BranchInst>(Latch->getTerminator()) && in assertOK()
2789 assert(Latch->getSingleSuccessor() == Header && "Latch must jump to header"); in assertOK()
2792 assert(Latch->getSinglePredecessor() != nullptr); in assertOK()
[all …]
/freebsd-12-stable/contrib/llvm-project/llvm/include/llvm/Frontend/OpenMP/
DOMPIRBuilder.h1162 BasicBlock *Latch; variable
1195 BasicBlock *getLatch() const { return Latch; } in getLatch()

12