Lines Matching full:regions
14 /// Regions are first recorded in GCNScheduleDAGMILive::schedule. The actual
15 /// entry point for the scheduling of those regions is
20 /// few scheduling regions will have register pressure high enough to limit
22 /// other regions.
604 // Collect all scheduling regions. The actual scheduling is performed in
606 Regions.push_back(std::pair(RegionBegin, RegionEnd));
638 // Scheduler sends regions from the end of the block upwards.
640 for (size_t E = Regions.size(); CurRegion != E; ++CurRegion)
641 if (Regions[CurRegion].first->getParent() != MBB)
647 auto &Rgn = Regions[CurRegion];
665 if (Regions[CurRegion].first == I || NonDbgMI == I) {
670 if (Regions[CurRegion].second == I) {
691 assert(!Regions.empty());
693 BBStarters.reserve(Regions.size());
694 auto I = Regions.rbegin(), E = Regions.rend();
708 // MachineScheduler after all regions have been recorded by
710 LiveIns.resize(Regions.size());
711 Pressure.resize(Regions.size());
712 RescheduleRegions.resize(Regions.size());
713 RegionsWithHighRP.resize(Regions.size());
714 RegionsWithExcessRP.resize(Regions.size());
715 RegionsWithMinOcc.resize(Regions.size());
716 RegionsWithIGLPInstrs.resize(Regions.size());
727 LLVM_DEBUG(dbgs() << "All regions recorded, starting actual scheduling.\n");
729 if (!Regions.empty())
738 for (auto Region : Regions) {
830 // Don't bother trying to improve ILP in lower RP regions if occupancy has not
831 // been dropped. All regions will have already been scheduled with the ideal
846 if (DAG.RegionsWithMinOcc.none() || DAG.Regions.size() == 1)
855 // FIXME: This pass will invalidate cached MBBLiveIns for regions
857 // for regions where a def is sinked from will also be invalidated. Will
900 // Skip empty scheduling regions (0 or 1 schedulable instructions).
955 // Only reschedule regions with the minimum occupancy or regions that may have
998 DAG.Regions[RegionIdx] = std::pair(DAG.RegionBegin, DAG.RegionEnd);
1368 DAG.Regions[RegionIdx] = std::pair(DAG.RegionBegin, DAG.RegionEnd);
1393 // live-through or used inside regions at MinOccupancy. This means that the
1396 for (unsigned I = 0, E = DAG.Regions.size(); I != E; ++I) {
1404 // Collect regions with rematerializable reg as live-in to avoid
1426 NewRegions.resize(DAG.Regions.size());
1427 NewRescheduleRegions.resize(DAG.Regions.size());
1429 // Collect only regions that has a rematerializable def as a live-in.
1440 NewRegions = DAG.Regions;
1512 // Update RP for all regions that has this reg as a live-in and remove
1513 // the reg from all regions as a live-in.
1516 if (InsertPos->getParent() != DAG.Regions[Idx].first->getParent()) {
1536 // Remove defs we just sinked from all regions' list of sinkable defs
1549 // Occupancy was not improved for all regions that were at MinOccupancy.
1564 // Occupancy was improved for all regions.
1580 // Update live-ins, register pressure, and regions caches.
1584 DAG.MBBLiveIns.erase(DAG.Regions[Idx].first->getParent());
1586 DAG.Regions = NewRegions;