Lines Matching refs:MBB

111   bool removeMBBifRedundant(MachineBasicBlock &MBB);
119 skipIgnoreExecInstsTrivialSucc(MachineBasicBlock &MBB,
124 skipToUncondBrOrEnd(MachineBasicBlock &MBB, in skipToUncondBrOrEnd() argument
129 MachineBasicBlock::iterator End = MBB.end(); in skipToUncondBrOrEnd()
182 MachineBasicBlock *MBB = Worklist.pop_back_val(); in hasKill() local
184 if (MBB == End || !Visited.insert(MBB).second) in hasKill()
186 if (KillBlocks.contains(MBB)) in hasKill()
189 Worklist.append(MBB->succ_begin(), MBB->succ_end()); in hasKill()
208 MachineBasicBlock &MBB = *MI.getParent(); in emitIf() local
235 BuildMI(MBB, I, DL, TII->get(AMDGPU::COPY), CopyReg) in emitIf()
243 BuildMI(MBB, I, DL, TII->get(AndOpc), Tmp) in emitIf()
254 BuildMI(MBB, I, DL, TII->get(XorOpc), SaveExecReg) in emitIf()
263 BuildMI(MBB, I, DL, TII->get(MovTermOpc), Exec) in emitIf()
270 I = skipToUncondBrOrEnd(MBB, I); in emitIf()
274 MachineInstr *NewBr = BuildMI(MBB, I, DL, TII->get(AMDGPU::S_CBRANCH_EXECZ)) in emitIf()
306 MachineBasicBlock &MBB = *MI.getParent(); in emitElse() local
312 MachineBasicBlock::iterator Start = MBB.begin(); in emitElse()
318 BuildMI(MBB, Start, DL, TII->get(OrSaveExecOpc), SaveReg) in emitElse()
329 MachineInstr *And = BuildMI(MBB, ElsePt, DL, TII->get(AndOpc), DstReg) in emitElse()
334 BuildMI(MBB, ElsePt, DL, TII->get(XorTermrOpc), Exec) in emitElse()
340 ElsePt = skipToUncondBrOrEnd(MBB, ElsePt); in emitElse()
343 BuildMI(MBB, ElsePt, DL, TII->get(AMDGPU::S_CBRANCH_EXECZ)) in emitElse()
369 MachineBasicBlock &MBB = *MI.getParent(); in emitIfBreak() local
391 And = BuildMI(MBB, &MI, DL, TII->get(AndOpc), AndReg) in emitIfBreak()
396 Or = BuildMI(MBB, &MI, DL, TII->get(OrOpc), Dst) in emitIfBreak()
400 Or = BuildMI(MBB, &MI, DL, TII->get(OrOpc), Dst) in emitIfBreak()
423 MachineBasicBlock &MBB = *MI.getParent(); in emitLoop() local
427 BuildMI(MBB, &MI, DL, TII->get(Andn2TermOpc), Exec) in emitLoop()
433 auto BranchPt = skipToUncondBrOrEnd(MBB, MI.getIterator()); in emitLoop()
435 BuildMI(MBB, BranchPt, DL, TII->get(AMDGPU::S_CBRANCH_EXECNZ)) in emitLoop()
449 MachineBasicBlock &MBB, MachineBasicBlock::iterator It) const { in skipIgnoreExecInstsTrivialSucc() argument
452 MachineBasicBlock *B = &MBB; in skipIgnoreExecInstsTrivialSucc()
455 return MBB.end(); in skipIgnoreExecInstsTrivialSucc()
467 return MBB.end(); in skipIgnoreExecInstsTrivialSucc()
478 MachineBasicBlock &MBB = *MI.getParent(); in emitEndCf() local
481 MachineBasicBlock::iterator InsPt = MBB.begin(); in emitEndCf()
497 MachineBasicBlock *SplitBB = &MBB; in emitEndCf()
499 SplitBB = MBB.splitAt(MI, /*UpdateLiveIns*/true, LIS); in emitEndCf()
500 if (MDT && SplitBB != &MBB) { in emitEndCf()
501 MachineDomTreeNode *MBBNode = (*MDT)[&MBB]; in emitEndCf()
504 MachineDomTreeNode *SplitBBNode = MDT->addNewBlock(SplitBB, &MBB); in emitEndCf()
513 BuildMI(MBB, InsPt, DL, TII->get(Opcode), Exec) in emitEndCf()
519 if (SplitBB != &MBB) { in emitEndCf()
526 for (MachineBasicBlock *BlockPiece : {&MBB, SplitBB}) { in emitEndCf()
539 if (VI.AliveBlocks.test(MBB.getNumber())) in emitEndCf()
544 VI.AliveBlocks.set(MBB.getNumber()); in emitEndCf()
625 MachineBasicBlock &MBB = *MI->getParent(); in optimizeEndCf() local
627 skipIgnoreExecInstsTrivialSucc(MBB, std::next(MI->getIterator())); in optimizeEndCf()
628 if (Next == MBB.end() || !LoweredEndCf.count(&*Next)) in optimizeEndCf()
647 removeMBBifRedundant(MBB); in optimizeEndCf()
653 MachineBasicBlock &MBB = *MI.getParent(); in process() local
655 MachineInstr *Prev = (I != MBB.begin()) ? &*(std::prev(I)) : nullptr; in process()
657 MachineBasicBlock *SplitBB = &MBB; in process()
690 for (I = Prev ? Prev->getIterator() : MBB.begin(); I != MBB.end(); I = Next) { in process()
702 I = MBB.end(); in process()
710 bool SILowerControlFlow::removeMBBifRedundant(MachineBasicBlock &MBB) { in removeMBBifRedundant() argument
711 for (auto &I : MBB.instrs()) { in removeMBBifRedundant()
716 assert(MBB.succ_size() == 1 && "MBB has more than one successor"); in removeMBBifRedundant()
718 MachineBasicBlock *Succ = *MBB.succ_begin(); in removeMBBifRedundant()
721 while (!MBB.predecessors().empty()) { in removeMBBifRedundant()
722 MachineBasicBlock *P = *MBB.pred_begin(); in removeMBBifRedundant()
723 if (P->getFallThrough(false) == &MBB) in removeMBBifRedundant()
725 P->ReplaceUsesOfBlockWith(&MBB, Succ); in removeMBBifRedundant()
727 MBB.removeSuccessor(Succ); in removeMBBifRedundant()
729 for (auto &I : MBB.instrs()) in removeMBBifRedundant()
736 if (MDT->dominates(&MBB, Succ)) in removeMBBifRedundant()
738 MDT->getNode(&MBB)->getIDom()); in removeMBBifRedundant()
739 MDT->eraseNode(&MBB); in removeMBBifRedundant()
741 MBB.clear(); in removeMBBifRedundant()
742 MBB.eraseFromParent(); in removeMBBifRedundant()
799 for (auto &MBB : MF) { in runOnMachineFunction() local
801 for (auto &Term : MBB.terminators()) { in runOnMachineFunction()
803 KillBlocks.insert(&MBB); in runOnMachineFunction()
809 for (auto &MI : MBB) { in runOnMachineFunction()
811 KillBlocks.insert(&MBB); in runOnMachineFunction()
823 MachineBasicBlock *MBB = &*BI; in runOnMachineFunction() local
826 E = MBB->end(); in runOnMachineFunction()
827 for (I = MBB->begin(); I != E; I = Next) { in runOnMachineFunction()
830 MachineBasicBlock *SplitMBB = MBB; in runOnMachineFunction()
844 if (SplitMBB != MBB) { in runOnMachineFunction()
845 MBB = Next->getParent(); in runOnMachineFunction()
846 E = MBB->end(); in runOnMachineFunction()