LLVM 22.0.0git
|
This class provides APIs to retrieve edges from/to an SUnit node, with a particular focus on loop-carried dependencies. More...
#include "llvm/CodeGen/MachinePipeliner.h"
Public Member Functions | |
SwingSchedulerDDG (std::vector< SUnit > &SUnits, SUnit *EntrySU, SUnit *ExitSU, const LoopCarriedEdges &LCE) | |
const EdgesType & | getInEdges (const SUnit *SU) const |
const EdgesType & | getOutEdges (const SUnit *SU) const |
bool | isValidSchedule (const SMSchedule &Schedule) const |
Check if Schedule doesn't violate the validation-only dependencies. |
This class provides APIs to retrieve edges from/to an SUnit node, with a particular focus on loop-carried dependencies.
Since SUnit is not designed to represent such edges, handling them directly using its APIs has required non-trivial logic in the past. This class serves as a wrapper around SUnit, offering a simpler interface for managing these dependencies.
Definition at line 233 of file MachinePipeliner.h.
SwingSchedulerDDG::SwingSchedulerDDG | ( | std::vector< SUnit > & | SUnits, |
SUnit * | EntrySU, | ||
SUnit * | ExitSU, | ||
const LoopCarriedEdges & | LCE ) |
Definition at line 4182 of file MachinePipeliner.cpp.
References llvm::SDep::Barrier, llvm::sampleprof::Base, and llvm::LoopCarriedEdges::getOrderDepOrNull().
const SwingSchedulerDDG::EdgesType & SwingSchedulerDDG::getInEdges | ( | const SUnit * | SU | ) | const |
Definition at line 4210 of file MachinePipeliner.cpp.
Referenced by computePath(), llvm::SMSchedule::computeStart(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::SMSchedule::earliestCycleInChain(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::SMSchedule::onlyHasLoopCarriedOutputOrOrderPreds(), llvm::SMSchedule::orderDependence(), pred_L(), and succ_L().
const SwingSchedulerDDG::EdgesType & SwingSchedulerDDG::getOutEdges | ( | const SUnit * | SU | ) | const |
Definition at line 4215 of file MachinePipeliner.cpp.
Referenced by computePath(), llvm::SMSchedule::computeStart(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::SMSchedule::isValidSchedule(), llvm::SMSchedule::latestCycleInChain(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::SMSchedule::orderDependence(), pred_L(), and succ_L().
bool SwingSchedulerDDG::isValidSchedule | ( | const SMSchedule & | Schedule | ) | const |
Check if Schedule
doesn't violate the validation-only dependencies.
Definition at line 4220 of file MachinePipeliner.cpp.
References llvm::SMSchedule::cycleScheduled(), llvm::dbgs(), llvm::SMSchedule::getInitiationInterval(), II, LLVM_DEBUG, and llvm::SMSchedule::stageScheduled().