Lines Matching refs:CurLoop

147     bool isExitBlock(MachineLoop *CurLoop, const MachineBasicBlock *MBB) {  in isExitBlock()  argument
148 if (ExitBlockMap.contains(CurLoop)) in isExitBlock()
149 return is_contained(ExitBlockMap[CurLoop], MBB); in isExitBlock()
152 CurLoop->getExitBlocks(ExitBlocks); in isExitBlock()
153 ExitBlockMap[CurLoop] = ExitBlocks; in isExitBlock()
220 void HoistRegionPostRA(MachineLoop *CurLoop,
223 void HoistPostRA(MachineInstr *MI, unsigned Def, MachineLoop *CurLoop,
229 MachineLoop *CurLoop);
231 void AddToLiveIns(MCRegister Reg, MachineLoop *CurLoop);
233 bool IsLICMCandidate(MachineInstr &I, MachineLoop *CurLoop);
235 bool IsLoopInvariantInst(MachineInstr &I, MachineLoop *CurLoop);
237 bool HasLoopPHIUse(const MachineInstr *MI, MachineLoop *CurLoop);
240 MachineLoop *CurLoop) const;
249 bool IsProfitableToHoist(MachineInstr &MI, MachineLoop *CurLoop);
251 bool IsGuaranteedToExecute(MachineBasicBlock *BB, MachineLoop *CurLoop);
264 void HoistOutOfLoop(MachineDomTreeNode *HeaderN, MachineLoop *CurLoop,
276 MachineInstr *ExtractHoistableLoad(MachineInstr *MI, MachineLoop *CurLoop);
288 MachineLoop *CurLoop);
296 MachineBasicBlock *getCurPreheader(MachineLoop *CurLoop,
386 MachineLoop *CurLoop = Worklist.pop_back_val(); in INITIALIZE_PASS_DEPENDENCY() local
390 HoistRegionPostRA(CurLoop, CurPreheader); in INITIALIZE_PASS_DEPENDENCY()
394 MachineDomTreeNode *N = DT->getNode(CurLoop->getHeader()); in INITIALIZE_PASS_DEPENDENCY()
396 HoistOutOfLoop(N, CurLoop, CurPreheader); in INITIALIZE_PASS_DEPENDENCY()
432 MachineLoop *CurLoop) { in ProcessMI() argument
510 if ((!HasNonInvariantUse && IsLICMCandidate(*MI, CurLoop)) || in ProcessMI()
518 void MachineLICMBase::HoistRegionPostRA(MachineLoop *CurLoop, in HoistRegionPostRA() argument
520 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistRegionPostRA()
533 for (MachineBasicBlock *BB : CurLoop->getBlocks()) { in HoistRegionPostRA()
554 CurLoop); in HoistRegionPostRA()
602 HoistPostRA(MI, Candidate.Def, CurLoop, CurPreheader); in HoistRegionPostRA()
609 void MachineLICMBase::AddToLiveIns(MCRegister Reg, MachineLoop *CurLoop) { in AddToLiveIns() argument
610 for (MachineBasicBlock *BB : CurLoop->getBlocks()) { in AddToLiveIns()
627 MachineLoop *CurLoop, in HoistPostRA() argument
629 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistPostRA()
650 AddToLiveIns(Def, CurLoop); in HoistPostRA()
659 MachineLoop *CurLoop) { in IsGuaranteedToExecute() argument
663 if (BB != CurLoop->getHeader()) { in IsGuaranteedToExecute()
666 CurLoop->getExitingBlocks(CurrentLoopExitingBlocks); in IsGuaranteedToExecute()
731 MachineLoop *CurLoop, in HoistOutOfLoop() argument
733 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader); in HoistOutOfLoop()
756 if (!CurLoop->contains(BB)) in HoistOutOfLoop()
798 HoistRes = Hoist(&MI, Preheader, CurLoop); in HoistOutOfLoop()
803 for (MachineLoop *L = MLI->getLoopFor(MI.getParent()); L != CurLoop; in HoistOutOfLoop()
1006 bool MachineLICMBase::IsLICMCandidate(MachineInstr &I, MachineLoop *CurLoop) { in IsLICMCandidate() argument
1008 bool DontMoveAcrossStore = !HoistConstLoads || !AllowedToHoistLoads[CurLoop]; in IsLICMCandidate()
1022 !IsGuaranteedToExecute(I.getParent(), CurLoop)) { in IsLICMCandidate()
1034 if (!TII->shouldHoist(I, CurLoop)) in IsLICMCandidate()
1042 MachineLoop *CurLoop) { in IsLoopInvariantInst() argument
1043 if (!IsLICMCandidate(I, CurLoop)) { in IsLoopInvariantInst()
1047 return CurLoop->isLoopInvariant(I); in IsLoopInvariantInst()
1053 MachineLoop *CurLoop) { in HasLoopPHIUse() argument
1066 if (CurLoop->contains(&UseMI)) in HasLoopPHIUse()
1071 if (isExitBlock(CurLoop, UseMI.getParent())) in HasLoopPHIUse()
1076 if (UseMI.isCopy() && CurLoop->contains(&UseMI)) in HasLoopPHIUse()
1088 MachineLoop *CurLoop) const { in HasHighOperandLatency()
1095 if (!CurLoop->contains(UseMI.getParent())) in HasHighOperandLatency()
1184 MachineLoop *CurLoop) { in IsProfitableToHoist() argument
1204 bool CreatesCopy = HasLoopPHIUse(&MI, CurLoop); in IsProfitableToHoist()
1226 if (MO.isDef() && HasHighOperandLatency(MI, i, Reg, CurLoop)) { in IsProfitableToHoist()
1260 (!IsGuaranteedToExecute(MI.getParent(), CurLoop) && !MayCSE(&MI))) { in IsProfitableToHoist()
1270 IsLoopInvariantInst(MI, CurLoop) && in IsProfitableToHoist()
1272 [&CurLoop](MachineInstr &UseMI) { in IsProfitableToHoist()
1273 return CurLoop->contains(&UseMI); in IsProfitableToHoist()
1292 MachineLoop *CurLoop) { in ExtractHoistableLoad() argument
1333 if (!IsLoopInvariantInst(*NewMIs[0], CurLoop) || in ExtractHoistableLoad()
1334 !IsProfitableToHoist(*NewMIs[0], CurLoop)) { in ExtractHoistableLoad()
1508 MachineLoop *CurLoop) { in Hoist() argument
1520 if (!IsLoopInvariantInst(*MI, CurLoop) || in Hoist()
1521 !IsProfitableToHoist(*MI, CurLoop)) { in Hoist()
1523 MI = ExtractHoistableLoad(MI, CurLoop); in Hoist()
1602 MachineLICMBase::getCurPreheader(MachineLoop *CurLoop, in getCurPreheader() argument
1612 CurPreheader = CurLoop->getLoopPreheader(); in getCurPreheader()
1614 MachineBasicBlock *Pred = CurLoop->getLoopPredecessor(); in getCurPreheader()
1620 CurPreheader = Pred->SplitCriticalEdge(CurLoop->getHeader(), *this); in getCurPreheader()