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 310 of file GCNSchedStrategy.h.
|
protected |
Definition at line 1026 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 388 of file GCNSchedStrategy.h.
References RegionIdx.
Referenced by finalizeGCNRegion().
void GCNSchedStage::checkScheduling | ( | ) |
Definition at line 1277 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 1350 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 1260 of file GCNSchedStrategy.cpp.
References advanceRegion(), checkScheduling(), DAG, RegionIdx, S, SavedMutations, StageID, and llvm::UnclusteredHighRPReschedule.
|
virtual |
Reimplemented in llvm::UnclusteredHighRPStage.
Definition at line 1136 of file GCNSchedStrategy.cpp.
References DAG, llvm::dbgs(), LLVM_DEBUG, and StageID.
Referenced by llvm::UnclusteredHighRPStage::finalizeGCNSchedStage().
|
inline |
Definition at line 380 of file GCNSchedStrategy.h.
References RegionIdx.
ScheduleMetrics GCNSchedStage::getScheduleMetrics | ( | const GCNScheduleDAGMILive & | DAG | ) |
Definition at line 1428 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 1395 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 1153 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 1030 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 375 of file GCNSchedStrategy.h.
References DAG, and RegionIdx.
Referenced by initGCNRegion(), mayCauseSpilling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
Definition at line 1564 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 1574 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 1246 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 1463 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 325 of file GCNSchedStrategy.h.
Referenced by initGCNRegion(), and setupNewBlock().
|
protected |
Definition at line 312 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 316 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), initGCNRegion(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and mayCauseSpilling().
|
protected |
Definition at line 318 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), llvm::PreRARematStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and mayCauseSpilling().
|
protected |
Definition at line 337 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), mayCauseSpilling(), llvm::ClusteredLowOccStage::shouldRevertScheduling(), shouldRevertScheduling(), and llvm::OccInitialScheduleStage::shouldRevertScheduling().
|
protected |
Definition at line 334 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), initGCNRegion(), mayCauseSpilling(), llvm::ClusteredLowOccStage::shouldRevertScheduling(), shouldRevertScheduling(), llvm::OccInitialScheduleStage::shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 328 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 314 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 339 of file GCNSchedStrategy.h.
Referenced by finalizeGCNRegion(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), initGCNRegion(), and llvm::UnclusteredHighRPStage::initGCNSchedStage().
|
protected |
Definition at line 320 of file GCNSchedStrategy.h.
Referenced by checkScheduling(), GCNSchedStage(), getScheduleMetrics(), getScheduleMetrics(), llvm::UnclusteredHighRPStage::initGCNRegion(), shouldRevertScheduling(), and llvm::UnclusteredHighRPStage::shouldRevertScheduling().
|
protected |
Definition at line 322 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 331 of file GCNSchedStrategy.h.
Referenced by initGCNRegion(), and revertScheduling().