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:
- include/llvm/CodeGen/ScheduleDAG.h
- lib/CodeGen/ScheduleDAG.cpp
- lib/CodeGen/ScheduleDAGPrinter.cpp