Lines Matching defs:CurLoop

150     bool isExitBlock(MachineLoop *CurLoop, const MachineBasicBlock *MBB) {
151 auto [It, Inserted] = ExitBlockMap.try_emplace(CurLoop);
154 CurLoop->getExitBlocks(ExitBlocks);
218 void HoistRegionPostRA(MachineLoop *CurLoop,
221 void HoistPostRA(MachineInstr *MI, unsigned Def, MachineLoop *CurLoop,
227 MachineLoop *CurLoop);
229 void AddToLiveIns(MCRegister Reg, MachineLoop *CurLoop);
231 bool IsLICMCandidate(MachineInstr &I, MachineLoop *CurLoop);
233 bool IsLoopInvariantInst(MachineInstr &I, MachineLoop *CurLoop);
235 bool HasLoopPHIUse(const MachineInstr *MI, MachineLoop *CurLoop);
238 MachineLoop *CurLoop) const;
247 bool IsProfitableToHoist(MachineInstr &MI, MachineLoop *CurLoop);
249 bool IsGuaranteedToExecute(MachineBasicBlock *BB, MachineLoop *CurLoop);
262 void HoistOutOfLoop(MachineDomTreeNode *HeaderN, MachineLoop *CurLoop,
274 MachineInstr *ExtractHoistableLoad(MachineInstr *MI, MachineLoop *CurLoop);
286 MachineLoop *CurLoop);
294 MachineBasicBlock *getCurPreheader(MachineLoop *CurLoop,
419 MachineLoop *CurLoop = Worklist.pop_back_val();
423 HoistRegionPostRA(CurLoop, CurPreheader);
427 MachineDomTreeNode *N = MDTU->getDomTree().getNode(CurLoop->getHeader());
429 HoistOutOfLoop(N, CurLoop, CurPreheader);
518 MachineLoop *CurLoop) {
601 if ((!HasNonInvariantUse && IsLICMCandidate(*MI, CurLoop)) ||
609 void MachineLICMImpl::HoistRegionPostRA(MachineLoop *CurLoop,
611 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader);
624 for (MachineBasicBlock *BB : CurLoop->getBlocks()) {
644 ProcessMI(&MI, RUDefs, RUClobbers, StoredFIs, Candidates, CurLoop);
705 HoistPostRA(MI, Candidate.Def, CurLoop, CurPreheader);
711 void MachineLICMImpl::AddToLiveIns(MCRegister Reg, MachineLoop *CurLoop) {
712 for (MachineBasicBlock *BB : CurLoop->getBlocks()) {
729 MachineLoop *CurLoop,
731 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader);
752 AddToLiveIns(Def, CurLoop);
761 MachineLoop *CurLoop) {
765 if (BB != CurLoop->getHeader()) {
768 CurLoop->getExitingBlocks(CurrentLoopExitingBlocks);
834 MachineLoop *CurLoop,
836 MachineBasicBlock *Preheader = getCurPreheader(CurLoop, CurPreheader);
859 if (!CurLoop->contains(BB))
901 HoistRes = Hoist(&MI, Preheader, CurLoop);
906 for (MachineLoop *L = MLI->getLoopFor(MI.getParent()); L != CurLoop;
1105 bool MachineLICMImpl::IsLICMCandidate(MachineInstr &I, MachineLoop *CurLoop) {
1107 bool DontMoveAcrossStore = !HoistConstLoads || !AllowedToHoistLoads[CurLoop];
1121 !IsGuaranteedToExecute(I.getParent(), CurLoop)) {
1133 if (!TII->shouldHoist(I, CurLoop))
1141 MachineLoop *CurLoop) {
1142 if (!IsLICMCandidate(I, CurLoop)) {
1146 return CurLoop->isLoopInvariant(I);
1152 MachineLoop *CurLoop) {
1165 if (CurLoop->contains(&UseMI))
1170 if (isExitBlock(CurLoop, UseMI.getParent()))
1175 if (UseMI.isCopy() && CurLoop->contains(&UseMI))
1187 MachineLoop *CurLoop) const {
1194 if (!CurLoop->contains(UseMI.getParent()))
1282 MachineLoop *CurLoop) {
1302 bool CreatesCopy = HasLoopPHIUse(&MI, CurLoop);
1324 if (MO.isDef() && HasHighOperandLatency(MI, i, Reg, CurLoop)) {
1358 (!IsGuaranteedToExecute(MI.getParent(), CurLoop) && !MayCSE(&MI))) {
1374 IsLoopInvariantInst(MI, CurLoop) &&
1376 [&CurLoop, this, DefReg,
1378 if (!CurLoop->contains(&UseMI))
1386 !CurLoop->isLoopInvariant(UseMI, DefReg))
1409 MachineLoop *CurLoop) {
1450 if (!IsLoopInvariantInst(*NewMIs[0], CurLoop) ||
1451 !IsProfitableToHoist(*NewMIs[0], CurLoop)) {
1625 MachineLoop *CurLoop) {
1637 if (!IsLoopInvariantInst(*MI, CurLoop) ||
1638 !IsProfitableToHoist(*MI, CurLoop)) {
1640 MI = ExtractHoistableLoad(MI, CurLoop);
1719 MachineLICMImpl::getCurPreheader(MachineLoop *CurLoop,
1729 CurPreheader = CurLoop->getLoopPreheader();
1731 MachineBasicBlock *Pred = CurLoop->getLoopPredecessor();
1737 CurPreheader = Pred->SplitCriticalEdge(CurLoop->getHeader(), LegacyPass,