22 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINESCHEDULER_H
23 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINESCHEDULER_H
43 Candidate() : SU(
nullptr), GroupingCost(0), ResourcesCost(0) {}
50 bool inline noCost() {
51 return (GroupingCost <= 0 && !ResourcesCost);
58 bool operator() (
SUnit *lhs,
SUnit *rhs)
const {
73 struct SUSet : std::set<SUnit*, SUSorter> {
void releaseTopNode(SUnit *SU) override
SU has had all predecessor dependencies resolved.
SUnit * pickNode(bool &IsTopNode) override
Pick the next node to schedule, or return NULL.
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
unsigned getHeight() const
getHeight - Return the height of this node, which is the length of the maximum path down to any node ...
void initialize(ScheduleDAGMI *dag) override
Initialize the strategy after building the DAG for a new region.
SystemZHazardRecognizer maintains the state during scheduling.
void schedNode(SUnit *SU, bool IsTopNode) override
ScheduleDAGMI has scheduled an instruction - tell HazardRec about it.
A MachineSchedStrategy implementation for SystemZ post RA scheduling.
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
SystemZPostRASchedStrategy(const MachineSchedContext *C)
bool shouldTrackPressure() const override
PostRA scheduling does not track pressure.
MachineSchedContext provides enough context from the MachineScheduler pass for the target to instanti...
MachineSchedStrategy - Interface to the scheduling algorithm used by ScheduleDAGMI.
void releaseBottomNode(SUnit *SU) override
Currently only scheduling top-down, so this method is empty.
bool operator<(int64_t V1, const APSInt &V2)
SUnit - Scheduling unit. This is a node in the scheduling DAG.