|
LLVM 22.0.0git
|
#include "Target/AMDGPU/GCNSchedStrategy.h"
Public Member Functions | |
| virtual bool | initGCNSchedStage () |
| virtual void | finalizeGCNSchedStage () |
| virtual bool | initGCNRegion () |
| void | setupNewBlock () |
| void | finalizeGCNRegion () |
| void | checkScheduling () |
| ScheduleMetrics | getScheduleMetrics (const std::vector< SUnit > &InputSchedule) |
| ScheduleMetrics | getScheduleMetrics (const GCNScheduleDAGMILive &DAG) |
| unsigned | computeSUnitReadyCycle (const SUnit &SU, unsigned CurrCycle, DenseMap< unsigned, unsigned > &ReadyCycles, const TargetSchedModel &SM) |
| virtual bool | shouldRevertScheduling (unsigned WavesAfter) |
| bool | isRegionWithExcessRP () const |
| unsigned | getRegionIdx () |
| bool | mayCauseSpilling (unsigned WavesAfter) |
| void | revertScheduling () |
| void | advanceRegion () |
| virtual | ~GCNSchedStage ()=default |
Protected Member Functions | |
| GCNSchedStage (GCNSchedStageID StageID, GCNScheduleDAGMILive &DAG) | |
Protected Attributes | |
| GCNScheduleDAGMILive & | DAG |
| GCNSchedStrategy & | S |
| MachineFunction & | MF |
| SIMachineFunctionInfo & | MFI |
| const GCNSubtarget & | ST |
| const GCNSchedStageID | StageID |
| MachineBasicBlock * | CurrentMBB = nullptr |
| unsigned | RegionIdx = 0 |
| std::vector< MachineInstr * > | Unsched |
| GCNRegPressure | PressureBefore |
| GCNRegPressure | PressureAfter |
| std::vector< std::unique_ptr< ScheduleDAGMutation > > | SavedMutations |
Definition at line 325 of file GCNSchedStrategy.h.
|
protected |
Definition at line 1204 of file GCNSchedStrategy.cpp.
References DAG, MF, MFI, S, ST, and StageID.
Referenced by llvm::ClusteredLowOccStage::ClusteredLowOccStage(), llvm::ILPInitialScheduleStage::ILPInitialScheduleStage(), llvm::MemoryClauseInitialScheduleStage::MemoryClauseInitialScheduleStage(), llvm::OccInitialScheduleStage::OccInitialScheduleStage(), llvm::PreRARematStage::PreRARematStage(), and llvm::UnclusteredHighRPStage::UnclusteredHighRPStage().
|
virtualdefault |
|
inline |
Definition at line 403 of file GCNSchedStrategy.h.
References RegionIdx.
Referenced by finalizeGCNRegion().
| void GCNSchedStage::checkScheduling | ( | ) |
Definition at line 1455 of file GCNSchedStrategy.cpp.
References DAG, llvm::dbgs(), LLVM_DEBUG, MF, MFI, PressureAfter, PressureBefore, llvm::print(), RegionIdx, revertScheduling(), S, shouldRevertScheduling(), and ST.
Referenced by finalizeGCNRegion().
| unsigned GCNSchedStage::computeSUnitReadyCycle | ( | const SUnit & | SU, |
| unsigned | CurrCycle, | ||
| DenseMap< unsigned, unsigned > & | ReadyCycles, | ||
| const TargetSchedModel & | SM ) |
Definition at line 1528 of file GCNSchedStrategy.cpp.
References D(), DAG, DefMI, llvm::Latency, llvm::SUnit::NodeNum, and llvm::SUnit::Preds.
Referenced by getScheduleMetrics(), and getScheduleMetrics().
| void GCNSchedStage::finalizeGCNRegion | ( | ) |
Definition at line 1438 of file GCNSchedStrategy.cpp.
References advanceRegion(), checkScheduling(), DAG, RegionIdx, S, SavedMutations, StageID, and llvm::UnclusteredHighRPReschedule.
|
virtual |
Reimplemented in llvm::UnclusteredHighRPStage.
Definition at line 1314 of file GCNSchedStrategy.cpp.
References DAG, llvm::dbgs(), LLVM_DEBUG, and StageID.
Referenced by llvm::UnclusteredHighRPStage::finalizeGCNSchedStage().
|
inline |
Definition at line 395 of file GCNSchedStrategy.h.
References RegionIdx.
| ScheduleMetrics GCNSchedStage::getScheduleMetrics | ( | const GCNScheduleDAGMILive & | DAG | ) |
Definition at line 1606 of file GCNSchedStrategy.cpp.
References computeSUnitReadyCycle(), DAG, llvm::dbgs(), llvm::SUnit::getInstr(), LLVM_DEBUG, MI, printScheduleModel(), llvm::ScheduleMetrics::ScaleFactor, and ST.
| ScheduleMetrics GCNSchedStage::getScheduleMetrics | ( | const std::vector< SUnit > & | InputSchedule | ) |
Definition at line 1573 of file GCNSchedStrategy.cpp.
References computeSUnitReadyCycle(), llvm::dbgs(), LLVM_DEBUG, printScheduleModel(), llvm::ScheduleMetrics::ScaleFactor, and ST.
Referenced by llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
virtual |
Reimplemented in llvm::ClusteredLowOccStage, llvm::PreRARematStage, and llvm::UnclusteredHighRPStage.
Definition at line 1331 of file GCNSchedStrategy.cpp.
References llvm::createIGroupLPDAGMutation(), CurrentMBB, DAG, llvm::dbgs(), llvm::getRegPressure(), I, if(), llvm::ILPInitialSchedule, llvm::AMDGPU::Initial, llvm::SIInstrInfo::isIGLPMutationOnly(), isRegionWithExcessRP(), LLVM_DEBUG, MF, llvm::OccInitialSchedule, llvm::AMDGPU::PreRAReentry, PressureBefore, llvm::print(), llvm::printMBBReference(), RegionIdx, S, SavedMutations, setupNewBlock(), StageID, llvm::UnclusteredHighRPReschedule, and Unsched.
Referenced by llvm::ClusteredLowOccStage::initGCNRegion(), llvm::PreRARematStage::initGCNRegion(), and llvm::UnclusteredHighRPStage::initGCNRegion().
|
virtual |
Reimplemented in llvm::ClusteredLowOccStage, llvm::PreRARematStage, and llvm::UnclusteredHighRPStage.
Definition at line 1208 of file GCNSchedStrategy.cpp.
References DAG, llvm::dbgs(), LLVM_DEBUG, and StageID.
Referenced by llvm::ClusteredLowOccStage::initGCNSchedStage(), llvm::PreRARematStage::initGCNSchedStage(), and llvm::UnclusteredHighRPStage::initGCNSchedStage().
|
inline |
Definition at line 390 of file GCNSchedStrategy.h.
References DAG, and RegionIdx.
Referenced by initGCNRegion(), mayCauseSpilling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
Definition at line 1742 of file GCNSchedStrategy.cpp.
References llvm::dbgs(), isRegionWithExcessRP(), LLVM_DEBUG, MF, MFI, PressureAfter, and PressureBefore.
Referenced by llvm::ClusteredLowOccStage::shouldRevertScheduling(), llvm::ILPInitialScheduleStage::shouldRevertScheduling(), llvm::MemoryClauseInitialScheduleStage::shouldRevertScheduling(), llvm::OccInitialScheduleStage::shouldRevertScheduling(), llvm::PreRARematStage::shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
| void GCNSchedStage::revertScheduling | ( | ) |
Definition at line 1752 of file GCNSchedStrategy.cpp.
References llvm::RegisterOperands::adjustLaneLiveness(), llvm::RegisterOperands::collect(), DAG, llvm::dbgs(), llvm::RegisterOperands::detectDeadDefs(), LLVM_DEBUG, MI, RegionIdx, and Unsched.
Referenced by checkScheduling().
| void GCNSchedStage::setupNewBlock | ( | ) |
Definition at line 1424 of file GCNSchedStrategy.cpp.
References CurrentMBB, DAG, llvm::ILPInitialSchedule, llvm::MemoryClauseInitialSchedule, llvm::OccInitialSchedule, RegionIdx, and StageID.
Referenced by initGCNRegion().
Reimplemented in llvm::ClusteredLowOccStage, llvm::ILPInitialScheduleStage, llvm::MemoryClauseInitialScheduleStage, llvm::OccInitialScheduleStage, llvm::PreRARematStage, and llvm::UnclusteredHighRPStage.
Definition at line 1641 of file GCNSchedStrategy.cpp.
References DAG, llvm::AMDGPU::IsaInfo::getAllocatedNumVGPRBlocks(), PressureAfter, PressureBefore, and ST.
Referenced by checkScheduling(), llvm::ClusteredLowOccStage::shouldRevertScheduling(), llvm::OccInitialScheduleStage::shouldRevertScheduling(), llvm::PreRARematStage::shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 340 of file GCNSchedStrategy.h.
Referenced by initGCNRegion(), and setupNewBlock().
|
protected |
Definition at line 327 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), llvm::ClusteredLowOccStage::ClusteredLowOccStage(), computeSUnitReadyCycle(), finalizeGCNRegion(), finalizeGCNSchedStage(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), GCNSchedStage(), getScheduleMetrics(), llvm::ILPInitialScheduleStage::ILPInitialScheduleStage(), llvm::ClusteredLowOccStage::initGCNRegion(), initGCNRegion(), llvm::UnclusteredHighRPStage::initGCNRegion(), llvm::ClusteredLowOccStage::initGCNSchedStage(), initGCNSchedStage(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), isRegionWithExcessRP(), llvm::MemoryClauseInitialScheduleStage::MemoryClauseInitialScheduleStage(), llvm::OccInitialScheduleStage::OccInitialScheduleStage(), llvm::PreRARematStage::PreRARematStage(), revertScheduling(), setupNewBlock(), shouldRevertScheduling(), llvm::UnclusteredHighRPStage::shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::UnclusteredHighRPStage().
|
protected |
Definition at line 331 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), initGCNRegion(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and mayCauseSpilling().
|
protected |
Definition at line 333 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and mayCauseSpilling().
|
protected |
Definition at line 352 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), mayCauseSpilling(), llvm::ClusteredLowOccStage::shouldRevertScheduling(), shouldRevertScheduling(), and llvm::OccInitialScheduleStage::shouldRevertScheduling().
|
protected |
Definition at line 349 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), initGCNRegion(), mayCauseSpilling(), llvm::ClusteredLowOccStage::shouldRevertScheduling(), shouldRevertScheduling(), llvm::OccInitialScheduleStage::shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 343 of file GCNSchedStrategy.h.
Referenced by advanceRegion(), checkScheduling(), finalizeGCNRegion(), getRegionIdx(), llvm::ClusteredLowOccStage::initGCNRegion(), initGCNRegion(), llvm::PreRARematStage::initGCNRegion(), llvm::UnclusteredHighRPStage::initGCNRegion(), isRegionWithExcessRP(), revertScheduling(), and setupNewBlock().
|
protected |
Definition at line 329 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), finalizeGCNRegion(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), GCNSchedStage(), initGCNRegion(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 354 of file GCNSchedStrategy.h.
Referenced by finalizeGCNRegion(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), initGCNRegion(), and llvm::UnclusteredHighRPStage::initGCNSchedStage().
|
protected |
Definition at line 335 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), getScheduleMetrics(), getScheduleMetrics(), llvm::UnclusteredHighRPStage::initGCNRegion(), shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 337 of file GCNSchedStrategy.h.
Referenced by llvm::ClusteredLowOccStage::ClusteredLowOccStage(), finalizeGCNRegion(), finalizeGCNSchedStage(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), GCNSchedStage(), llvm::ILPInitialScheduleStage::ILPInitialScheduleStage(), initGCNRegion(), initGCNSchedStage(), llvm::MemoryClauseInitialScheduleStage::MemoryClauseInitialScheduleStage(), llvm::OccInitialScheduleStage::OccInitialScheduleStage(), llvm::PreRARematStage::PreRARematStage(), setupNewBlock(), and llvm::UnclusteredHighRPStage::UnclusteredHighRPStage().
|
protected |
Definition at line 346 of file GCNSchedStrategy.h.
Referenced by initGCNRegion(), and revertScheduling().