LLVM 22.0.0git
|
Attempts to reduce function spilling or, if there is no spilling, to increase function occupancy by one with respect to ArchVGPR usage by sinking trivially rematerializable instructions to their use. More...
#include "Target/AMDGPU/GCNSchedStrategy.h"
Public Member Functions | |
bool | initGCNSchedStage () override |
bool | initGCNRegion () override |
bool | shouldRevertScheduling (unsigned WavesAfter) override |
PreRARematStage (GCNSchedStageID StageID, GCNScheduleDAGMILive &DAG) | |
![]() | |
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 |
Additional Inherited Members | |
![]() | |
GCNSchedStage (GCNSchedStageID StageID, GCNScheduleDAGMILive &DAG) | |
![]() | |
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 |
Attempts to reduce function spilling or, if there is no spilling, to increase function occupancy by one with respect to ArchVGPR usage by sinking trivially rematerializable instructions to their use.
When the stage estimates reducing spilling or increasing occupancy is possible, as few instructions as possible are rematerialized to reduce potential negative effects on function latency.
Definition at line 440 of file GCNSchedStrategy.h.
|
inline |
Definition at line 513 of file GCNSchedStrategy.h.
References llvm::size().
|
overridevirtual |
Reimplemented from llvm::GCNSchedStage.
Definition at line 1242 of file GCNSchedStrategy.cpp.
References llvm::GCNSchedStage::initGCNRegion(), and llvm::GCNSchedStage::RegionIdx.
|
overridevirtual |
Reimplemented from llvm::GCNSchedStage.
Definition at line 1092 of file GCNSchedStrategy.cpp.
References assert(), llvm::RegionPressureMap::buildLiveRegMap(), llvm::GCNSchedStage::DAG, llvm::dbgs(), GCNTrackers, llvm::MachineFunction::getInfo(), llvm::RegionBase< Tr >::getParent(), llvm::GCNSchedStrategy::hasNextStage(), I, llvm::SIMachineFunctionInfo::increaseOccupancy(), llvm::GCNSchedStage::initGCNSchedStage(), llvm::GCNSchedStage::MF, llvm::GCNSchedStage::MFI, MI, REMAT_DEBUG, llvm::GCNSchedStage::S, and llvm::SmallVectorBase< Size_T >::size().
Reimplemented from llvm::GCNSchedStage.
Definition at line 1547 of file GCNSchedStrategy.cpp.
References llvm::GCNSchedStage::mayCauseSpilling(), and llvm::GCNSchedStage::shouldRevertScheduling().