LLVM 19.0.0git
Public Member Functions | Public Attributes | Protected Member Functions | List of all members
llvm::ScheduleDAG Class Referenceabstract

#include "llvm/CodeGen/ScheduleDAG.h"

Inheritance diagram for llvm::ScheduleDAG:
Inheritance graph
[legend]

Public Member Functions

 ScheduleDAG (const ScheduleDAG &)=delete
 
ScheduleDAGoperator= (const ScheduleDAG &)=delete
 
 ScheduleDAG (MachineFunction &mf)
 
virtual ~ScheduleDAG ()
 
void clearDAG ()
 Clears the DAG state (between regions).
 
const MCInstrDescgetInstrDesc (const SUnit *SU) const
 Returns the MCInstrDesc of this SUnit.
 
virtual void viewGraph (const Twine &Name, const Twine &Title)
 Pops up a GraphViz/gv window with the ScheduleDAG rendered using 'dot'.
 
virtual void viewGraph ()
 Out-of-line implementation with no arguments is handy for gdb.
 
virtual void dumpNode (const SUnit &SU) const =0
 
virtual void dump () const =0
 
void dumpNodeName (const SUnit &SU) const
 
virtual std::string getGraphNodeLabel (const SUnit *SU) const =0
 Returns a label for an SUnit node in a visualization of the ScheduleDAG.
 
virtual std::string getDAGName () const =0
 Returns a label for the region of code covered by the DAG.
 
virtual void addCustomGraphFeatures (GraphWriter< ScheduleDAG * > &) const
 Adds custom features for a visualization of the ScheduleDAG.
 
unsigned VerifyScheduledDAG (bool isBottomUp)
 Verifies that all SUnits were scheduled and that their state is consistent.
 

Public Attributes

const LLVMTargetMachineTM
 Target processor.
 
const TargetInstrInfoTII
 Target instruction information.
 
const TargetRegisterInfoTRI
 Target processor register info.
 
MachineFunctionMF
 Machine function.
 
MachineRegisterInfoMRI
 Virtual/real register map.
 
std::vector< SUnitSUnits
 The scheduling units.
 
SUnit EntrySU
 Special node for the region entry.
 
SUnit ExitSU
 Special node for the region exit.
 
bool StressSched
 

Protected Member Functions

void dumpNodeAll (const SUnit &SU) const
 

Detailed Description

Definition at line 554 of file ScheduleDAG.h.

Constructor & Destructor Documentation

◆ ScheduleDAG() [1/2]

llvm::ScheduleDAG::ScheduleDAG ( const ScheduleDAG )
delete

◆ ScheduleDAG() [2/2]

ScheduleDAG::ScheduleDAG ( MachineFunction mf)
explicit

Definition at line 52 of file ScheduleDAG.cpp.

References StressSched, and StressSchedOpt.

◆ ~ScheduleDAG()

ScheduleDAG::~ScheduleDAG ( )
virtualdefault

Member Function Documentation

◆ addCustomGraphFeatures()

virtual void llvm::ScheduleDAG::addCustomGraphFeatures ( GraphWriter< ScheduleDAG * > &  ) const
inlinevirtual

Adds custom features for a visualization of the ScheduleDAG.

Definition at line 609 of file ScheduleDAG.h.

◆ clearDAG()

void ScheduleDAG::clearDAG ( )

Clears the DAG state (between regions).

Definition at line 63 of file ScheduleDAG.cpp.

References EntrySU, ExitSU, and SUnits.

Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph(), and llvm::ScheduleDAGSDNodes::Run().

◆ dump()

virtual void llvm::ScheduleDAG::dump ( ) const
pure virtual

◆ dumpNode()

virtual void llvm::ScheduleDAG::dumpNode ( const SUnit SU) const
pure virtual

◆ dumpNodeAll()

LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeAll ( const SUnit SU) const
protected

◆ dumpNodeName()

LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeName ( const SUnit SU) const

◆ getDAGName()

virtual std::string llvm::ScheduleDAG::getDAGName ( ) const
pure virtual

Returns a label for the region of code covered by the DAG.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

Referenced by viewGraph().

◆ getGraphNodeLabel()

virtual std::string llvm::ScheduleDAG::getGraphNodeLabel ( const SUnit SU) const
pure virtual

Returns a label for an SUnit node in a visualization of the ScheduleDAG.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

◆ getInstrDesc()

const MCInstrDesc * llvm::ScheduleDAG::getInstrDesc ( const SUnit SU) const
inline

◆ operator=()

ScheduleDAG & llvm::ScheduleDAG::operator= ( const ScheduleDAG )
delete

◆ VerifyScheduledDAG()

unsigned ScheduleDAG::VerifyScheduledDAG ( bool  isBottomUp)

Verifies that all SUnits were scheduled and that their state is consistent.

Returns the number of scheduled SUnits.

Definition at line 391 of file ScheduleDAG.cpp.

References assert(), llvm::dbgs(), dumpNode(), llvm::SUnit::getDepth(), llvm::SUnit::getHeight(), llvm::SUnit::isScheduled, llvm::SUnit::NumPreds, llvm::SUnit::NumPredsLeft, llvm::SUnit::NumSuccs, llvm::SUnit::NumSuccsLeft, and SUnits.

