|
LLVM 23.0.0git
|
Attempts to reduce function spilling or, if there is no spilling, to increase function occupancy by one with respect to register usage by sinking rematerializable instructions to their use. More...
#include "Target/AMDGPU/GCNSchedStrategy.h"
Public Member Functions | |
| bool | initGCNSchedStage () override |
| bool | initGCNRegion () override |
| void | finalizeGCNRegion () override |
| bool | shouldRevertScheduling (unsigned WavesAfter) override |
| PreRARematStage (GCNSchedStageID StageID, GCNScheduleDAGMILive &DAG) | |
| Public Member Functions inherited from llvm::GCNSchedStage | |
| void | setupNewBlock () |
| 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) |
| bool | isRegionWithExcessRP () const |
| unsigned | getRegionIdx () |
| bool | mayCauseSpilling (unsigned WavesAfter) |
| void | modifyRegionSchedule (unsigned RegionIdx, ArrayRef< MachineInstr * > MIOrder) |
Sets the schedule of region RegionIdx to MIOrder. | |
| void | advanceRegion () |
| virtual | ~GCNSchedStage ()=default |
Additional Inherited Members | |
| Protected Member Functions inherited from llvm::GCNSchedStage | |
| GCNSchedStage (GCNSchedStageID StageID, GCNScheduleDAGMILive &DAG) | |
| Protected Attributes inherited from llvm::GCNSchedStage | |
| 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 register usage by sinking rematerializable instructions to their use.
When the stage estimates that reducing spilling or increasing occupancy is possible, it tries to rematerialize as few registers as possible to reduce potential negative effects on function latency.
The stage only supports rematerializing registers that meet all of the following constraints.
Definition at line 558 of file GCNSchedStrategy.h.
|
inline |
Definition at line 774 of file GCNSchedStrategy.h.
References llvm::GCNSchedStage::DAG, llvm::GCNSchedStage::GCNSchedStage(), llvm::GCNSchedStage::MF, llvm::size(), and llvm::GCNSchedStage::StageID.
|
overridevirtual |
Reimplemented from llvm::GCNSchedStage.
Definition at line 1906 of file GCNSchedStrategy.cpp.
References llvm::GCNSchedStage::DAG, llvm::dbgs(), llvm::GCNSchedStage::finalizeGCNRegion(), llvm::GCNSchedStage::PressureBefore, llvm::GCNSchedStage::RegionIdx, REMAT_DEBUG, and llvm::GCNSchedStage::Unsched.
|
overridevirtual |
Reimplemented from llvm::GCNSchedStage.
Definition at line 1873 of file GCNSchedStrategy.cpp.
References llvm::GCNSchedStage::initGCNRegion(), and llvm::GCNSchedStage::RegionIdx.
|
overridevirtual |
Reimplemented from llvm::GCNSchedStage.
Definition at line 1483 of file GCNSchedStrategy.cpp.
References _, llvm::MachineInstr::all_uses(), llvm::VirtRegAuxInfo::allUsesAvailableAt(), llvm::LaneBitmask::any(), llvm::any_of(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallSet< T, N, C >::contains(), llvm::GCNSchedStage::DAG, llvm::dbgs(), llvm::Rematerializer::Reg::DefMI, llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::Rematerializer::Reg::getDefReg(), llvm::MachineOperand::getReg(), llvm::LiveInterval::hasSubRanges(), I, llvm::GCNSchedStage::initGCNSchedStage(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineOperand::isReg(), LLVM_DEBUG, llvm::GCNSchedStage::MF, llvm::GCNSchedStage::MFI, llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), REMAT_DEBUG, REMAT_PREFIX, llvm::BitVector::reset(), llvm::reverse(), llvm::GCNSchedStage::S, llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::sort(), llvm::GCNSchedStage::ST, llvm::LiveInterval::subranges(), UseMI, UseReg(), and llvm::Rematerializer::Reg::Uses.
Reimplemented from llvm::GCNSchedStage.
Definition at line 2194 of file GCNSchedStrategy.cpp.
References llvm::GCNSchedStage::mayCauseSpilling().
Referenced by llvm::GCNSchedStage::checkScheduling().