Lines Matching refs:MachineBasicBlock

38   using PHISourceT = std::pair<unsigned, MachineBasicBlock *>;
54 MachineBasicBlock *SourceMBB);
57 MachineBasicBlock *SourceMBB);
60 MachineBasicBlock *SourceMBB);
63 bool findSourcesFromMBB(MachineBasicBlock *SourceMBB,
69 MachineBasicBlock *SourceMBB);
71 MachineBasicBlock *SourceMBB = nullptr);
72 bool findDest(unsigned SourceReg, MachineBasicBlock *SourceMBB,
74 bool isSource(unsigned Reg, MachineBasicBlock *SourceMBB = nullptr);
127 MachineBasicBlock *SourceMBB) { in phiInfoElementAddSource()
143 MachineBasicBlock *SourceMBB) { in phiInfoElementRemoveSource()
170 MachineBasicBlock *SourceMBB) { in findPHIInfoElementFromSource()
182 bool PHILinearize::findSourcesFromMBB(MachineBasicBlock *SourceMBB, in findSourcesFromMBB()
217 MachineBasicBlock *SourceMBB) { in addSource()
222 MachineBasicBlock *SourceMBB) { in removeSource()
226 bool PHILinearize::findDest(unsigned SourceReg, MachineBasicBlock *SourceMBB, in findDest()
237 bool PHILinearize::isSource(unsigned Reg, MachineBasicBlock *SourceMBB) { in isSource()
289 static MachineBasicBlock *getPHIPred(MachineInstr &PHI, unsigned Index) { in getPHIPred()
295 MachineBasicBlock *NewPred) { in setPhiPred()
316 MachineBasicBlock *Entry;
319 MachineBasicBlock *Exit;
321 SmallPtrSet<MachineBasicBlock *, 1> MBBs;
326 void storeLiveOutReg(MachineBasicBlock *MBB, Register Reg,
336 void storeMBBLiveOuts(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
340 void storeLiveOuts(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
349 LinearizedRegion(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
395 void setEntry(MachineBasicBlock *NewEntry);
397 MachineBasicBlock *getEntry();
399 void setExit(MachineBasicBlock *NewExit);
401 MachineBasicBlock *getExit();
403 void addMBB(MachineBasicBlock *MBB);
407 bool contains(MachineBasicBlock *MBB);
450 static MachineBasicBlock *
469 MachineBasicBlock *MBB;
472 MBBMRT(MachineBasicBlock *BB) : MBB(BB) { in MBBMRT()
480 MachineBasicBlock *getMBB() { return MBB; } in getMBB()
494 MachineBasicBlock *Succ = nullptr;
552 MachineBasicBlock *getEntry() { in getEntry()
558 MachineBasicBlock *getExit() { in getExit()
564 void setSucc(MachineBasicBlock *MBB) { Succ = MBB; } in setSucc()
566 MachineBasicBlock *getSucc() { return Succ; } in getSucc()
568 bool contains(MachineBasicBlock *MBB) { in contains()
602 MachineBasicBlock *
606 MachineBasicBlock *ExitMBB = &MFI; in initializeMRT()
626 MachineBasicBlock *Exit = initializeMRT(MF, RegionInfo, RegionMap); in buildMRT()
634 MachineBasicBlock *MBB = &(*MBBI); in buildMRT()
672 void LinearizedRegion::storeLiveOutReg(MachineBasicBlock *MBB, Register Reg, in storeLiveOutReg()
696 for (MachineBasicBlock::instr_iterator in storeLiveOutReg()
730 void LinearizedRegion::storeLiveOuts(MachineBasicBlock *MBB, in storeLiveOuts()
749 for (MachineBasicBlock *Succ : MBB->successors()) { in storeLiveOuts()
771 void LinearizedRegion::storeMBBLiveOuts(MachineBasicBlock *MBB, in storeMBBLiveOuts()
795 MachineBasicBlock *Exit = Region->getSucc(); in storeLiveOuts()
964 void LinearizedRegion::setEntry(MachineBasicBlock *NewEntry) { in setEntry()
968 MachineBasicBlock *LinearizedRegion::getEntry() { return Entry; } in getEntry()
970 void LinearizedRegion::setExit(MachineBasicBlock *NewExit) { Exit = NewExit; } in setExit()
972 MachineBasicBlock *LinearizedRegion::getExit() { return Exit; } in getExit()
974 void LinearizedRegion::addMBB(MachineBasicBlock *MBB) { MBBs.insert(MBB); } in addMBB()
982 bool LinearizedRegion::contains(MachineBasicBlock *MBB) { in contains()
1001 MachineBasicBlock *MBB = MBBI; in removeFalseRegisterKills()
1047 LinearizedRegion::LinearizedRegion(MachineBasicBlock *MBB, in LinearizedRegion()
1073 DenseMap<MachineBasicBlock *, MachineBasicBlock *> FallthroughMap;
1090 void extractKilledPHIs(MachineBasicBlock *MBB);
1096 MachineBasicBlock *SourceMBB,
1100 MachineBasicBlock *LastMerge,
1103 MachineBasicBlock *IfMBB,
1109 void rewriteRegionExitPHI(RegionMRT *Region, MachineBasicBlock *LastMerge,
1112 void rewriteRegionExitPHIs(RegionMRT *Region, MachineBasicBlock *LastMerge,
1114 void rewriteRegionEntryPHI(LinearizedRegion *Region, MachineBasicBlock *IfMBB,
1117 MachineBasicBlock *IfMBB);
1123 void insertUnconditionalBranch(MachineBasicBlock *MBB,
1124 MachineBasicBlock *Dest,
1127 MachineBasicBlock *createLinearizedExitBlock(RegionMRT *Region);
1129 void insertMergePHI(MachineBasicBlock *IfBB, MachineBasicBlock *CodeBB,
1130 MachineBasicBlock *MergeBB, unsigned DestRegister,
1134 MachineBasicBlock *createIfBlock(MachineBasicBlock *MergeBB,
1135 MachineBasicBlock *CodeBBStart,
1136 MachineBasicBlock *CodeBBEnd,
1137 MachineBasicBlock *SelectBB, unsigned IfReg,
1140 void prunePHIInfo(MachineBasicBlock *MBB);
1144 void resolvePHIInfos(MachineBasicBlock *FunctionEntry);
1148 MachineBasicBlock *createIfRegion(MachineBasicBlock *MergeBB,
1149 MachineBasicBlock *CodeBB,
1154 MachineBasicBlock *
1155 createIfRegion(MachineBasicBlock *MergeMBB, LinearizedRegion *InnerRegion,
1156 LinearizedRegion *CurrentRegion, MachineBasicBlock *SelectBB,
1160 void rewriteCodeBBTerminator(MachineBasicBlock *CodeBB,
1161 MachineBasicBlock *MergeBB,
1165 void insertChainedPHI(MachineBasicBlock *IfBB, MachineBasicBlock *CodeBB,
1166 MachineBasicBlock *MergeBB,
1169 bool containsDef(MachineBasicBlock *MBB, LinearizedRegion *InnerRegion,
1171 void rewriteLiveOutRegs(MachineBasicBlock *IfBB, MachineBasicBlock *CodeBB,
1172 MachineBasicBlock *MergeBB,
1176 void splitLoopPHI(MachineInstr &PHI, MachineBasicBlock *Entry,
1177 MachineBasicBlock *EntrySucc, LinearizedRegion *LRegion);
1178 void splitLoopPHIs(MachineBasicBlock *Entry, MachineBasicBlock *EntrySucc,
1181 MachineBasicBlock *splitExit(LinearizedRegion *LRegion);
1183 MachineBasicBlock *splitEntry(LinearizedRegion *LRegion);
1225 MachineBasicBlock *Entry = Region->getEntry(); in regionIsSimpleIf()
1226 MachineBasicBlock *Succ = Region->getSucc(); in regionIsSimpleIf()
1234 for (MachineBasicBlock *Current : Entry->successors()) { in regionIsSimpleIf()
1247 MachineBasicBlock *Entry = Region->getEntry(); in transformSimpleIfRegion()
1248 MachineBasicBlock *Exit = Region->getExit(); in transformSimpleIfRegion()
1252 static void fixMBBTerminator(MachineBasicBlock *MBB) { in fixMBBTerminator()
1266 MachineBasicBlock *InternalSucc = nullptr; in fixRegionTerminator()
1267 MachineBasicBlock *ExternalSucc = nullptr; in fixRegionTerminator()
1271 SmallPtrSet<MachineBasicBlock *, 2> Successors; in fixRegionTerminator()
1272 for (MachineBasicBlock *Succ : Exit->successors()) { in fixRegionTerminator()
1327 MachineBasicBlock *Pred = getPHIPred(PHI, i); in getPHIRegionIndices()
1339 MachineBasicBlock *Pred = getPHIPred(PHI, i); in getPHIRegionIndices()
1351 MachineBasicBlock *Pred = getPHIPred(PHI, i); in getPHINonRegionIndices()
1383 void AMDGPUMachineCFGStructurizer::extractKilledPHIs(MachineBasicBlock *MBB) { in extractKilledPHIs()
1387 for (MachineBasicBlock::instr_iterator I = MBB->instr_begin(), in extractKilledPHIs()
1419 MachineBasicBlock *SourceMBB, in shrinkPHI()
1448 MachineBasicBlock *MBB = PHI.getParent(); in shrinkPHI()
1464 MachineBasicBlock *SourcePred = getPHIPred(PHI, i); in shrinkPHI()
1477 MachineInstr &PHI, unsigned CombinedSourceReg, MachineBasicBlock *LastMerge, in replacePHI()
1493 MachineBasicBlock *MBB = PHI.getParent(); in replacePHI()
1506 MachineBasicBlock *SourcePred = getPHIPred(PHI, i); in replacePHI()
1520 MachineInstr &PHI, unsigned CombinedSourceReg, MachineBasicBlock *IfMBB, in replaceEntryPHI()
1542 MachineBasicBlock *MBB = PHI.getParent(); in replaceEntryPHI()
1556 MachineBasicBlock *SourcePred = getPHIPred(PHI, i); in replaceEntryPHI()
1577 MachineBasicBlock *DefMBB = getDefInstr(Reg)->getParent(); in replaceLiveOutRegs()
1597 MachineBasicBlock *LastMerge, in rewriteRegionExitPHI()
1610 MachineBasicBlock *IfMBB, in rewriteRegionEntryPHI()
1619 static void collectPHIs(MachineBasicBlock *MBB, in collectPHIs()
1629 MachineBasicBlock *LastMerge, in rewriteRegionExitPHIs()
1644 MachineBasicBlock *IfMBB) { in rewriteRegionEntryPHIs()
1655 void AMDGPUMachineCFGStructurizer::insertUnconditionalBranch(MachineBasicBlock *MBB, in insertUnconditionalBranch()
1656 MachineBasicBlock *Dest, in insertUnconditionalBranch()
1660 MachineBasicBlock::instr_iterator Terminator = MBB->getFirstInstrTerminator(); in insertUnconditionalBranch()
1670 static MachineBasicBlock *getSingleExitNode(MachineFunction &MF) { in getSingleExitNode()
1671 MachineBasicBlock *result = nullptr; in getSingleExitNode()
1689 MachineBasicBlock *
1699 MachineBasicBlock *LastMerge = MF->CreateMachineBasicBlock(); in createLinearizedExitBlock()
1714 void AMDGPUMachineCFGStructurizer::insertMergePHI(MachineBasicBlock *IfBB, in insertMergePHI()
1715 MachineBasicBlock *CodeBB, in insertMergePHI()
1716 MachineBasicBlock *MergeBB, in insertMergePHI()
1744 static void removeExternalCFGSuccessors(MachineBasicBlock *MBB) { in removeExternalCFGSuccessors()
1745 for (MachineBasicBlock::succ_iterator PI = MBB->succ_begin(), in removeExternalCFGSuccessors()
1754 static void removeExternalCFGEdges(MachineBasicBlock *StartMBB, in removeExternalCFGEdges()
1755 MachineBasicBlock *EndMBB) { in removeExternalCFGEdges()
1760 DenseSet<std::pair<MachineBasicBlock *, MachineBasicBlock *>> Succs; in removeExternalCFGEdges()
1763 MachineBasicBlock *StartMBBSucc = *(StartMBB->succ_begin()); in removeExternalCFGEdges()
1764 for (MachineBasicBlock *Succ : EndMBB->successors()) { in removeExternalCFGEdges()
1770 std::pair<MachineBasicBlock *, MachineBasicBlock *>(EndMBB, Succ)); in removeExternalCFGEdges()
1775 for (MachineBasicBlock *Pred : StartMBB->predecessors()) in removeExternalCFGEdges()
1780 std::pair<MachineBasicBlock *, MachineBasicBlock *> Edge = SI; in removeExternalCFGEdges()
1787 MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfBlock( in createIfBlock()
1788 MachineBasicBlock *MergeBB, MachineBasicBlock *CodeBBStart, in createIfBlock()
1789 MachineBasicBlock *CodeBBEnd, MachineBasicBlock *SelectBB, unsigned IfReg, in createIfBlock()
1792 MachineBasicBlock *IfBB = MF->CreateMachineBasicBlock(); in createIfBlock()
1795 for (MachineBasicBlock *Pred : CodeBBStart->predecessors()) in createIfBlock()
1819 MachineBasicBlock *SinglePred = in createIfBlock()
1851 void AMDGPUMachineCFGStructurizer::rewriteCodeBBTerminator(MachineBasicBlock *CodeBB, in rewriteCodeBBTerminator()
1852 MachineBasicBlock *MergeBB, in rewriteCodeBBTerminator()
1854 MachineBasicBlock *TrueBB = nullptr; in rewriteCodeBBTerminator()
1855 MachineBasicBlock *FalseBB = nullptr; in rewriteCodeBBTerminator()
1857 MachineBasicBlock *FallthroughBB = FallthroughMap[CodeBB]; in rewriteCodeBBTerminator()
1918 void AMDGPUMachineCFGStructurizer::insertChainedPHI(MachineBasicBlock *IfBB, in insertChainedPHI()
1919 MachineBasicBlock *CodeBB, in insertChainedPHI()
1920 MachineBasicBlock *MergeBB, in insertChainedPHI()
1969 bool AMDGPUMachineCFGStructurizer::containsDef(MachineBasicBlock *MBB, in containsDef()
1976 void AMDGPUMachineCFGStructurizer::rewriteLiveOutRegs(MachineBasicBlock *IfBB, in rewriteLiveOutRegs()
1977 MachineBasicBlock *CodeBB, in rewriteLiveOutRegs()
1978 MachineBasicBlock *MergeBB, in rewriteLiveOutRegs()
2043 void AMDGPUMachineCFGStructurizer::prunePHIInfo(MachineBasicBlock *MBB) { in prunePHIInfo()
2046 SmallVector<std::tuple<unsigned, unsigned, MachineBasicBlock *>, 4> in prunePHIInfo()
2070 MachineBasicBlock *SourceMBB = Source.second; in prunePHIInfo()
2090 MachineBasicBlock *Entry = CurrentRegion->getEntry(); in createEntryPHI()
2091 MachineBasicBlock *Exit = CurrentRegion->getExit(); in createEntryPHI()
2123 MachineBasicBlock *PHIDefMBB = PHIDefInstr->getParent(); in createEntryPHI()
2208 void AMDGPUMachineCFGStructurizer::resolvePHIInfos(MachineBasicBlock *FunctionEntry) { in resolvePHIInfos()
2226 static bool isFunctionEntryBlock(MachineBasicBlock *MBB) { in isFunctionEntryBlock()
2230 MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfRegion( in createIfRegion()
2231 MachineBasicBlock *MergeBB, MachineBasicBlock *CodeBB, in createIfRegion()
2266 MachineBasicBlock *IfBB = createIfBlock(MergeBB, CodeBB, CodeBB, CodeBB, in createIfRegion()
2275 MachineBasicBlock *RegionExit = CurrentRegion->getExit(); in createIfRegion()
2276 MachineBasicBlock *ETrueBB = nullptr; in createIfRegion()
2277 MachineBasicBlock *EFalseBB = nullptr; in createIfRegion()
2316 MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfRegion( in createIfRegion()
2317 MachineBasicBlock *MergeBB, LinearizedRegion *InnerRegion, in createIfRegion()
2318 LinearizedRegion *CurrentRegion, MachineBasicBlock *SelectBB, in createIfRegion()
2322 MachineBasicBlock *CodeEntryBB = InnerRegion->getEntry(); in createIfRegion()
2323 MachineBasicBlock *CodeExitBB = InnerRegion->getExit(); in createIfRegion()
2324 MachineBasicBlock *IfBB = createIfBlock(MergeBB, CodeEntryBB, CodeExitBB, in createIfRegion()
2331 MachineBasicBlock *RegionExit = CurrentRegion->getExit(); in createIfRegion()
2332 MachineBasicBlock *ETrueBB = nullptr; in createIfRegion()
2333 MachineBasicBlock *EFalseBB = nullptr; in createIfRegion()
2377 MachineBasicBlock *Entry, in splitLoopPHI()
2378 MachineBasicBlock *EntrySucc, in splitLoopPHI()
2387 MachineBasicBlock *RegionSourceMBB = getPHIPred(PHI, RegionIndex); in splitLoopPHI()
2414 void AMDGPUMachineCFGStructurizer::splitLoopPHIs(MachineBasicBlock *Entry, in splitLoopPHIs()
2415 MachineBasicBlock *EntrySucc, in splitLoopPHIs()
2426 MachineBasicBlock *
2467 static MachineBasicBlock *split(MachineBasicBlock::iterator I) { in split()
2469 MachineBasicBlock *MBB = (*I).getParent(); in split()
2471 MachineBasicBlock *SuccMBB = MF->CreateMachineBasicBlock(); in split()
2487 MachineBasicBlock *
2489 MachineBasicBlock *Entry = LRegion->getEntry(); in splitEntry()
2490 MachineBasicBlock *EntrySucc = split(Entry->getFirstNonPHI()); in splitEntry()
2491 MachineBasicBlock *Exit = LRegion->getExit(); in splitEntry()
2524 MachineBasicBlock *Exit = Region->getSucc(); in removeOldExitPreds()
2528 for (MachineBasicBlock::pred_iterator PI = Exit->pred_begin(), in removeOldExitPreds()
2537 static bool mbbHasBackEdge(MachineBasicBlock *MBB, in mbbHasBackEdge()
2538 SmallPtrSet<MachineBasicBlock *, 8> &MBBs) { in mbbHasBackEdge() argument
2539 for (MachineBasicBlock *Succ : MBB->successors()) in mbbHasBackEdge()
2546 SmallPtrSet<MachineBasicBlock *, 8> &MBBs) { in containsNewBackedge() argument
2552 MachineBasicBlock *MBB = Tree->getMBBMRT()->getMBB(); in containsNewBackedge()
2567 SmallPtrSet<MachineBasicBlock *, 8> MBBs; in containsNewBackedge()
2574 MachineBasicBlock *LastMerge = createLinearizedExitBlock(Region); in structurizeComplexRegion()
2575 MachineBasicBlock *CurrentMerge = LastMerge; in structurizeComplexRegion()
2609 MachineBasicBlock *InnerEntry = InnerLRegion->getEntry(); in structurizeComplexRegion()
2630 MachineBasicBlock *IfEnd = CurrentMerge; in structurizeComplexRegion()
2636 MachineBasicBlock *MBB = Child->getMBBMRT()->getMBB(); in structurizeComplexRegion()
2654 MachineBasicBlock *IfEnd = CurrentMerge; in structurizeComplexRegion()
2670 MachineBasicBlock *NewSucc = splitEntry(LRegion); in structurizeComplexRegion()
2741 MachineBasicBlock *MBB = MBBI.getFallThrough(); in initFallthroughMap()