Lines Matching full:pressure
20 /// few scheduling regions will have register pressure high enough to limit
37 cl::desc("Disable unclustered high register pressure "
119 /// Checks whether \p SU can use the cached DAG pressure diffs to compute the
120 /// current register pressure.
127 /// In both of those cases, PressureDiff doesn't represent the actual pressure,
134 /// more logic to recover an accurate pressure estimate from the PressureDiffs.
139 // Cannot use pressure diffs for subregister defs or with physregs, it's in canUsePressureDiffs()
153 std::vector<unsigned> &Pressure, in getRegisterPressures() argument
159 TempTracker.getDownwardPressure(SU->getInstr(), Pressure, MaxPressure); in getRegisterPressures()
161 TempTracker.getUpwardPressure(SU->getInstr(), Pressure, MaxPressure); in getRegisterPressures()
176 Pressure.clear(); in initCandidate()
191 getRegisterPressures(AtTop, RPTracker, SU, Pressure, MaxPressure); in initCandidate()
194 Pressure.resize(4, 0); in initCandidate()
195 Pressure[AMDGPU::RegisterPressureSets::SReg_32] = SGPRPressure; in initCandidate()
196 Pressure[AMDGPU::RegisterPressureSets::VGPR_32] = VGPRPressure; in initCandidate()
203 Pressure[Diff.getPSet()] += in initCandidate()
210 if (Pressure[AMDGPU::RegisterPressureSets::SReg_32] != in initCandidate()
212 Pressure[AMDGPU::RegisterPressureSets::VGPR_32] != in initCandidate()
214 errs() << "Register Pressure is inaccurate when calculated through " in initCandidate()
216 << "SGPR got " << Pressure[AMDGPU::RegisterPressureSets::SReg_32] in initCandidate()
219 << "VGPR got " << Pressure[AMDGPU::RegisterPressureSets::VGPR_32] in initCandidate()
222 report_fatal_error("inaccurate register pressure calculation"); in initCandidate()
227 unsigned NewSGPRPressure = Pressure[AMDGPU::RegisterPressureSets::SReg_32]; in initCandidate()
228 unsigned NewVGPRPressure = Pressure[AMDGPU::RegisterPressureSets::VGPR_32]; in initCandidate()
230 // If two instructions increase the pressure of different register sets in initCandidate()
234 // when we report excess/critical register pressure, we do it either in initCandidate()
245 // register pressure. in initCandidate()
248 // pressure. Instructions that decrease or keep reg pressure the same will be in initCandidate()
250 // instructions that increase the register pressure. in initCandidate()
263 // Register pressure is considered 'CRITICAL' if it is approaching a value in initCandidate()
265 // register pressure is 'CRITICAL', increasing SGPR and VGPR pressure both in initCandidate()
293 ArrayRef<unsigned> Pressure = RPTracker.getRegSetPressureAtPos(); in pickNodeFromQueue() local
297 SGPRPressure = Pressure[AMDGPU::RegisterPressureSets::SReg_32]; in pickNodeFromQueue()
298 VGPRPressure = Pressure[AMDGPU::RegisterPressureSets::VGPR_32]; in pickNodeFromQueue()
547 // Avoid increasing the max critical pressure in the scheduled region. in tryCandidate()
553 // Avoid increasing the max pressure of the entire region. in tryCandidate()
671 Pressure[CurRegion] = RPTracker.moveMaxPressure(); in computeBlockPressure()
711 Pressure.resize(Regions.size()); in finalizeSchedule()
763 OS << "Unclustered High Register Pressure Reschedule"; in operator <<()
807 // Aggressivly try to reduce register pressure in the unclustered high RP in initGCNSchedStage()
817 "Aggressivly try to reduce register pressure to achieve occupancy " in initGCNSchedStage()
856 // inbetween the defs and region we sinked the def to. Cached pressure in initGCNSchedStage()
880 for (unsigned IDX = 0; IDX < DAG.Pressure.size(); ++IDX) in finalizeGCNSchedStage()
882 DAG.Pressure[IDX].getOccupancy(DAG.ST) == DAG.MinOccupancy; in finalizeGCNSchedStage()
928 PressureBefore = DAG.Pressure[RegionIdx]; in initGCNRegion()
931 dbgs() << "Pressure before scheduling:\nRegion live-ins:" in initGCNRegion()
933 << "Region live-in pressure: " in initGCNRegion()
935 << "Region register pressure: " << print(PressureBefore)); in initGCNRegion()
956 // spilling (excess register pressure). in initGCNRegion()
967 // stage, or if we found it was testing critical register pressure limits in in initGCNRegion()
1018 LLVM_DEBUG(dbgs() << "Pressure after scheduling: " << print(PressureAfter)); in checkScheduling()
1023 DAG.Pressure[RegionIdx] = PressureAfter; in checkScheduling()
1028 LLVM_DEBUG(dbgs() << "Pressure in desired limits, done.\n"); in checkScheduling()
1044 // pressure higher than the excess limits which could lead to more spilling. in checkScheduling()
1085 DAG.Pressure[RegionIdx] = PressureAfter; in checkScheduling()
1296 LLVM_DEBUG(dbgs() << "New pressure will result in more spilling.\n"); in mayCauseSpilling()
1434 // Make copies of register pressure and live-ins cache that will be updated in sinkTriviallyRematInsts()
1437 NewPressure[Idx] = DAG.Pressure[Idx]; in sinkTriviallyRematInsts()
1511 // FIXME: Also update cached pressure for where the def was sinked from. in sinkTriviallyRematInsts()
1580 // Update live-ins, register pressure, and regions caches. in sinkTriviallyRematInsts()
1583 DAG.Pressure[Idx] = NewPressure[Idx]; in sinkTriviallyRematInsts()