|
LLVM 22.0.0git
|
The goal of this scheduling strategy is to maximize kernel occupancy (i.e. More...
#include "Target/AMDGPU/GCNSchedStrategy.h"
Public Member Functions | |
| GCNMaxOccupancySchedStrategy (const MachineSchedContext *C, bool IsLegacyScheduler=false) | |
| Public Member Functions inherited from llvm::GCNSchedStrategy | |
| GCNSchedStrategy (const MachineSchedContext *C) | |
| SUnit * | pickNode (bool &IsTopNode) override |
| Pick the next node to schedule, or return NULL. | |
| void | schedNode (SUnit *SU, bool IsTopNode) override |
| Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes. | |
| void | initialize (ScheduleDAGMI *DAG) override |
| Initialize the strategy after building the DAG for a new region. | |
| unsigned | getTargetOccupancy () |
| void | setTargetOccupancy (unsigned Occ) |
| GCNSchedStageID | getCurrentStage () |
| bool | advanceStage () |
| bool | hasNextStage () const |
| GCNSchedStageID | getNextStage () const |
| GCNDownwardRPTracker * | getDownwardTracker () |
| GCNUpwardRPTracker * | getUpwardTracker () |
| Public Member Functions inherited from llvm::GenericScheduler | |
| GenericScheduler (const MachineSchedContext *C) | |
| void | initPolicy (MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned NumRegionInstrs) override |
| Initialize the per-region scheduling policy. | |
| void | dumpPolicy () const override |
| bool | shouldTrackPressure () const override |
| Check if pressure tracking is needed before building the DAG and initializing this strategy. | |
| bool | shouldTrackLaneMasks () const override |
| Returns true if lanemasks should be tracked. | |
| void | initialize (ScheduleDAGMI *dag) override |
| Initialize the strategy after building the DAG for a new region. | |
| SUnit * | pickNode (bool &IsTopNode) override |
| Pick the best node to balance the schedule. Implements MachineSchedStrategy. | |
| void | schedNode (SUnit *SU, bool IsTopNode) override |
| Update the scheduler's state after scheduling a node. | |
| void | releaseTopNode (SUnit *SU) override |
| When all predecessor dependencies have been resolved, free this node for top-down scheduling. | |
| void | releaseBottomNode (SUnit *SU) override |
| When all successor dependencies have been resolved, free this node for bottom-up scheduling. | |
| void | registerRoots () override |
| Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU). | |
| Public Member Functions inherited from llvm::MachineSchedStrategy | |
| virtual | ~MachineSchedStrategy ()=default |
| virtual bool | doMBBSchedRegionsTopDown () const |
| virtual void | enterMBB (MachineBasicBlock *MBB) |
| Tell the strategy that MBB is about to be processed. | |
| virtual void | leaveMBB () |
| Tell the strategy that current MBB is done. | |
| virtual void | scheduleTree (unsigned SubtreeID) |
| Scheduler callback to notify that a new subtree is scheduled. | |
The goal of this scheduling strategy is to maximize kernel occupancy (i.e.
maximum number of waves per simd).
Definition at line 153 of file GCNSchedStrategy.h.
| GCNMaxOccupancySchedStrategy::GCNMaxOccupancySchedStrategy | ( | const MachineSchedContext * | C, |
| bool | IsLegacyScheduler = false ) |
Definition at line 689 of file GCNSchedStrategy.cpp.
References llvm::CallingConv::C, llvm::ClusteredLowOccupancyReschedule, llvm::GCNSchedStrategy::GCNSchedStrategy(), GCNTrackers, llvm::OccInitialSchedule, llvm::PreRARematerialize, llvm::GCNSchedStrategy::SchedStages, and llvm::UnclusteredHighRPReschedule.