LLVM: llvm::ScheduleDAG Class Reference (original) (raw)

#include "[llvm/CodeGen/ScheduleDAG.h](ScheduleDAG%5F8h%5Fsource.html)"

Public Member Functions
ScheduleDAG (const ScheduleDAG &)=delete
ScheduleDAG & operator= (const ScheduleDAG &)=delete
ScheduleDAG (MachineFunction &mf)
virtual ~ScheduleDAG ()
void clearDAG ()
Clears the DAG state (between regions).
const MCInstrDesc * getInstrDesc (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 TargetMachine & TM
Target processor.
const TargetInstrInfo * TII
Target instruction information.
const TargetRegisterInfo * TRI
Target processor register info.
MachineFunction & MF
Machine function.
MachineRegisterInfo & MRI
Virtual/real register map.
std::vector< SUnit > SUnits
The scheduling units.
SUnit EntrySU
Special node for the region entry.
SUnit ExitSU
Special node for the region exit.
bool StressSched

Definition at line 581 of file ScheduleDAG.h.

ScheduleDAG() [2/2]

~ScheduleDAG()

ScheduleDAG::~ScheduleDAG ( ) virtualdefault

addCustomGraphFeatures()

clearDAG()

void ScheduleDAG::clearDAG ( )

dump()

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

dumpNode()

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

dumpNodeAll()

Definition at line 365 of file ScheduleDAG.cpp.

References llvm::dbgs(), llvm::SDep::dump(), llvm::SUnit::dumpAttributes(), dumpNode(), dumpNodeName(), llvm::SDep::getSUnit(), llvm::InvalidClusterId, LLVM_DUMP_METHOD, llvm::SUnit::ParentClusterIdx, llvm::SUnit::Preds, llvm::SUnit::Succs, and TRI.

Referenced by llvm::ScheduleDAGInstrs::dump(), llvm::ScheduleDAGMILive::dump(), and llvm::ScheduleDAGSDNodes::dump().

dumpNodeName()

getDAGName()

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

getGraphNodeLabel()

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

getInstrDesc()

operator=()

References ScheduleDAG().

VerifyScheduledDAG()

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

Returns the number of scheduled SUnits.

Definition at line 395 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

viewGraph() [2/2]

EntrySU

SUnit llvm::ScheduleDAG::EntrySU

Special node for the region entry.

Definition at line 589 of file ScheduleDAG.h.

Referenced by clearDAG(), llvm::ScheduleDAGInstrs::dump(), llvm::ScheduleDAGMILive::dump(), llvm::ScheduleDAGSDNodes::dump(), dumpNodeName(), llvm::fuseInstructionPair(), llvm::SIScheduleDAGMI::getEntrySU(), llvm::ScheduleDAGInstrs::getGraphNodeLabel(), llvm::ScheduleDAGMI::initQueues(), llvm::ScheduleDAGMI::releasePred(), and llvm::SwingSchedulerDAG::schedule().

ExitSU

SUnit llvm::ScheduleDAG::ExitSU

Special node for the region exit.

Definition at line 590 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addEdge(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::ARMOverrideBypasses::apply(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::ScheduleDAGInstrs::canAddEdge(), clearDAG(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::ScheduleDAGInstrs::dump(), llvm::ScheduleDAGMILive::dump(), llvm::ScheduleDAGSDNodes::dump(), dumpNodeName(), llvm::ScheduleDAGMI::findRootsAndBiasEdges(), llvm::fuseInstructionPair(), llvm::SIScheduleDAGMI::getExitSU(), llvm::ScheduleDAGInstrs::getGraphNodeLabel(), llvm::ScheduleDAGMI::initQueues(), llvm::ScheduleDAGMI::releaseSucc(), llvm::SwingSchedulerDAG::schedule(), llvm::ScheduleDAGInstrs::ScheduleDAGInstrs(), llvm::SwingSchedulerDAG::SwingSchedulerDAG(), and llvm::ScheduleDAGMILive::updatePressureDiffs().

MF

Machine function.

Definition at line 586 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::PPCInstrInfo::CreateTargetPostRAHazardRecognizer(), llvm::SIInstrInfo::CreateTargetPostRAHazardRecognizer(), llvm::DefaultVLIWScheduler::DefaultVLIWScheduler(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::SwingSchedulerDAG::finishBlock(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::GCNScheduleDAGMILive::GCNScheduleDAGMILive(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::SIScheduleDAGMI::initRPTracker(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), llvm::GCNIterativeScheduler::printRegions(), llvm::GCNIterativeScheduler::printSchedRP(), llvm::SwingSchedulerDAG::schedule(), ScheduleDAG(), llvm::ScheduleDAGMI::ScheduleDAGMI(), llvm::GCNIterativeScheduler::scheduleILP(), llvm::GCNIterativeScheduler::scheduleLegacyMaxOccupancy(), llvm::GCNIterativeScheduler::scheduleMinReg(), llvm::GCNIterativeScheduler::scheduleRegion(), llvm::GCNIterativeScheduler::sortRegionsByPressure(), llvm::SwingSchedulerDAG::SwingSchedulerDAG(), and llvm::GCNIterativeScheduler::tryMaximizeOccupancy().

MRI

Virtual/real register map.

Definition at line 587 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SIScheduleDAGMI::fillVgprSgprCost(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), llvm::SIScheduleDAGMI::getMRI(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), llvm::SwingSchedulerDAG::schedule(), ScheduleDAG(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::GCNIterativeScheduler::scheduleRegion(), and llvm::ScheduleDAGMILive::updatePressureDiffs().

StressSched

bool llvm::ScheduleDAG::StressSched

SUnits

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

The scheduling units.

Definition at line 588 of file ScheduleDAG.h.

Referenced by llvm::ARMOverrideBypasses::apply(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::HexagonSubtarget::UsrOverflowMutation::apply(), llvm::RISCVVectorMaskDAGMutation::apply(), llvm::ScheduleDAGInstrs::buildSchedGraph(), clearDAG(), llvm::SchedDFSResult::compute(), llvm::ScheduleDAGMILive::computeDFSResult(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::ScheduleDAGInstrs::dump(), llvm::ScheduleDAGMILive::dump(), llvm::ScheduleDAGSDNodes::dump(), llvm::SMSchedule::finalizeSchedule(), llvm::ScheduleDAGMI::findRootsAndBiasEdges(), llvm::fuseInstructionPair(), llvm::ScheduleDAGSDNodes::getCustomGraphFeatures(), llvm::WindowScheduler::getEstimatedII(), llvm::SchedRemainder::init(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::ScheduleDAGInstrs::initSUnits(), llvm::SMSchedule::isValidSchedule(), llvm::ScheduleDAGInstrs::newSUnit(), llvm::ScheduleDAGSDNodes::newSUnit(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), llvm::SIScheduleDAGMI::restoreSULinksLeft(), llvm::SIScheduleDAGMI::schedule(), llvm::SwingSchedulerDAG::schedule(), llvm::VLIWMachineScheduler::schedule(), llvm::ScheduleDAGInstrs::ScheduleDAGInstrs(), llvm::SwingSchedulerDAG::SwingSchedulerDAG(), and VerifyScheduledDAG().

TII

Target instruction information.

Definition at line 584 of file ScheduleDAG.h.

Referenced by llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::SwingSchedulerDAG::applyInstrChange(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::ScheduleDAGSDNodes::computeLatency(), llvm::ScheduleDAGSDNodes::computeOperandLatency(), llvm::GCNTargetMachine::createPostMachineScheduler(), llvm::createSchedLive(), llvm::PPCInstrInfo::CreateTargetPostRAHazardRecognizer(), createVLIWMachineSched(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::fuseInstructionPair(), hasIGLPInstrs(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), ScheduleDAG(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), and llvm::GCNIterativeScheduler::swapIGLPMutations().

TM

TRI

Target processor register info.

Definition at line 585 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::GCNTargetMachine::createPostMachineScheduler(), llvm::createSchedLive(), createVLIWMachineSched(), llvm::ScheduleDAGMILive::dump(), dumpNodeAll(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), llvm::SIScheduleDAGMI::getTRI(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), llvm::SIScheduleDAGMI::schedule(), llvm::SwingSchedulerDAG::schedule(), ScheduleDAG(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::GCNIterativeScheduler::scheduleRegion(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), llvm::ScheduleDAGMILive::updatePressureDiffs(), and llvm::ScheduleDAGMILive::updateScheduledPressure().


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