Home
last modified time | relevance | path

Searched refs:Preheader (Results 1 – 25 of 54) sorted by relevance

123

/llvm-project/llvm/lib/Transforms/Scalar/
H A DLoopFuse.cpp149 /// Preheader of the loop this candidate represents
150 BasicBlock *Preheader;
187 : Preheader(L->getLoopPreheader()), Header(L->getHeader()), in FusionCandidate()
234 return Preheader && Header && ExitingBlock && ExitBlock && Latch && L && in isValid()
242 assert(Preheader == L->getLoopPreheader() && "Preheader is out of sync"); in verify()
259 return Preheader; in getEntryBlock()
265 Preheader = L->getLoopPreheader(); in updateAfterPeeling()
286 return (GuardBranch->getSuccessor(0) == Preheader) in getNonLoopBlock()
300 << "\tPreheader: " << (Preheader in dump()
151 BasicBlock *Preheader; global() member
[all...]
H A DLoopDeletion.cpp66 BasicBlock *Preheader, LoopInfo &LI) { in isLoopDead() argument
91 if (!L->makeLoopInvariant(I, Changed, Preheader->getTerminator(), in isLoopDead()
150 auto *Preheader = L->getLoopPreheader(); in isLoopNeverExecuted() local
153 assert(Preheader && "Needs preheader!"); in isLoopNeverExecuted()
155 if (Preheader->isEntryBlock()) in isLoopNeverExecuted()
159 for (auto *Pred: predecessors(Preheader)) { in isLoopNeverExecuted()
167 if (Taken == Preheader) in isLoopNeverExecuted()
170 assert(!pred_empty(Preheader) && in isLoopNeverExecuted()
171 "Preheader should have predecessors at this point!"); in isLoopNeverExecuted()
445 BasicBlock *Preheader in deleteLoopIfDead() local
[all...]
H A DLoopSink.cpp22 // For I in Preheader:
72 /// Freq(Preheader) = 100
74 /// Even if Freq(BBs) < Freq(Preheader), we will not sink from Preheade to
302 BasicBlock *Preheader = L.getLoopPreheader(); in sinkLoopInvariantInstructions()
303 assert(Preheader && "Expected loop to have preheader"); in sinkLoopInvariantInstructions()
305 assert(Preheader->getParent()->hasProfileData() && in sinkLoopInvariantInstructions()
308 const BlockFrequency PreheaderFreq = BFI.getBlockFreq(Preheader); in sinkLoopInvariantInstructions()
338 for (Instruction &I : llvm::make_early_inc_range(llvm::reverse(*Preheader))) { in sinkLoopInvariantInstructions()
384 BasicBlock *Preheader = L.getLoopPreheader(); in run()
385 if (!Preheader) in run()
286 BasicBlock *Preheader = L.getLoopPreheader(); sinkLoopInvariantInstructions() local
368 BasicBlock *Preheader = L.getLoopPreheader(); run() local
[all...]
H A DLICM.cpp448 BasicBlock *Preheader = L->getLoopPreheader(); in runOnLoop()
471 if (Preheader) in runOnLoop()
483 if (!DisablePromotion && Preheader && L->hasDedicatedExits() && in runOnLoop()
900 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in hoistRegion()
919 Preheader->getTerminator(), AC, AllowSpeculation)) { in hoistRegion()
1993 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in promoteLoopAccessesToScalars()
2054 const DataLayout &MDL = Preheader->getDataLayout(); in promoteLoopAccessesToScalars()
2106 Preheader->getTerminator(), AC, AllowSpeculation)) { in promoteLoopAccessesToScalars()
2154 Store->getAlign(), MDL, Preheader->getTerminator(), AC, DT, TLI); in promoteLoopAccessesToScalars()
2253 Preheader in promoteLoopAccessesToScalars()
446 BasicBlock *Preheader = L->getLoopPreheader(); runOnLoop() local
899 BasicBlock *Preheader = CurLoop->getLoopPreheader(); hoistRegion() local
1987 BasicBlock *Preheader = CurLoop->getLoopPreheader(); promoteLoopAccessesToScalars() local
2455 auto *Preheader = L.getLoopPreheader(); hoistMinMax() local
2517 BasicBlock *Preheader = L.getLoopPreheader(); hoistGEP() local
2566 auto *Preheader = L.getLoopPreheader(); hoistAdd() local
2625 auto *Preheader = L.getLoopPreheader(); hoistSub() local
2750 auto *Preheader = L.getLoopPreheader(); hoistMulAddAssociation() local
[all...]
H A DLoopSimplifyCFG.cpp351 BasicBlock *Preheader = L.getLoopPreheader(); in handleDeadExits() local
353 Preheader, Preheader->getTerminator(), &DT, &LI, MSSAU); in handleDeadExits()
355 IRBuilder<> Builder(Preheader->getTerminator()); in handleDeadExits()
358 Preheader->getTerminator()->eraseFromParent(); in handleDeadExits()
379 DTUpdates.push_back({DominatorTree::Insert, Preheader, BB}); in handleDeadExits()
384 if (Loop *OuterLoop = LI.getLoopFor(Preheader)) { in handleDeadExits()
H A DLoopIdiomRecognize.cpp1023 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in processLoopStridedStore()
1024 IRBuilder<> Builder(Preheader->getTerminator()); in processLoopStridedStore()
1048 Expander.expandCodeFor(Start, DestInt8PtrTy, Preheader->getTerminator()); in processLoopStridedStore()
1077 Expander.expandCodeFor(NumBytesS, IntIdxTy, Preheader->getTerminator()); in processLoopStridedStore()
1140 NewCall->getDebugLoc(), Preheader); in processLoopStridedStore()
1150 << ore::NV("ToBlock", Preheader->getName()); in processLoopStridedStore()
1257 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in processLoopStoreOfLoopLoad()
1258 IRBuilder<> Builder(Preheader->getTerminator()); in processLoopStoreOfLoopLoad()
1289 StrStart, Builder.getPtrTy(StrAS), Preheader->getTerminator()); in processLoopStoreOfLoopLoad()
1342 Preheader in processLoopStoreOfLoopLoad()
1017 BasicBlock *Preheader = CurLoop->getLoopPreheader(); processLoopStridedStore() local
1251 BasicBlock *Preheader = CurLoop->getLoopPreheader(); processLoopStoreOfLoopLoad() local
1962 transformLoopToCountable(Intrinsic::ID IntrinID,BasicBlock * Preheader,Instruction * CntInst,PHINode * CntPhi,Value * InitX,Instruction * DefX,const DebugLoc & DL,bool ZeroCheck,bool IsCntPhiUsedOutsideLoop) transformLoopToCountable() argument
[all...]
H A DIndVarSimplify.cpp1095 BasicBlock *Preheader = L->getLoopPreheader(); in sinkUnusedInvariants()
1096 if (!Preheader) return false; in sinkUnusedInvariants()
1100 BasicBlock::iterator I(Preheader->getTerminator()); in sinkUnusedInvariants()
1101 while (I != Preheader->begin()) { in sinkUnusedInvariants()
1142 if (UseBB == Preheader || L->contains(UseBB)) { in sinkUnusedInvariants()
1156 if (I != Preheader->begin()) { in sinkUnusedInvariants()
1160 } while (I->isDebugOrPseudoInst() && I != Preheader->begin()); in sinkUnusedInvariants()
1162 if (I->isDebugOrPseudoInst() && I == Preheader->begin()) in sinkUnusedInvariants()
1247 BasicBlock *Preheader = L->getLoopPreheader(); in createInvariantCond()
1248 assert(Preheader in createInvariantCond()
1098 BasicBlock *Preheader = L->getLoopPreheader(); sinkUnusedInvariants() local
1250 BasicBlock *Preheader = L->getLoopPreheader(); createInvariantCond() local
[all...]
/llvm-project/llvm/lib/Target/PowerPC/
H A DPPCCTRLoops.cpp174 MachineBasicBlock *Preheader = ML->getLoopPreheader(); in processLoop()
177 if (!Preheader) in processLoop()
180 Start = SearchForStart(Preheader); in processLoop()
186 if (Preheader->isLiveIn(PPC::CTR) || Preheader->isLiveIn(PPC::CTR8)) in processLoop()
193 I != Preheader->instr_rend(); ++I) in processLoop()
204 I != Preheader->instr_end(); ++I) in processLoop()
243 MachineBasicBlock *Preheader = Start->getParent(); in expandNormalLoops()
245 assert((Preheader && Exiting) && in expandNormalLoops() local
246 "Preheader an in expandNormalLoops()
176 MachineBasicBlock *Preheader = ML->getLoopPreheader(); processLoop() local
322 MachineBasicBlock *Preheader = Start->getParent(); expandCTRLoops() local
[all...]
/llvm-project/llvm/lib/Target/ARM/
H A DARMBlockPlacement.cpp99 MachineBasicBlock *Preheader = WLS->getParent(); in revertWhileToDoLoop() local
100 assert(WLS != &Preheader->back()); in revertWhileToDoLoop()
101 assert(WLS->getNextNode() == &Preheader->back()); in revertWhileToDoLoop()
102 MachineInstr *Br = &Preheader->back(); in revertWhileToDoLoop()
112 MachineBasicBlock *NewBlock = Preheader->getParent()->CreateMachineBasicBlock( in revertWhileToDoLoop()
113 Preheader->getBasicBlock()); in revertWhileToDoLoop()
114 Preheader->getParent()->insert(++Preheader->getIterator(), NewBlock); in revertWhileToDoLoop()
119 Preheader->replaceSuccessor(Br->getOperand(0).getMBB(), NewBlock); in revertWhileToDoLoop()
141 Preheader in revertWhileToDoLoop()
[all...]
H A DMVETailPredication.cpp141 BasicBlock *Preheader = L->getLoopPreheader(); in runOnLoop()
142 if (!Preheader) in runOnLoop()
160 IntrinsicInst *Setup = FindLoopIterations(Preheader); in runOnLoop()
164 if (!Preheader->getSinglePredecessor()) in runOnLoop()
166 Setup = FindLoopIterations(Preheader->getSinglePredecessor()); in runOnLoop()
143 BasicBlock *Preheader = L->getLoopPreheader(); runOnLoop() local
H A DARMLowOverheadLoops.cpp172 if (auto *Preheader = ML.getLoopPreheader()) in ProcessLoop()
173 GetPredecessor(Preheader); in ProcessLoop()
174 else if (auto *Preheader = MLI.findLoopPreheader(&ML, true, true)) in ProcessLoop()
175 GetPredecessor(Preheader); in ProcessLoop() local
364 MachineBasicBlock *Preheader = nullptr;
392 Preheader = MBB; in LowOverheadLoop()
394 Preheader = MBB; in LowOverheadLoop()
705 MachineBasicBlock *MBB = Preheader; in ValidateTailPredicate()
793 Preheader && !Preheader in ValidateTailPredicate()
177 else if (auto *Preheader = MLI.findLoopPreheader(&ML, true, true)) ProcessLoop() local
367 MachineBasicBlock *Preheader = nullptr; global() member
[all...]
/llvm-project/llvm/lib/Transforms/Utils/
H A DMatrixUtils.cpp23 BasicBlock *TileInfo::CreateLoop(BasicBlock *Preheader, BasicBlock *Exit, in CreateLoop() argument
27 LLVMContext &Ctx = Preheader->getContext(); in CreateLoop()
29 Preheader->getContext(), Name + ".header", Preheader->getParent(), Exit); in CreateLoop()
40 IV->addIncoming(ConstantInt::get(I32Ty, 0), Preheader); in CreateLoop()
48 BranchInst *PreheaderBr = cast<BranchInst>(Preheader->getTerminator()); in CreateLoop()
52 {DominatorTree::Delete, Preheader, Tmp}, in CreateLoop()
57 {DominatorTree::Insert, Preheader, Header}, in CreateLoop()
H A DLoopConstrainer.cpp147 BasicBlock *Preheader = L.getLoopPreheader(); in parseLoopStructure() local
148 if (!Preheader) { in parseLoopStructure()
400 const DataLayout &DL = Preheader->getDataLayout(); in parseLoopStructure()
402 Instruction *Ins = Preheader->getTerminator(); in parseLoopStructure()
520 const LoopStructure &LS, BasicBlock *Preheader, Value *ExitSubloopAt, in changeIterationSpaceEnd() argument
601 BranchInst *PreheaderJump = cast<BranchInst>(Preheader->getTerminator()); in changeIterationSpaceEnd()
655 NewPHI->addIncoming(PN.getIncomingValueForBlock(Preheader), Preheader); in changeIterationSpaceEnd()
663 RRI.IndVarEnd->addIncoming(IndVarStart, Preheader); in changeIterationSpaceEnd()
687 BasicBlock *Preheader in createPreheader() local
727 BasicBlock *Preheader = OriginalLoop.getLoopPreheader(); run() local
[all...]
H A DLoopSimplify.cpp212 static Loop *separateNestedLoop(Loop *L, BasicBlock *Preheader,
217 if (!Preheader) in separateNestedLoop()
355 static BasicBlock *insertUniqueBackedgeBlock(Loop *L, BasicBlock *Preheader,
365 if (!Preheader) in insertUniqueBackedgeBlock()
378 if (P != Preheader) BackedgeBlocks.push_back(P); in insertUniqueBackedgeBlock()
409 if (IBB == Preheader) { in insertUniqueBackedgeBlock()
468 MSSAU->updatePhisWhenInsertingUniqueBackedgeBlock(Header, Preheader, in insertUniqueBackedgeBlock()
537 BasicBlock *Preheader = L->getLoopPreheader(); in simplifyOneLoop()
538 if (!Preheader) { in simplifyOneLoop()
539 Preheader in simplifyOneLoop()
215 separateNestedLoop(Loop * L,BasicBlock * Preheader,DominatorTree * DT,LoopInfo * LI,ScalarEvolution * SE,bool PreserveLCSSA,AssumptionCache * AC,MemorySSAUpdater * MSSAU) separateNestedLoop() argument
358 insertUniqueBackedgeBlock(Loop * L,BasicBlock * Preheader,DominatorTree * DT,LoopInfo * LI,MemorySSAUpdater * MSSAU) insertUniqueBackedgeBlock() argument
540 BasicBlock *Preheader = L->getLoopPreheader(); simplifyOneLoop() local
[all...]
H A DIntegerDivision.cpp203 BasicBlock *Preheader = BasicBlock::Create(Builder.getContext(), in generateUnsignedDivisionCode() local
255 Builder.CreateCondBr(SkipLoop, LoopExit, Preheader); in generateUnsignedDivisionCode()
261 Builder.SetInsertPoint(Preheader); in generateUnsignedDivisionCode()
324 Carry_1->addIncoming(Zero, Preheader); in generateUnsignedDivisionCode()
327 SR_3->addIncoming(SR_1, Preheader); in generateUnsignedDivisionCode()
330 R_1->addIncoming(Tmp3, Preheader); in generateUnsignedDivisionCode()
333 Q_2->addIncoming(Q, Preheader); in generateUnsignedDivisionCode()
H A DLoopUtils.cpp487 auto *Preheader = L->getLoopPreheader(); in deleteDeadLoop()
488 assert(Preheader && "Preheader should exist!"); in deleteDeadLoop()
508 Instruction *OldTerm = Preheader->getTerminator(); in deleteDeadLoop()
510 "Preheader must end with a side-effect-free terminator"); in deleteDeadLoop()
512 "Preheader must have a single successor"); in deleteDeadLoop()
519 // 0. Preheader 1. Preheader 2. Preheader in deleteDeadLoop()
550 // Rewrite phis in the exit block to get their inputs from the Preheader in deleteDeadLoop()
486 auto *Preheader = L->getLoopPreheader(); deleteDeadLoop() local
1340 BasicBlock *Preheader = L->getLoopPreheader(); canLoopBeDeleted() local
[all...]
/llvm-project/llvm/lib/CodeGen/
H A DMachineLoopUtils.cpp31 MachineBasicBlock *Preheader = *Loop->pred_begin(); in PeelSingleBlockLoop() local
32 if (Preheader == Loop) in PeelSingleBlockLoop()
33 Preheader = *std::next(Loop->pred_begin()); in PeelSingleBlockLoop()
86 if (MI.getOperand(2).getMBB() != Preheader) in PeelSingleBlockLoop()
111 Preheader->ReplaceUsesOfBlockWith(Loop, NewBB); in PeelSingleBlockLoop()
113 Loop->replacePhiUsesWith(Preheader, NewBB); in PeelSingleBlockLoop()
114 Preheader->updateTerminator(Loop); in PeelSingleBlockLoop()
H A DMachineLICM.cpp285 unsigned Hoist(MachineInstr *MI, MachineBasicBlock *Preheader,
611 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistRegionPostRA()
612 if (!Preheader) in HoistRegionPostRA()
649 MachineBasicBlock::iterator TI = Preheader->getFirstTerminator(); in HoistRegionPostRA()
650 if (TI != Preheader->end()) { in HoistRegionPostRA()
731 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in IsGuaranteedToExecute()
735 LLVM_DEBUG(dbgs() << "Hoisting to " << printMBBReference(*Preheader) in IsGuaranteedToExecute()
741 Preheader->splice(Preheader->getFirstTerminator(), MBB, MI); in IsGuaranteedToExecute()
836 MachineBasicBlock *Preheader in HoistOutOfLoop()
578 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); HoistRegionPostRA() local
698 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); HoistPostRA() local
802 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); HoistOutOfLoop() local
1594 Hoist(MachineInstr * MI,MachineBasicBlock * Preheader,MachineLoop * CurLoop) Hoist() argument
[all...]
H A DMachineLoopInfo.cpp158 MachineBasicBlock *Preheader = nullptr; in getLoopID()
163 if (Preheader) in getLoopID()
165 Preheader = P; in getLoopID()
171 for (MachineBasicBlock *S : Preheader->successors()) { in getLoopID()
179 return Preheader; in getLoopID()
130 MachineBasicBlock *Preheader = nullptr; findLoopPreheader() local
H A DHardwareLoops.cpp360 BasicBlock *Preheader = L->getLoopPreheader(); in TryConvertLoop()
363 if (!Preheader) in TryConvertLoop()
364 Preheader = InsertPreheaderForLoop(L, &DT, &LI, nullptr, PreserveLCSSA); in TryConvertLoop()
365 if (!Preheader) in TryConvertLoop()
401 BasicBlock *Preheader = L->getLoopPreheader(); in CanGenerateTest()
402 if (!Preheader->getSinglePredecessor()) in CanGenerateTest() local
405 BasicBlock *Pred = Preheader->getSinglePredecessor(); in CanGenerateTest()
436 if (BI->getSuccessor(SuccIdx) != Preheader) in CanGenerateTest()
574 BasicBlock *Preheader = L->getLoopPreheader(); in InsertLoopRegDec()
579 Index->addIncoming(NumElts, Preheader); in InsertPHICounter()
361 BasicBlock *Preheader = L->getLoopPreheader(); TryConvertLoop() local
580 BasicBlock *Preheader = L->getLoopPreheader(); InsertPHICounter() local
[all...]
/llvm-project/llvm/test/Other/
H A Dloop-pass-printer.ll15 ; DEL: ; Preheader:
23 ; DEL: ; Preheader:
31 ; BAR: ; Preheader:
/llvm-project/llvm/lib/Target/Hexagon/
H A DHexagonHardwareLoops.cpp409 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in findInductionRegister()
412 if (!Header || !Preheader || !Latch || !ExitingBlock) in findInductionRegister()
604 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in getLoopTripCount()
611 if (MBB == Preheader) in getLoopTripCount()
1194 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in convertToHardwareLoop()
1195 if (!Preheader) { in convertToHardwareLoop() local
1196 Preheader = createPreheaderForLoop(L); in convertToHardwareLoop()
1197 if (!Preheader) in convertToHardwareLoop()
1201 MachineBasicBlock::iterator InsertPos = Preheader->getFirstTerminator(); in convertToHardwareLoop()
1215 if (!MDT->dominates(BBDef, Preheader)) in convertToHardwareLoop()
410 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); findInductionRegister() local
605 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); getLoopTripCount() local
[all...]
/llvm-project/llvm/lib/Transforms/Vectorize/
H A DLoopIdiomVectorize.cpp590 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in expandFindMismatch()
591 BranchInst *PHBranch = cast<BranchInst>(Preheader->getTerminator()); in expandFindMismatch()
597 EndBlock = SplitBlock(Preheader, PHBranch, DT, LI, nullptr, "mismatch_end"); in expandFindMismatch()
616 Preheader->getTerminator()->setSuccessor(0, MinItCheckBlock); in expandFindMismatch()
642 DTU.applyUpdates({{DominatorTree::Insert, Preheader, MinItCheckBlock}, in expandFindMismatch()
643 {DominatorTree::Delete, Preheader, EndBlock}}); in expandFindMismatch()
844 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in transformByteCompare()
846 BranchInst *PHBranch = cast<BranchInst>(Preheader->getTerminator()); in transformByteCompare() local
868 auto *CmpBB = BasicBlock::Create(Preheader->getContext(), "byte.compare", in transformByteCompare()
869 Preheader in transformByteCompare()
592 BasicBlock *Preheader = CurLoop->getLoopPreheader(); expandFindMismatch() local
[all...]
/llvm-project/llvm/lib/Target/X86/
H A DX86LowerAMXIntrinsics.cpp70 BasicBlock *createLoop(BasicBlock *Preheader, BasicBlock *Exit, Value *Bound,
101 BasicBlock *X86LowerAMXIntrinsics::createLoop(BasicBlock *Preheader,
105 LLVMContext &Ctx = Preheader->getContext(); in createLoop()
107 BasicBlock::Create(Ctx, Name + ".header", Preheader->getParent(), Exit); in createLoop()
118 IV->addIncoming(ConstantInt::get(I16Ty, 0), Preheader); in createLoop()
126 BranchInst *PreheaderBr = cast<BranchInst>(Preheader->getTerminator()); in createLoop()
130 {DominatorTree::Delete, Preheader, Tmp}, in createLoop()
135 {DominatorTree::Insert, Preheader, Header}, in createLoop()
103 createLoop(BasicBlock * Preheader,BasicBlock * Exit,Value * Bound,Value * Step,StringRef Name,IRBuilderBase & B,Loop * L) createLoop() argument
/llvm-project/llvm/lib/Analysis/
H A DLoopInfo.cpp94 BasicBlock *Preheader = getLoopPreheader(); in makeLoopInvariant() local
96 if (!Preheader) in makeLoopInvariant()
98 InsertPt = Preheader->getTerminator(); in makeLoopInvariant()
372 BasicBlock *Preheader = getLoopPreheader(); in getLoopGuardBranch() local
373 assert(Preheader && getLoopLatch() && in getLoopGuardBranch()
386 BasicBlock *GuardBB = Preheader->getUniquePredecessor(); in getLoopGuardBranch()
396 BasicBlock *GuardOtherSucc = (GuardBI->getSuccessor(0) == Preheader) in getLoopGuardBranch()
1018 OS << "\n; Preheader:"; in printLoop()

123