/freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ |
H A D | LoopFuse.cpp | 151 BasicBlock *Preheader; member 188 : Preheader(L->getLoopPreheader()), Header(L->getHeader()), in FusionCandidate() 235 return Preheader && Header && ExitingBlock && ExitBlock && Latch && L && in isValid() 243 assert(Preheader == L->getLoopPreheader() && "Preheader is out of sync"); in verify() 260 return Preheader; in getEntryBlock() 266 Preheader = L->getLoopPreheader(); in updateAfterPeeling() 287 return (GuardBranch->getSuccessor(0) == Preheader) in getNonLoopBlock() 301 << "\tPreheader: " << (Preheader ? Preheader->getName() : "nullptr") in dump() 321 if (!Preheader) in isEligibleForFusion() 373 assert(L && Preheader && "Fusion candidate not initialized properly!"); in reportInvalidCandidate() [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 286 BasicBlock *Preheader = L.getLoopPreheader(); in sinkLoopInvariantInstructions() local 287 assert(Preheader && "Expected loop to have preheader"); in sinkLoopInvariantInstructions() 289 assert(Preheader->getParent()->hasProfileData() && in sinkLoopInvariantInstructions() 292 const BlockFrequency PreheaderFreq = BFI.getBlockFreq(Preheader); in sinkLoopInvariantInstructions() 322 for (Instruction &I : llvm::make_early_inc_range(llvm::reverse(*Preheader))) { in sinkLoopInvariantInstructions() 368 BasicBlock *Preheader = L.getLoopPreheader(); in run() local 369 if (!Preheader) in run() 403 BasicBlock *Preheader = L->getLoopPreheader(); runOnLoop() local [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() 445 BasicBlock *Preheader = L->getLoopPreheader(); in deleteLoopIfDead() local 446 if (!Preheader || !L->hasDedicatedExits()) { in deleteLoopIfDead() [all …]
|
H A D | InductiveRangeCheckElimination.cpp | 981 BasicBlock *Preheader = L->getLoopPreheader(); in parseLoopStructure() 982 if (!Preheader) { in parseLoopStructure() 987 LLVMContext &Context = Preheader->getContext(); in parseLoopStructure() 916 BasicBlock *Preheader = L.getLoopPreheader(); parseLoopStructure() local 1338 changeIterationSpaceEnd(const LoopStructure & LS,BasicBlock * Preheader,Value * ExitSubloopAt,BasicBlock * ContinuationBlock) const changeIterationSpaceEnd() argument 1506 BasicBlock *Preheader = BasicBlock::Create(Ctx, Tag, &F, LS.Header); createPreheader() local 1546 BasicBlock *Preheader = nullptr; run() local 2078 BasicBlock *Preheader = L->getLoopPreheader(); run() local
|
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 | LICM.cpp | 446 BasicBlock *Preheader = L->getLoopPreheader(); in runOnLoop() local 469 if (Preheader) in runOnLoop() 481 if (!DisablePromotion && Preheader && L->hasDedicatedExits() && in runOnLoop() 899 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in hoistRegion() local 918 Preheader->getTerminator(), AC, AllowSpeculation)) { in hoistRegion() 1990 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in promoteLoopAccessesToScalars() local 2049 const DataLayout &MDL = Preheader->getDataLayout(); in promoteLoopAccessesToScalars() 2097 Preheader->getTerminator(), AC, AllowSpeculation)) { in promoteLoopAccessesToScalars() 2145 Store->getAlign(), MDL, Preheader->getTerminator(), AC, DT, TLI); in promoteLoopAccessesToScalars() 2243 Preheader->getTerminator()->getIterator()); in promoteLoopAccessesToScalars() [all …]
|
H A D | IndVarSimplify.cpp | 1098 BasicBlock *Preheader = L->getLoopPreheader(); in sinkUnusedInvariants() local 1099 if (!Preheader) return false; in sinkUnusedInvariants() 1103 BasicBlock::iterator I(Preheader->getTerminator()); in sinkUnusedInvariants() 1104 while (I != Preheader->begin()) { in sinkUnusedInvariants() 1145 if (UseBB == Preheader || L->contains(UseBB)) { in sinkUnusedInvariants() 1159 if (I != Preheader->begin()) { in sinkUnusedInvariants() 1163 } while (I->isDebugOrPseudoInst() && I != Preheader->begin()); in sinkUnusedInvariants() 1165 if (I->isDebugOrPseudoInst() && I == Preheader->begin()) in sinkUnusedInvariants() 1250 BasicBlock *Preheader = L->getLoopPreheader(); in createInvariantCond() local 1251 assert(Preheader && "Preheader doesn't exist"); in createInvariantCond() [all …]
|
H A D | LoopIdiomRecognize.cpp | 1024 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in processLoopStridedStore() local 1025 IRBuilder<> Builder(Preheader->getTerminator()); in processLoopStridedStore() 1049 Expander.expandCodeFor(Start, DestInt8PtrTy, Preheader->getTerminator()); in processLoopStridedStore() 1078 Expander.expandCodeFor(NumBytesS, IntIdxTy, Preheader->getTerminator()); in processLoopStridedStore() 1141 NewCall->getDebugLoc(), Preheader); in processLoopStridedStore() 1151 << ore::NV("ToBlock", Preheader->getName()); in processLoopStridedStore() 1258 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in processLoopStoreOfLoopLoad() local 1259 IRBuilder<> Builder(Preheader->getTerminator()); in processLoopStoreOfLoopLoad() 1290 StrStart, Builder.getPtrTy(StrAS), Preheader->getTerminator()); in processLoopStoreOfLoopLoad() 1343 Preheader->getTerminator()); in processLoopStoreOfLoopLoad() [all …]
|
/freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/ |
H A D | PPCCTRLoops.cpp | 176 MachineBasicBlock *Preheader = ML->getLoopPreheader(); in processLoop() local 179 if (!Preheader) in processLoop() 182 Start = SearchForStart(Preheader); in processLoop() 188 if (Preheader->isLiveIn(PPC::CTR) || Preheader->isLiveIn(PPC::CTR8)) in processLoop() 195 I != Preheader->instr_rend(); ++I) in processLoop() 206 I != Preheader->instr_end(); ++I) in processLoop() 245 MachineBasicBlock *Preheader = Start->getParent(); in expandNormalLoops() local 247 assert((Preheader && Exiting) && in expandNormalLoops() 266 PHIMIB.addReg(Start->getOperand(0).getReg()).addMBB(Preheader); in expandNormalLoops() 296 assert(P == Preheader && in expandNormalLoops() [all …]
|
/freebsd/contrib/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->getParent()->RenumberBlocks(); in revertWhileToDoLoop() 143 BBUtils->adjustBBOffsetsAfter(Preheader); in revertWhileToDoLoop()
|
H A D | MVETailPredication.cpp | 143 BasicBlock *Preheader = L->getLoopPreheader(); in runOnLoop() local 144 if (!Preheader) in runOnLoop() 162 IntrinsicInst *Setup = FindLoopIterations(Preheader); in runOnLoop() 166 if (!Preheader->getSinglePredecessor()) in runOnLoop() 168 Setup = FindLoopIterations(Preheader->getSinglePredecessor()); in runOnLoop()
|
H A D | ARMLowOverheadLoops.cpp | 175 if (auto *Preheader = ML.getLoopPreheader()) in ProcessLoop() local 176 GetPredecessor(Preheader); in ProcessLoop() 177 else if (auto *Preheader = MLI.findLoopPreheader(&ML, true, true)) in ProcessLoop() local 178 GetPredecessor(Preheader); in ProcessLoop() 367 MachineBasicBlock *Preheader = nullptr; member 395 Preheader = MBB; in LowOverheadLoop() 397 Preheader = MBB; in LowOverheadLoop() 708 MachineBasicBlock *MBB = Preheader; in ValidateTailPredicate() 796 Preheader && !Preheader->empty() && in ValidateTailPredicate() 799 &Preheader->back(), VCTP->getOperand(1).getReg().asMCReg())) { in ValidateTailPredicate() [all …]
|
/freebsd/contrib/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 = BasicBlock::Create(Ctx, Tag, &F, LS.Header); in createPreheader() local 688 BranchInst::Create(LS.Header, Preheader); in createPreheader() [all …]
|
H A D | LoopSimplify.cpp | 215 static Loop *separateNestedLoop(Loop *L, BasicBlock *Preheader, in separateNestedLoop() argument 220 if (!Preheader) in separateNestedLoop() 358 static BasicBlock *insertUniqueBackedgeBlock(Loop *L, BasicBlock *Preheader, in insertUniqueBackedgeBlock() argument 368 if (!Preheader) in insertUniqueBackedgeBlock() 381 if (P != Preheader) BackedgeBlocks.push_back(P); in insertUniqueBackedgeBlock() 412 if (IBB == Preheader) { in insertUniqueBackedgeBlock() 471 MSSAU->updatePhisWhenInsertingUniqueBackedgeBlock(Header, Preheader, in insertUniqueBackedgeBlock() 540 BasicBlock *Preheader = L->getLoopPreheader(); in simplifyOneLoop() local 541 if (!Preheader) { in simplifyOneLoop() 542 Preheader = InsertPreheaderForLoop(L, DT, LI, MSSAU, PreserveLCSSA); in simplifyOneLoop() [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 | 486 auto *Preheader = L->getLoopPreheader(); in deleteDeadLoop() local 487 assert(Preheader && "Preheader should exist!"); in deleteDeadLoop() 507 Instruction *OldTerm = Preheader->getTerminator(); in deleteDeadLoop() 556 P.setIncomingBlock(PredIndex, Preheader); in deleteDeadLoop() 564 P.getIncomingBlock(PredIndex) == Preheader) && in deleteDeadLoop() 569 DTU.applyUpdates({{DominatorTree::Insert, Preheader, ExitBlock}}); in deleteDeadLoop() 571 MSSAU->applyUpdates({{DominatorTree::Insert, Preheader, ExitBlock}}, in deleteDeadLoop() 579 Builder.SetInsertPoint(Preheader->getTerminator()); in deleteDeadLoop() 582 Preheader->getTerminator()->eraseFromParent(); in deleteDeadLoop() 589 Preheader->getTerminator()->eraseFromParent(); in deleteDeadLoop() [all …]
|
/freebsd/contrib/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() 85 if (MI.getOperand(2).getMBB() != Preheader) in PeelSingleBlockLoop() 110 Preheader->ReplaceUsesOfBlockWith(Loop, NewBB); in PeelSingleBlockLoop() 112 Loop->replacePhiUsesWith(Preheader, NewBB); in PeelSingleBlockLoop() 113 Preheader->updateTerminator(Loop); in PeelSingleBlockLoop()
|
H A D | MachineLICM.cpp | 287 unsigned Hoist(MachineInstr *MI, MachineBasicBlock *Preheader, 578 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistRegionPostRA() local 579 if (!Preheader) in HoistRegionPostRA() 616 MachineBasicBlock::iterator TI = Preheader->getFirstTerminator(); in HoistRegionPostRA() 617 if (TI != Preheader->end()) { in HoistRegionPostRA() 698 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistPostRA() local 702 LLVM_DEBUG(dbgs() << "Hoisting to " << printMBBReference(*Preheader) in HoistPostRA() 708 Preheader->splice(Preheader->getFirstTerminator(), MBB, MI); in HoistPostRA() 802 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistOutOfLoop() local 803 if (!Preheader) in HoistOutOfLoop() [all …]
|
H A D | MachineLoopInfo.cpp | 158 MachineBasicBlock *Preheader = nullptr; in findLoopPreheader() local 163 if (Preheader) in findLoopPreheader() 165 Preheader = P; in findLoopPreheader() 171 for (MachineBasicBlock *S : Preheader->successors()) { in findLoopPreheader() 179 return Preheader; in findLoopPreheader()
|
H A D | HardwareLoops.cpp | 361 BasicBlock *Preheader = L->getLoopPreheader(); in TryConvertLoop() local 364 if (!Preheader) in TryConvertLoop() 365 Preheader = InsertPreheaderForLoop(L, &DT, &LI, nullptr, PreserveLCSSA); in TryConvertLoop() 366 if (!Preheader) in TryConvertLoop() 402 BasicBlock *Preheader = L->getLoopPreheader(); in CanGenerateTest() local 403 if (!Preheader->getSinglePredecessor()) in CanGenerateTest() 406 BasicBlock *Pred = Preheader->getSinglePredecessor(); in CanGenerateTest() 437 if (BI->getSuccessor(SuccIdx) != Preheader) in CanGenerateTest() 580 BasicBlock *Preheader = L->getLoopPreheader(); in InsertPHICounter() local 585 Index->addIncoming(NumElts, Preheader); in InsertPHICounter()
|
/freebsd/contrib/llvm-project/llvm/lib/Target/Hexagon/ |
H A D | HexagonHardwareLoops.cpp | 410 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in findInductionRegister() local 413 if (!Header || !Preheader || !Latch || !ExitingBlock) in findInductionRegister() 605 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in getLoopTripCount() local 612 if (MBB == Preheader) in getLoopTripCount() 1195 MachineBasicBlock *Preheader = MLI->findLoopPreheader(L, SpecPreheader); in convertToHardwareLoop() local 1196 if (!Preheader) { in convertToHardwareLoop() 1197 Preheader = createPreheaderForLoop(L); in convertToHardwareLoop() 1198 if (!Preheader) in convertToHardwareLoop() 1202 MachineBasicBlock::iterator InsertPos = Preheader->getFirstTerminator(); in convertToHardwareLoop() 1216 if (!MDT->dominates(BBDef, Preheader)) in convertToHardwareLoop() [all …]
|
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Vectorize/ |
H A D | LoopIdiomVectorize.cpp | 592 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in expandFindMismatch() local 593 BranchInst *PHBranch = cast<BranchInst>(Preheader->getTerminator()); in expandFindMismatch() 599 EndBlock = SplitBlock(Preheader, PHBranch, DT, LI, nullptr, "mismatch_end"); in expandFindMismatch() 618 Preheader->getTerminator()->setSuccessor(0, MinItCheckBlock); in expandFindMismatch() 644 DTU.applyUpdates({{DominatorTree::Insert, Preheader, MinItCheckBlock}, in expandFindMismatch() 645 {DominatorTree::Delete, Preheader, EndBlock}}); in expandFindMismatch() 846 BasicBlock *Preheader = CurLoop->getLoopPreheader(); in transformByteCompare() local 848 BranchInst *PHBranch = cast<BranchInst>(Preheader->getTerminator()); in transformByteCompare() 870 auto *CmpBB = BasicBlock::Create(Preheader->getContext(), "byte.compare", in transformByteCompare() 871 Preheader->getParent()); in transformByteCompare()
|
/freebsd/contrib/llvm-project/llvm/lib/Target/X86/ |
H A D | X86LowerAMXIntrinsics.cpp | 72 BasicBlock *createLoop(BasicBlock *Preheader, BasicBlock *Exit, Value *Bound, 103 BasicBlock *X86LowerAMXIntrinsics::createLoop(BasicBlock *Preheader, in createLoop() argument 107 LLVMContext &Ctx = Preheader->getContext(); in createLoop() 109 BasicBlock::Create(Ctx, Name + ".header", Preheader->getParent(), Exit); in createLoop() 120 IV->addIncoming(ConstantInt::get(I16Ty, 0), Preheader); in createLoop() 128 BranchInst *PreheaderBr = cast<BranchInst>(Preheader->getTerminator()); in createLoop() 132 {DominatorTree::Delete, Preheader, Tmp}, in createLoop() 137 {DominatorTree::Insert, Preheader, Header}, in createLoop()
|
/freebsd/contrib/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()
|