Referenced by llvm::ScheduleDAGSDNodes::VerifyScheduledSequence().

◆ viewGraph() [1/2]

void ScheduleDAG::viewGraph ( )
virtual

Out-of-line implementation with no arguments is handy for gdb.

Reimplemented in llvm::ScheduleDAGMI.

Definition at line 90 of file ScheduleDAGPrinter.cpp.

References getDAGName(), and viewGraph().

Referenced by viewGraph().

◆ viewGraph() [2/2]

void ScheduleDAG::viewGraph ( const Twine Name,
const Twine Title 
)
virtual

Pops up a GraphViz/gv window with the ScheduleDAG rendered using 'dot'.

viewGraph - Pop up a ghostview window with the reachable parts of the DAG rendered using 'dot'.

Reimplemented in llvm::ScheduleDAGMI.

Definition at line 79 of file ScheduleDAGPrinter.cpp.

References llvm::errs(), Name, and llvm::ViewGraph().

Member Data Documentation

◆ EntrySU

SUnit llvm::ScheduleDAG::EntrySU

◆ ExitSU

SUnit llvm::ScheduleDAG::ExitSU

◆ MF

MachineFunction& llvm::ScheduleDAG::MF

Machine function.

Definition at line 559 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::SwingSchedulerDAG::applyInstrChange(), llvm::ScheduleDAGMILive::buildDAGWithRegPressure(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SIInstrInfo::CreateTargetMIHazardRecognizer(), llvm::SIInstrInfo::CreateTargetPostRAHazardRecognizer(), llvm::PPCInstrInfo::CreateTargetPostRAHazardRecognizer(), llvm::PPCDispatchGroupSBHazardRecognizer::EmitNoop(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::SwingSchedulerDAG::finishBlock(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::GenericScheduler::initialize(), llvm::PostGenericScheduler::initialize(), llvm::ConvergingVLIWScheduler::initialize(), llvm::GCNSchedStrategy::initialize(), llvm::R600SchedStrategy::initialize(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::SIScheduleDAGMI::initRPTracker(), llvm::SwingSchedulerDAG::isLoopCarriedDep(), llvm::PPCDispatchGroupSBHazardRecognizer::PreEmitNoops(), llvm::GCNIterativeScheduler::printRegions(), llvm::GCNIterativeScheduler::printSchedRP(), llvm::SwingSchedulerDAG::schedule(), llvm::GCNIterativeScheduler::scheduleILP(), llvm::GCNIterativeScheduler::scheduleLegacyMaxOccupancy(), llvm::GCNIterativeScheduler::scheduleMinReg(), llvm::GCNIterativeScheduler::scheduleRegion(), llvm::HexagonConvergingVLIWScheduler::SchedulingCost(), llvm::GCNIterativeScheduler::sortRegionsByPressure(), llvm::GenericScheduler::tryCandidate(), llvm::GCNMaxILPSchedStrategy::tryCandidate(), llvm::PPCPreRASchedStrategy::tryCandidate(), and llvm::GCNIterativeScheduler::tryMaximizeOccupancy().

◆ MRI

MachineRegisterInfo& llvm::ScheduleDAG::MRI

◆ StressSched

bool llvm::ScheduleDAG::StressSched

Definition at line 568 of file ScheduleDAG.h.

Referenced by ScheduleDAG().

◆ SUnits

std::vector<SUnit> llvm::ScheduleDAG::SUnits

The scheduling units.

Definition at line 561 of file ScheduleDAG.h.

Referenced by llvm::HexagonSubtarget::UsrOverflowMutation::apply(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::ResourceManager::calculateResMII(), clearDAG(), llvm::SchedDFSResult::compute(), llvm::ScheduleDAGMILive::computeDFSResult(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::ScheduleDAGMILive::dump(), llvm::ScheduleDAGInstrs::dump(), llvm::ScheduleDAGSDNodes::dump(), llvm::SMSchedule::finalizeSchedule(), llvm::ScheduleDAGMI::findRootsAndBiasEdges(), llvm::fuseInstructionPair(), llvm::ScheduleDAGSDNodes::getCustomGraphFeatures(), llvm::SchedRemainder::init(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::init(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::ScheduleDAGInstrs::initSUnits(), llvm::SIScheduleBlockCreator::isSUInBlock(), llvm::SMSchedule::isValidSchedule(), llvm::ScheduleDAGInstrs::newSUnit(), llvm::ScheduleDAGSDNodes::newSUnit(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::VLIWPacketizerList::PacketizeMIs(), llvm::R600SchedStrategy::pickNode(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), llvm::GCNIterativeScheduler::OverrideLegacyStrategy::restoreOrder(), llvm::SIScheduleDAGMI::restoreSULinksLeft(), llvm::VLIWMachineScheduler::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::UnclusteredHighRPStage::shouldRevertScheduling(), and VerifyScheduledDAG().

◆ TII

const TargetInstrInfo* llvm::ScheduleDAG::TII

◆ TM

const LLVMTargetMachine& llvm::ScheduleDAG::TM

Target processor.

Definition at line 556 of file ScheduleDAG.h.

◆ TRI

const TargetRegisterInfo* llvm::ScheduleDAG::TRI

The documentation for this class was generated from the following files: