/llvm-project/llvm/lib/Transforms/Scalar/ |
H A D | LoopFuse.cpp | 149 /// 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 D | LoopDeletion.cpp | 66 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 D | LoopSink.cpp | 22 // 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 D | LICM.cpp | 448 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 D | LoopSimplifyCFG.cpp | 351 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 D | LoopIdiomRecognize.cpp | 1023 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 D | IndVarSimplify.cpp | 1095 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 D | PPCCTRLoops.cpp | 174 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 D | ARMBlockPlacement.cpp | 99 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 D | MVETailPredication.cpp | 141 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 D | ARMLowOverheadLoops.cpp | 172 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 D | MatrixUtils.cpp | 23 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 D | LoopConstrainer.cpp | 147 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 D | LoopSimplify.cpp | 212 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 D | IntegerDivision.cpp | 203 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 D | LoopUtils.cpp | 487 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 D | MachineLoopUtils.cpp | 31 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 D | MachineLICM.cpp | 285 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 D | MachineLoopInfo.cpp | 158 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 D | HardwareLoops.cpp | 360 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 D | loop-pass-printer.ll | 15 ; DEL: ; Preheader: 23 ; DEL: ; Preheader: 31 ; BAR: ; Preheader:
|
/llvm-project/llvm/lib/Target/Hexagon/ |
H A D | HexagonHardwareLoops.cpp | 409 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 D | LoopIdiomVectorize.cpp | 590 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 D | X86LowerAMXIntrinsics.cpp | 70 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 D | LoopInfo.cpp | 94 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()
|