Lines Matching refs:Region
349 void storeLiveOutRegRegion(RegionMRT *Region, unsigned Reg,
362 void storeLiveOuts(RegionMRT *Region, const MachineRegisterInfo *MRI,
372 void setRegionMRT(RegionMRT *Region) { RMRT = Region; } in setRegionMRT() argument
434 void initLiveOut(RegionMRT *Region, const MachineRegisterInfo *MRI,
465 void setParent(RegionMRT *Region) { Parent = Region; } in setParent() argument
511 MachineRegion *Region; member in __anon98c1c4210211::RegionMRT
517 RegionMRT(MachineRegion *MachineRegion) : Region(MachineRegion) { in RegionMRT()
541 MachineRegion *getMachineRegion() { return Region; } in getMachineRegion()
553 dbgs() << "Region: " << (void *)Region; in dump()
664 MachineRegion *Region = RegionInfo->getRegionFor(MBB); in buildMRT() local
667 if (RegionMap.count(Region) == 0) { in buildMRT()
668 RegionMRT *NewMRTRegion = new RegionMRT(Region); in buildMRT()
669 RegionMap[Region] = NewMRTRegion; in buildMRT()
672 MachineRegion *Parent = Region->getParent(); in buildMRT()
686 RegionMap[Region]->addChild(NewMBB); in buildMRT()
687 NewMBB->setParent(RegionMap[Region]); in buildMRT()
688 RegionMap[Region]->setSucc(Region->getExit()); in buildMRT()
733 void LinearizedRegion::storeLiveOutRegRegion(RegionMRT *Region, unsigned Reg, in storeLiveOutRegRegion() argument
742 if (!Region->contains(UI.getParent()->getParent())) { in storeLiveOutRegRegion()
743 LLVM_DEBUG(dbgs() << "Add LiveOut (Region " << (void *)Region in storeLiveOutRegRegion()
813 void LinearizedRegion::storeLiveOuts(RegionMRT *Region, in storeLiveOuts() argument
818 MachineBasicBlock *Exit = Region->getSucc(); in storeLiveOuts()
821 CurrentTopRegion == nullptr ? Region : CurrentTopRegion; in storeLiveOuts()
827 auto Children = Region->getChildren(); in storeLiveOuts()
843 auto Succ = Region->getSucc(); in storeLiveOuts()
849 if (Region->contains(getPHIPred(PHI, i))) { in storeLiveOuts()
851 LLVM_DEBUG(dbgs() << "Add Region LiveOut (" << (void *)Region in storeLiveOuts()
1060 void LinearizedRegion::initLiveOut(RegionMRT *Region, in initLiveOut() argument
1064 storeLiveOuts(Region, MRI, TRI, PHIInfo); in initLiveOut()
1097 void getPHIRegionIndices(RegionMRT *Region, MachineInstr &PHI,
1099 void getPHIRegionIndices(LinearizedRegion *Region, MachineInstr &PHI,
1101 void getPHINonRegionIndices(LinearizedRegion *Region, MachineInstr &PHI,
1130 void rewriteRegionExitPHI(RegionMRT *Region, MachineBasicBlock *LastMerge,
1133 void rewriteRegionExitPHIs(RegionMRT *Region, MachineBasicBlock *LastMerge,
1135 void rewriteRegionEntryPHI(LinearizedRegion *Region, MachineBasicBlock *IfMBB,
1137 void rewriteRegionEntryPHIs(LinearizedRegion *Region,
1140 bool regionIsSimpleIf(RegionMRT *Region);
1142 void transformSimpleIfRegion(RegionMRT *Region);
1150 MachineBasicBlock *createLinearizedExitBlock(RegionMRT *Region);
1208 LinearizedRegion *initLinearizedRegion(RegionMRT *Region);
1210 bool structurizeComplexRegion(RegionMRT *Region);
1212 bool structurizeRegion(RegionMRT *Region);
1214 bool structurizeRegions(RegionMRT *Region, bool isTopRegion);
1230 void createLinearizedRegion(RegionMRT *Region, unsigned SelectOut);
1247 bool AMDGPUMachineCFGStructurizer::regionIsSimpleIf(RegionMRT *Region) { in regionIsSimpleIf() argument
1248 MachineBasicBlock *Entry = Region->getEntry(); in regionIsSimpleIf()
1249 MachineBasicBlock *Succ = Region->getSucc(); in regionIsSimpleIf()
1273 void AMDGPUMachineCFGStructurizer::transformSimpleIfRegion(RegionMRT *Region) { in transformSimpleIfRegion() argument
1274 MachineBasicBlock *Entry = Region->getEntry(); in transformSimpleIfRegion()
1275 MachineBasicBlock *Exit = Region->getExit(); in transformSimpleIfRegion()
1292 static void fixRegionTerminator(RegionMRT *Region) { in fixRegionTerminator() argument
1295 LinearizedRegion *LRegion = Region->getLinearizedRegion(); in fixRegionTerminator()
1329 bool regionIsSequence(RegionMRT *Region) { in regionIsSequence() argument
1330 auto Children = Region->getChildren(); in regionIsSequence()
1341 void fixupRegionExits(RegionMRT *Region) { in fixupRegionExits() argument
1342 auto Children = Region->getChildren(); in fixupRegionExits()
1353 RegionMRT *Region, MachineInstr &PHI, in getPHIRegionIndices() argument
1358 if (Region->contains(Pred)) { in getPHIRegionIndices()
1365 LinearizedRegion *Region, MachineInstr &PHI, in getPHIRegionIndices() argument
1370 if (Region->contains(Pred)) { in getPHIRegionIndices()
1377 LinearizedRegion *Region, MachineInstr &PHI, in getPHINonRegionIndices() argument
1382 if (!Region->contains(Pred)) { in getPHINonRegionIndices()
1632 void AMDGPUMachineCFGStructurizer::rewriteRegionExitPHI(RegionMRT *Region, in rewriteRegionExitPHI() argument
1637 getPHIRegionIndices(Region, PHI, PHIRegionIndices); in rewriteRegionExitPHI()
1645 void AMDGPUMachineCFGStructurizer::rewriteRegionEntryPHI(LinearizedRegion *Region, in rewriteRegionEntryPHI() argument
1649 getPHINonRegionIndices(Region, PHI, PHINonRegionIndices); in rewriteRegionEntryPHI()
1664 void AMDGPUMachineCFGStructurizer::rewriteRegionExitPHIs(RegionMRT *Region, in rewriteRegionExitPHIs() argument
1668 auto Exit = Region->getSucc(); in rewriteRegionExitPHIs()
1675 rewriteRegionExitPHI(Region, LastMerge, *PHII, LRegion); in rewriteRegionExitPHIs()
1679 void AMDGPUMachineCFGStructurizer::rewriteRegionEntryPHIs(LinearizedRegion *Region, in rewriteRegionEntryPHIs() argument
1682 auto Entry = Region->getEntry(); in rewriteRegionEntryPHIs()
1687 rewriteRegionEntryPHI(Region, IfMBB, *PHII); in rewriteRegionEntryPHIs()
1726 AMDGPUMachineCFGStructurizer::createLinearizedExitBlock(RegionMRT *Region) { in createLinearizedExitBlock() argument
1727 auto Exit = Region->getSucc(); in createLinearizedExitBlock()
1730 MachineFunction *MF = Region->getEntry()->getParent(); in createLinearizedExitBlock()
1732 return &(*(--(Region->getEntry()->getParent()->end()))); in createLinearizedExitBlock()
2569 AMDGPUMachineCFGStructurizer::initLinearizedRegion(RegionMRT *Region) { in initLinearizedRegion() argument
2570 LinearizedRegion *LRegion = Region->getLinearizedRegion(); in initLinearizedRegion()
2571 LRegion->initLiveOut(Region, MRI, TRI, PHIInfo); in initLinearizedRegion()
2572 LRegion->setEntry(Region->getEntry()); in initLinearizedRegion()
2576 static void removeOldExitPreds(RegionMRT *Region) { in removeOldExitPreds() argument
2577 MachineBasicBlock *Exit = Region->getSucc(); in removeOldExitPreds()
2584 if (Region->contains(*PI)) { in removeOldExitPreds()
2613 RegionMRT *Region = Tree->getRegionMRT(); in containsNewBackedge() local
2614 SetVector<MRT *> *Children = Region->getChildren(); in containsNewBackedge()
2623 static bool containsNewBackedge(RegionMRT *Region) { in containsNewBackedge() argument
2625 return containsNewBackedge(Region, MBBs); in containsNewBackedge()
2628 bool AMDGPUMachineCFGStructurizer::structurizeComplexRegion(RegionMRT *Region) { in structurizeComplexRegion() argument
2629 auto *LRegion = initLinearizedRegion(Region); in structurizeComplexRegion()
2630 LRegion->setHasLoop(containsNewBackedge(Region)); in structurizeComplexRegion()
2631 MachineBasicBlock *LastMerge = createLinearizedExitBlock(Region); in structurizeComplexRegion()
2636 rewriteRegionExitPHIs(Region, LastMerge, LRegion); in structurizeComplexRegion()
2637 removeOldExitPreds(Region); in structurizeComplexRegion()
2641 SetVector<MRT *> *Children = Region->getChildren(); in structurizeComplexRegion()
2743 NewInReg, Region->getEntry()->getNumber()); in structurizeComplexRegion()
2754 if (Region->isRoot()) { in structurizeComplexRegion()
2758 LLVM_DEBUG(Region->getEntry()->getParent()->dump()); in structurizeComplexRegion()
2764 Region->setLinearizedRegion(LRegion); in structurizeComplexRegion()
2768 bool AMDGPUMachineCFGStructurizer::structurizeRegion(RegionMRT *Region) { in structurizeRegion() argument
2769 if (false && regionIsSimpleIf(Region)) { in structurizeRegion()
2770 transformSimpleIfRegion(Region); in structurizeRegion()
2772 } else if (regionIsSequence(Region)) { in structurizeRegion()
2773 fixupRegionExits(Region); in structurizeRegion()
2776 structurizeComplexRegion(Region); in structurizeRegion()
2783 bool AMDGPUMachineCFGStructurizer::structurizeRegions(RegionMRT *Region, in structurizeRegions() argument
2787 auto Children = Region->getChildren(); in structurizeRegions()
2795 Changed |= structurizeRegion(Region); in structurizeRegions()
2813 void AMDGPUMachineCFGStructurizer::createLinearizedRegion(RegionMRT *Region, in createLinearizedRegion() argument
2821 LRegion->setRegionMRT(Region); in createLinearizedRegion()
2822 Region->setLinearizedRegion(LRegion); in createLinearizedRegion()
2823 LRegion->setParent(Region->getParent() in createLinearizedRegion()
2824 ? Region->getParent()->getLinearizedRegion() in createLinearizedRegion()
2833 RegionMRT *Region = MRT->getRegionMRT(); in initializeSelectRegisters() local
2834 Region->setBBSelectRegOut(SelectOut); in initializeSelectRegisters()
2838 createLinearizedRegion(Region, SelectOut); in initializeSelectRegisters()
2840 for (auto CI = Region->getChildren()->begin(), in initializeSelectRegisters()
2841 CE = Region->getChildren()->end(); in initializeSelectRegisters()