Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:MBB

107     bool ProcessBlock(MachineBasicBlock &MBB);
129 bool AllUsesDominatedByBlock(unsigned Reg, MachineBasicBlock *MBB,
132 MachineBasicBlock *FindSuccToSinkTo(MachineInstr &MI, MachineBasicBlock *MBB,
135 MachineBasicBlock *MBB,
140 MachineBasicBlock *MBB);
143 GetAllSortedSuccessors(MachineInstr &MI, MachineBasicBlock *MBB,
159 MachineBasicBlock *MBB) {
197 MachineBasicBlock *MBB,
208 // BreakPHIEdge is true if all the uses are in the successor MBB being sunken
228 if (!(UseBlock == MBB && UseInst->isPHI() &&
252 if (!DT->dominates(MBB, UseBlock))
282 for (auto &MBB: MF)
283 MadeChange |= ProcessBlock(MBB);
311 bool MachineSinking::ProcessBlock(MachineBasicBlock &MBB) {
313 if (MBB.succ_size() <= 1 || MBB.empty()) return false;
318 if (!DT->isReachableFromEntry(&MBB)) return false;
326 MachineBasicBlock::iterator I = MBB.end();
334 ProcessedBegin = I == MBB.begin();
341 bool Joined = PerformTrivialForwardCoalescing(MI, &MBB);
392 // If the definition resides in same MBB,
496 MachineBasicBlock *MBB,
501 if (MBB == SuccToSinkTo)
505 if (!PDT->dominates(SuccToSinkTo, MBB))
510 if (LI->getLoopDepth(MBB) > LI->getLoopDepth(SuccToSinkTo))
539 MachineSinking::GetAllSortedSuccessors(MachineInstr &MI, MachineBasicBlock *MBB,
543 auto Succs = AllSuccessors.find(MBB);
547 SmallVector<MachineBasicBlock *, 4> AllSuccs(MBB->succ_begin(),
548 MBB->succ_end());
558 DT->getNode(MBB)->getChildren();
560 // DomTree children of MBB that have MBB as immediate dominator are added.
563 !MBB->isSuccessor(DTChild->getBlock()))
577 auto it = AllSuccessors.insert(std::make_pair(MBB, AllSuccs));
584 MachineSinking::FindSuccToSinkTo(MachineInstr &MI, MachineBasicBlock *MBB,
587 assert (MBB && "Invalid MachineBasicBlock!");
607 if (!MRI->isConstantPhysReg(Reg, *MBB->getParent()))
627 if (!AllUsesDominatedByBlock(Reg, SuccToSinkTo, MBB,
639 GetAllSortedSuccessors(MI, MBB, AllSuccessors)) {
641 if (AllUsesDominatedByBlock(Reg, SuccBlock, MBB,
654 if (!isProfitableToSinkTo(Reg, MI, MBB, SuccToSinkTo, AllSuccessors))
661 if (MBB == SuccToSinkTo)
684 auto *MBB = MI.getParent();
685 if (MBB->pred_size() != 1)
688 auto *PredMBB = *MBB->pred_begin();
813 // BreakPHIEdge is true if all the uses are in the successor MBB being