15 #ifndef SCHEDULEDAGSDNODES_H
16 #define SCHEDULEDAGSDNODES_H
56 if (isa<ConstantSDNode>(Node))
return true;
57 if (isa<ConstantFPSDNode>(Node))
return true;
58 if (isa<RegisterSDNode>(Node))
return true;
59 if (isa<RegisterMaskSDNode>(Node))
return true;
60 if (isa<GlobalAddressSDNode>(Node))
return true;
61 if (isa<BasicBlockSDNode>(Node))
return true;
62 if (isa<FrameIndexSDNode>(Node))
return true;
63 if (isa<ConstantPoolSDNode>(Node))
return true;
64 if (isa<TargetIndexSDNode>(Node))
return true;
65 if (isa<JumpTableSDNode>(Node))
return true;
66 if (isa<ExternalSymbolSDNode>(Node))
return true;
67 if (isa<BlockAddressSDNode>(Node))
return true;
69 isa<MDNodeSDNode>(Node))
return true;
103 unsigned OpIdx,
SDep& dep)
const;
137 unsigned NodeNumDefs;
145 assert(
IsValid() &&
"bad iterator");
159 void InitNodeNumDefs();
171 void ClusterNeighboringLoads(
SDNode *Node);
177 void BuildSchedUnits();
178 void AddSchedEdges();
const SDNode * GetNode() const
virtual ~ScheduleDAGSDNodes()
virtual void computeOperandLatency(SDNode *Def, SDNode *Use, unsigned OpIdx, SDep &dep) const
virtual void getCustomGraphFeatures(GraphWriter< ScheduleDAG * > &GW) const
unsigned getOpcode() const
EntryToken - This is the marker used to indicate the start of a region.
virtual std::string getGraphNodeLabel(const SUnit *SU) const
void InitNumRegDefsLeft(SUnit *SU)
virtual void dumpNode(const SUnit *SU) const
void dumpSchedule() const
ScheduleDAGSDNodes(MachineFunction &mf)
void InitVRegCycleFlag(SUnit *SU)
std::vector< SUnit * > Sequence
The schedule. Null SUnit*'s represent noop instructions.
SUnit * newSUnit(SDNode *N)
const InstrItineraryData * InstrItins
virtual void computeLatency(SUnit *SU)
static bool isPassiveNode(SDNode *Node)
virtual std::string getDAGName() const
Return the basic block label.
RegDefIter(const SUnit *SU, const ScheduleDAGSDNodes *SD)
void BuildSchedGraph(AliasAnalysis *AA)
void Run(SelectionDAG *dag, MachineBasicBlock *bb)
virtual MachineBasicBlock * EmitSchedule(MachineBasicBlock::iterator &InsertPos)
virtual bool forceUnitLatencies() const
virtual void Schedule()=0
SUnit - Scheduling unit. This is a node in the scheduling DAG.
void VerifyScheduledSequence(bool isBottomUp)