Lines Matching refs:MachineBasicBlock

94   using MBBVector = SmallVector<MachineBasicBlock *, 32>;
95 using MBBInfoMap = std::map<MachineBasicBlock *, BlockInformation *>;
96 using LoopLandInfoMap = std::map<MachineLoop *, MachineBasicBlock *>;
179 int getSCCNum(MachineBasicBlock *MBB) const;
180 MachineBasicBlock *getLoopLandInfo(MachineLoop *LoopRep) const;
181 bool hasBackEdge(MachineBasicBlock *MBB) const;
182 bool isRetiredBlock(MachineBasicBlock *MBB) const;
183 bool isActiveLoophead(MachineBasicBlock *MBB) const;
184 PathToKind singlePathTo(MachineBasicBlock *SrcMBB, MachineBasicBlock *DstMBB,
188 bool needMigrateBlock(MachineBasicBlock *MBB) const;
191 void reversePredicateSetter(MachineBasicBlock::iterator I,
192 MachineBasicBlock &MBB);
197 void insertInstrEnd(MachineBasicBlock *MBB, int NewOpcode,
199 MachineInstr *insertInstrBefore(MachineBasicBlock *MBB, int NewOpcode,
201 MachineInstr *insertInstrBefore(MachineBasicBlock::iterator I, int NewOpcode);
202 void insertCondBranchBefore(MachineBasicBlock::iterator I, int NewOpcode,
204 void insertCondBranchBefore(MachineBasicBlock *MBB,
205 MachineBasicBlock::iterator I, int NewOpcode,
212 static MachineBasicBlock *getTrueBranch(MachineInstr *MI);
213 static void setTrueBranch(MachineInstr *MI, MachineBasicBlock *MBB);
214 static MachineBasicBlock *getFalseBranch(MachineBasicBlock *MBB,
218 static DebugLoc getLastDebugLocInBB(MachineBasicBlock *MBB);
219 static MachineInstr *getNormalBlockBranchInstr(MachineBasicBlock *MBB);
225 MachineInstr *getLoopendBlockBranchInstr(MachineBasicBlock *MBB);
227 static MachineInstr *getReturnInstr(MachineBasicBlock *MBB);
228 static bool isReturnBlock(MachineBasicBlock *MBB);
229 static void cloneSuccessorList(MachineBasicBlock *DstMBB,
230 MachineBasicBlock *SrcMBB);
231 static MachineBasicBlock *clone(MachineBasicBlock *MBB);
236 void replaceInstrUseOfBlockWith(MachineBasicBlock *SrcMBB,
237 MachineBasicBlock *OldMBB, MachineBasicBlock *NewBlk);
239 static void wrapup(MachineBasicBlock *MBB);
241 int patternMatch(MachineBasicBlock *MBB);
242 int patternMatchGroup(MachineBasicBlock *MBB);
243 int serialPatternMatch(MachineBasicBlock *MBB);
244 int ifPatternMatch(MachineBasicBlock *MBB);
251 bool isSameloopDetachedContbreak(MachineBasicBlock *Src1MBB,
252 MachineBasicBlock *Src2MBB);
253 int handleJumpintoIf(MachineBasicBlock *HeadMBB,
254 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB);
255 int handleJumpintoIfImp(MachineBasicBlock *HeadMBB,
256 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB);
257 int improveSimpleJumpintoIf(MachineBasicBlock *HeadMBB,
258 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB,
259 MachineBasicBlock **LandMBBPtr);
260 void showImproveSimpleJumpintoIf(MachineBasicBlock *HeadMBB,
261 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB,
262 MachineBasicBlock *LandMBB, bool Detail = false);
263 int cloneOnSideEntryTo(MachineBasicBlock *PreMBB,
264 MachineBasicBlock *SrcMBB, MachineBasicBlock *DstMBB);
265 void mergeSerialBlock(MachineBasicBlock *DstMBB,
266 MachineBasicBlock *SrcMBB);
269 MachineBasicBlock *MBB, MachineBasicBlock *TrueMBB,
270 MachineBasicBlock *FalseMBB, MachineBasicBlock *LandMBB);
271 void mergeLooplandBlock(MachineBasicBlock *DstMBB,
272 MachineBasicBlock *LandMBB);
273 void mergeLoopbreakBlock(MachineBasicBlock *ExitingMBB,
274 MachineBasicBlock *LandMBB);
275 void settleLoopcontBlock(MachineBasicBlock *ContingMBB,
276 MachineBasicBlock *ContMBB);
286 MachineBasicBlock *normalizeInfiniteLoopExit(MachineLoop *LoopRep);
287 void removeUnconditionalBranch(MachineBasicBlock *MBB);
297 void removeRedundantConditionalBranch(MachineBasicBlock *MBB);
299 void addDummyExitBlock(SmallVectorImpl<MachineBasicBlock *> &RetMBB);
300 void removeSuccessor(MachineBasicBlock *MBB);
301 MachineBasicBlock *cloneBlockForPredecessor(MachineBasicBlock *MBB,
302 MachineBasicBlock *PredMBB);
303 void migrateInstruction(MachineBasicBlock *SrcMBB,
304 MachineBasicBlock *DstMBB, MachineBasicBlock::iterator I);
305 void recordSccnum(MachineBasicBlock *MBB, int SCCNum);
306 void retireBlock(MachineBasicBlock *MBB);
313 SmallVector<MachineBasicBlock *, DEFAULT_VEC_SLOTS> OrderedBlks;
320 int AMDGPUCFGStructurizer::getSCCNum(MachineBasicBlock *MBB) const { in getSCCNum()
327 MachineBasicBlock *AMDGPUCFGStructurizer::getLoopLandInfo(MachineLoop *LoopRep) in getLoopLandInfo()
335 bool AMDGPUCFGStructurizer::hasBackEdge(MachineBasicBlock *MBB) const { in hasBackEdge()
339 MachineBasicBlock *LoopHeader = LoopRep->getHeader(); in hasBackEdge()
343 bool AMDGPUCFGStructurizer::isRetiredBlock(MachineBasicBlock *MBB) const { in isRetiredBlock()
350 bool AMDGPUCFGStructurizer::isActiveLoophead(MachineBasicBlock *MBB) const { in isActiveLoophead()
353 MachineBasicBlock *LoopLand = getLoopLandInfo(LoopRep); in isActiveLoophead()
364 MachineBasicBlock *SrcMBB, MachineBasicBlock *DstMBB, in singlePathTo()
392 bool AMDGPUCFGStructurizer::needMigrateBlock(MachineBasicBlock *MBB) const { in needMigrateBlock()
405 MachineBasicBlock::iterator I, MachineBasicBlock &MBB) { in reversePredicateSetter()
431 void AMDGPUCFGStructurizer::insertInstrEnd(MachineBasicBlock *MBB, in insertInstrEnd()
440 MachineInstr *AMDGPUCFGStructurizer::insertInstrBefore(MachineBasicBlock *MBB, in insertInstrBefore()
454 MachineBasicBlock::iterator I, int NewOpcode) { in insertInstrBefore()
456 MachineBasicBlock *MBB = OldMI->getParent(); in insertInstrBefore()
466 MachineBasicBlock::iterator I, int NewOpcode, const DebugLoc &DL) { in insertCondBranchBefore()
468 MachineBasicBlock *MBB = OldMI->getParent(); in insertCondBranchBefore()
479 MachineBasicBlock *blk, MachineBasicBlock::iterator I, int NewOpcode, in insertCondBranchBefore()
529 MachineBasicBlock *AMDGPUCFGStructurizer::getTrueBranch(MachineInstr *MI) { in getTrueBranch()
534 MachineBasicBlock *MBB) { in setTrueBranch()
538 MachineBasicBlock *
539 AMDGPUCFGStructurizer::getFalseBranch(MachineBasicBlock *MBB, in getFalseBranch()
542 MachineBasicBlock *TrueBranch = getTrueBranch(MI); in getFalseBranch()
543 MachineBasicBlock::succ_iterator It = MBB->succ_begin(); in getFalseBranch()
544 MachineBasicBlock::succ_iterator Next = It; in getFalseBranch()
571 DebugLoc AMDGPUCFGStructurizer::getLastDebugLocInBB(MachineBasicBlock *MBB) { in getLastDebugLocInBB()
574 for (MachineBasicBlock::iterator It = MBB->begin(); It != MBB->end(); in getLastDebugLocInBB()
584 MachineBasicBlock *MBB) { in getNormalBlockBranchInstr()
585 MachineBasicBlock::reverse_iterator It = MBB->rbegin(); in getNormalBlockBranchInstr()
593 MachineBasicBlock *MBB) { in getLoopendBlockBranchInstr()
594 for (MachineBasicBlock::reverse_iterator It = MBB->rbegin(), E = MBB->rend(); in getLoopendBlockBranchInstr()
608 MachineInstr *AMDGPUCFGStructurizer::getReturnInstr(MachineBasicBlock *MBB) { in getReturnInstr()
609 MachineBasicBlock::reverse_iterator It = MBB->rbegin(); in getReturnInstr()
618 bool AMDGPUCFGStructurizer::isReturnBlock(MachineBasicBlock *MBB) { in isReturnBlock()
629 void AMDGPUCFGStructurizer::cloneSuccessorList(MachineBasicBlock *DstMBB, in cloneSuccessorList()
630 MachineBasicBlock *SrcMBB) { in cloneSuccessorList()
631 for (MachineBasicBlock::succ_iterator It = SrcMBB->succ_begin(), in cloneSuccessorList()
636 MachineBasicBlock *AMDGPUCFGStructurizer::clone(MachineBasicBlock *MBB) { in clone()
638 MachineBasicBlock *NewMBB = Func->CreateMachineBasicBlock(); in clone()
646 MachineBasicBlock *SrcMBB, MachineBasicBlock *OldMBB, in replaceInstrUseOfBlockWith()
647 MachineBasicBlock *NewBlk) { in replaceInstrUseOfBlockWith()
654 void AMDGPUCFGStructurizer::wrapup(MachineBasicBlock *MBB) { in wrapup()
661 MachineBasicBlock::iterator Pre = MBB->begin(); in wrapup()
662 MachineBasicBlock::iterator E = MBB->end(); in wrapup()
663 MachineBasicBlock::iterator It = Pre; in wrapup()
691 SmallVector<MachineBasicBlock *, DEFAULT_VEC_SLOTS> RetBlks; in prepare()
701 MachineBasicBlock* DummyExitBlk = normalizeInfiniteLoopExit(LoopRep); in prepare()
709 for (SmallVectorImpl<MachineBasicBlock *>::const_iterator in prepare()
711 MachineBasicBlock *MBB = *It; in prepare()
740 MachineBasicBlock *MBB; in run()
750 SmallVectorImpl<MachineBasicBlock *>::const_iterator It = in run()
752 SmallVectorImpl<MachineBasicBlock *>::const_iterator E = in run()
755 SmallVectorImpl<MachineBasicBlock *>::const_iterator SccBeginIter = in run()
757 MachineBasicBlock *SccBeginMBB = nullptr; in run()
809 MachineBasicBlock *EntryMBB = in run()
854 MachineBasicBlock *MBB; in orderBlocks()
857 const std::vector<MachineBasicBlock *> &SccNext = *It; in orderBlocks()
858 for (std::vector<MachineBasicBlock *>::const_iterator in orderBlocks()
875 int AMDGPUCFGStructurizer::patternMatch(MachineBasicBlock *MBB) { in patternMatch()
890 int AMDGPUCFGStructurizer::patternMatchGroup(MachineBasicBlock *MBB) { in patternMatchGroup()
898 int AMDGPUCFGStructurizer::serialPatternMatch(MachineBasicBlock *MBB) { in serialPatternMatch()
902 MachineBasicBlock *childBlk = *MBB->succ_begin(); in serialPatternMatch()
911 int AMDGPUCFGStructurizer::ifPatternMatch(MachineBasicBlock *MBB) { in ifPatternMatch()
924 MachineBasicBlock *TrueMBB = getTrueBranch(BranchMI); in ifPatternMatch()
927 MachineBasicBlock *FalseMBB = getFalseBranch(MBB, BranchMI); in ifPatternMatch()
930 MachineBasicBlock *LandBlk; in ifPatternMatch()
1015 MachineBasicBlock *LoopHeader = LoopRep->getHeader(); in mergeLoop()
1024 SmallPtrSet<MachineBasicBlock *, 2> ExitBlkSet; in mergeLoop()
1028 MachineBasicBlock *ExitBlk = *ExitBlks.begin(); in mergeLoop()
1031 for (auto *LB : inverse_children<MachineBasicBlock*>(LoopHeader)) in mergeLoop()
1056 MachineBasicBlock *Src1MBB, MachineBasicBlock *Src2MBB) { in isSameloopDetachedContbreak()
1060 MachineBasicBlock *&TheEntry = LLInfoMap[LoopRep]; in isSameloopDetachedContbreak()
1072 int AMDGPUCFGStructurizer::handleJumpintoIf(MachineBasicBlock *HeadMBB, in handleJumpintoIf()
1073 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB) { in handleJumpintoIf()
1083 int AMDGPUCFGStructurizer::handleJumpintoIfImp(MachineBasicBlock *HeadMBB, in handleJumpintoIfImp()
1084 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB) { in handleJumpintoIfImp()
1086 MachineBasicBlock *DownBlk; in handleJumpintoIfImp()
1122 MachineBasicBlock *HeadMBB, MachineBasicBlock *TrueMBB, in showImproveSimpleJumpintoIf()
1123 MachineBasicBlock *FalseMBB, MachineBasicBlock *LandMBB, bool Detail) { in showImproveSimpleJumpintoIf()
1164 int AMDGPUCFGStructurizer::improveSimpleJumpintoIf(MachineBasicBlock *HeadMBB, in improveSimpleJumpintoIf()
1165 MachineBasicBlock *TrueMBB, MachineBasicBlock *FalseMBB, in improveSimpleJumpintoIf()
1166 MachineBasicBlock **LandMBBPtr) { in improveSimpleJumpintoIf()
1170 MachineBasicBlock *LandBlk = *LandMBBPtr; in improveSimpleJumpintoIf()
1282 MachineBasicBlock::iterator I = insertInstrBefore(LandBlk, R600::ENDIF); in improveSimpleJumpintoIf()
1322 for (MachineBasicBlock::pred_iterator PI = LandBlk->pred_begin(), in improveSimpleJumpintoIf()
1324 MachineBasicBlock *MBB = *PI; in improveSimpleJumpintoIf()
1339 void AMDGPUCFGStructurizer::mergeSerialBlock(MachineBasicBlock *DstMBB, in mergeSerialBlock()
1340 MachineBasicBlock *SrcMBB) { in mergeSerialBlock()
1354 MachineBasicBlock *MBB, MachineBasicBlock *TrueMBB, in mergeIfthenelseBlock()
1355 MachineBasicBlock *FalseMBB, MachineBasicBlock *LandMBB) { in mergeIfthenelseBlock()
1378 MachineBasicBlock::iterator I = BranchMI; in mergeIfthenelseBlock()
1409 void AMDGPUCFGStructurizer::mergeLooplandBlock(MachineBasicBlock *DstBlk, in mergeLooplandBlock()
1410 MachineBasicBlock *LandMBB) { in mergeLooplandBlock()
1419 void AMDGPUCFGStructurizer::mergeLoopbreakBlock(MachineBasicBlock *ExitingMBB, in mergeLoopbreakBlock()
1420 MachineBasicBlock *LandMBB) { in mergeLoopbreakBlock()
1427 MachineBasicBlock *TrueBranch = getTrueBranch(BranchMI); in mergeLoopbreakBlock()
1428 MachineBasicBlock::iterator I = BranchMI; in mergeLoopbreakBlock()
1440 void AMDGPUCFGStructurizer::settleLoopcontBlock(MachineBasicBlock *ContingMBB, in settleLoopcontBlock()
1441 MachineBasicBlock *ContMBB) { in settleLoopcontBlock()
1449 MachineBasicBlock::iterator I = MI; in settleLoopcontBlock()
1450 MachineBasicBlock *TrueBranch = getTrueBranch(MI); in settleLoopcontBlock()
1483 int AMDGPUCFGStructurizer::cloneOnSideEntryTo(MachineBasicBlock *PreMBB, in cloneOnSideEntryTo()
1484 MachineBasicBlock *SrcMBB, MachineBasicBlock *DstMBB) { in cloneOnSideEntryTo()
1501 MachineBasicBlock *
1502 AMDGPUCFGStructurizer::cloneBlockForPredecessor(MachineBasicBlock *MBB, in cloneBlockForPredecessor()
1503 MachineBasicBlock *PredMBB) { in cloneBlockForPredecessor()
1507 MachineBasicBlock *CloneMBB = clone(MBB); //clone instructions in cloneBlockForPredecessor()
1527 void AMDGPUCFGStructurizer::migrateInstruction(MachineBasicBlock *SrcMBB, in migrateInstruction()
1528 MachineBasicBlock *DstMBB, MachineBasicBlock::iterator I) { in migrateInstruction()
1529 MachineBasicBlock::iterator SpliceEnd; in migrateInstruction()
1551 MachineBasicBlock *
1553 MachineBasicBlock *LoopHeader = LoopRep->getHeader(); in normalizeInfiniteLoopExit()
1554 MachineBasicBlock *LoopLatch = LoopRep->getLoopLatch(); in normalizeInfiniteLoopExit()
1563 MachineBasicBlock *DummyExitBlk = FuncRep->CreateMachineBasicBlock(); in normalizeInfiniteLoopExit()
1572 void AMDGPUCFGStructurizer::removeUnconditionalBranch(MachineBasicBlock *MBB) { in removeUnconditionalBranch()
1585 MachineBasicBlock *MBB) { in removeRedundantConditionalBranch()
1588 MachineBasicBlock *MBB1 = *MBB->succ_begin(); in removeRedundantConditionalBranch()
1589 MachineBasicBlock *MBB2 = *std::next(MBB->succ_begin()); in removeRedundantConditionalBranch()
1602 SmallVectorImpl<MachineBasicBlock*> &RetMBB) { in addDummyExitBlock()
1603 MachineBasicBlock *DummyExitBlk = FuncRep->CreateMachineBasicBlock(); in addDummyExitBlock()
1607 for (SmallVectorImpl<MachineBasicBlock *>::iterator It = RetMBB.begin(), in addDummyExitBlock()
1609 MachineBasicBlock *MBB = *It; in addDummyExitBlock()
1620 void AMDGPUCFGStructurizer::removeSuccessor(MachineBasicBlock *MBB) { in removeSuccessor()
1625 void AMDGPUCFGStructurizer::recordSccnum(MachineBasicBlock *MBB, in recordSccnum()
1633 void AMDGPUCFGStructurizer::retireBlock(MachineBasicBlock *MBB) { in retireBlock()