| /freebsd-12-stable/contrib/llvm-project/llvm/lib/Transforms/Utils/ |
| D | MatrixUtils.cpp | 32 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()
|
| D | LoopUnrollRuntime.cpp | 87 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 …]
|
| D | LoopPeel.cpp | 101 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 …]
|
| D | LoopRotationUtils.cpp | 220 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()
|
| D | LoopUnrollAndJam.cpp | 141 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()
|
| D | LoopUtils.cpp | 706 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()
|
| D | LoopUnroll.cpp | 745 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/ |
| D | LoopFuse.cpp | 159 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 …]
|
| D | InductiveRangeCheckElimination.cpp | 465 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 …]
|
| D | LoopFlatten.cpp | 118 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()
|
| D | LoopDeletion.cpp | 210 BasicBlock *Latch = L->getLoopLatch(); in canProveExitOnFirstIteration() local 212 if (!Predecessor || !Latch) in canProveExitOnFirstIteration() 381 return !LiveEdges.count({ Latch, Header }); in canProveExitOnFirstIteration()
|
| D | LoopUnrollAndJamPass.cpp | 371 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()
|
| D | LoopPredication.cpp | 1056 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/ |
| D | HexagonHardwareLoops.cpp | 409 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/ |
| D | MachineLoopInfo.cpp | 92 if (MachineBasicBlock *Latch = getLoopLatch()) { in findLoopControlBlock() local 93 if (isLoopExiting(Latch)) in findLoopControlBlock() 94 return Latch; in findLoopControlBlock()
|
| D | HardwareLoops.cpp | 508 BasicBlock *Latch = ExitBranch->getParent(); in InsertPHICounter() local 512 Index->addIncoming(EltsRem, Latch); in InsertPHICounter()
|
| /freebsd-12-stable/contrib/llvm-project/llvm/include/llvm/Analysis/ |
| D | LoopInfoImpl.h | 131 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/ |
| D | X86LowerAMXIntrinsics.cpp | 112 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/ |
| D | IVDescriptors.cpp | 729 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()
|
| D | LoopNestAnalysis.cpp | 81 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()
|
| D | LoopInfo.cpp | 175 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/ |
| D | Parallel.h | 36 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/ |
| D | MVETPAndVPTOptimisationsPass.cpp | 110 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/ |
| D | OMPIRBuilder.cpp | 1089 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/ |
| D | OMPIRBuilder.h | 1162 BasicBlock *Latch; variable 1195 BasicBlock *getLatch() const { return Latch; } in getLatch()
|