LLVM API Documentation

llvm::ScheduleDAG Class Reference

#include <ScheduleDAG.h>

Inheritance diagram for llvm::ScheduleDAG:

Inheritance graph
[legend]
Collaboration diagram for llvm::ScheduleDAG:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ScheduleDAG (SelectionDAG *dag, MachineBasicBlock *bb, const TargetMachine &tm)
virtual ~ScheduleDAG ()
void viewGraph ()
void Run ()
virtual void BuildSchedGraph ()=0
virtual void ComputeLatency (SUnit *SU)=0
virtual MachineBasicBlockEmitSchedule ()=0
void dumpSchedule () const
 dump - dump the schedule.
virtual void Schedule ()=0
virtual void dumpNode (const SUnit *SU) const =0
virtual std::string getGraphNodeLabel (const SUnit *SU) const =0
virtual void addCustomGraphFeatures (GraphWriter< ScheduleDAG * > &) const
void VerifySchedule (bool isBottomUp)

Public Attributes

SelectionDAGDAG
MachineBasicBlockBB
const TargetMachineTM
const TargetInstrInfoTII
const TargetRegisterInfoTRI
TargetLoweringTLI
MachineFunctionMF
MachineRegisterInfoMRI
MachineConstantPoolConstPool
std::vector< SUnit * > Sequence
std::vector< SUnitSUnits

Protected Member Functions

void EmitNoop ()
void AddMemOperand (MachineInstr *MI, const MachineMemOperand &MO)
void EmitCrossRCCopy (SUnit *SU, DenseMap< SUnit *, unsigned > &VRBaseMap)
virtual bool ForceUnitLatencies () const


Detailed Description

Definition at line 416 of file ScheduleDAG.h.


Constructor & Destructor Documentation

ScheduleDAG::ScheduleDAG ( SelectionDAG dag,
MachineBasicBlock bb,
const TargetMachine tm 
)

ScheduleDAG::~ScheduleDAG (  )  [virtual]

Definition at line 34 of file ScheduleDAG.cpp.


Member Function Documentation

void ScheduleDAG::viewGraph (  ) 

viewGraph - Pop up a GraphViz/gv window with the ScheduleDAG rendered using 'dot'.

viewGraph - Pop up a ghostview window with the reachable parts of the DAG rendered using 'dot'.

Definition at line 83 of file ScheduleDAGPrinter.cpp.

References BB, llvm::cerr(), llvm::MachineBasicBlock::getBasicBlock(), llvm::MachineFunction::getFunction(), llvm::Value::getName(), MF, and llvm::ViewGraph().

void ScheduleDAG::Run (  ) 

Run - perform scheduling.

Definition at line 49 of file ScheduleDAG.cpp.

References DEBUG, DOUT, dumpSchedule(), and Schedule().

virtual void llvm::ScheduleDAG::BuildSchedGraph (  )  [pure virtual]

BuildSchedGraph - Build SUnits and set up their Preds and Succs to form the scheduling dependency graph.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

virtual void llvm::ScheduleDAG::ComputeLatency ( SUnit SU  )  [pure virtual]

ComputeLatency - Compute node latency.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

void ScheduleDAG::EmitNoop (  )  [protected]

virtual MachineBasicBlock* llvm::ScheduleDAG::EmitSchedule (  )  [pure virtual]

void ScheduleDAG::dumpSchedule (  )  const

dump - dump the schedule.

Definition at line 37 of file ScheduleDAG.cpp.

References llvm::cerr(), and Sequence.

Referenced by Run().

virtual void llvm::ScheduleDAG::Schedule (  )  [pure virtual]

Schedule - Order nodes according to selected style, filling in the Sequence member.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

Referenced by Run().

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

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

getGraphNodeLabel - Return a label for an SUnit node in a visualization of the ScheduleDAG.

Implemented in llvm::ScheduleDAGInstrs, and llvm::ScheduleDAGSDNodes.

virtual void llvm::ScheduleDAG::addCustomGraphFeatures ( GraphWriter< ScheduleDAG * > &   )  const [inline, virtual]

addCustomGraphFeatures - Add custom features for a visualization of the ScheduleDAG.

Definition at line 477 of file ScheduleDAG.h.

Referenced by llvm::DOTGraphTraits< ScheduleDAG * >::addCustomGraphFeatures().

void ScheduleDAG::VerifySchedule ( bool  isBottomUp  ) 

VerifySchedule - Verify that all SUnits were scheduled and that their state is consistent.

VerifySchedule - Verify that all SUnits were scheduled and that their state is consistent.

Definition at line 304 of file ScheduleDAG.cpp.

References llvm::cerr(), llvm::SUnit::getHeight(), isBottomUp, llvm::SUnit::isScheduled, llvm::SUnit::NumPreds, llvm::SUnit::NumPredsLeft, llvm::SUnit::NumSuccs, llvm::SUnit::NumSuccsLeft, and SUnits.

void ScheduleDAG::AddMemOperand ( MachineInstr MI,
const MachineMemOperand MO 
) [protected]

Definition at line 31 of file ScheduleDAGEmit.cpp.

References llvm::MachineInstr::addMemOperand(), and MF.

Referenced by llvm::ScheduleDAGSDNodes::EmitNode().

void ScheduleDAG::EmitCrossRCCopy ( SUnit SU,
DenseMap< SUnit *, unsigned > &  VRBaseMap 
) [protected]

virtual bool llvm::ScheduleDAG::ForceUnitLatencies (  )  const [inline, protected, virtual]

ForceUnitLatencies - Return true if all scheduling edges should be given a latency value of one. The default is to return false; schedulers may override this as needed.

Definition at line 493 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::BuildSchedGraph().


Member Data Documentation

Definition at line 423 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGSDNodes::EmitNode(), and ScheduleDAG().

Definition at line 425 of file ScheduleDAG.h.

Referenced by EmitCrossRCCopy(), and llvm::ScheduleDAGSDNodes::EmitNode().

Definition at line 426 of file ScheduleDAG.h.

Referenced by ScheduleDAG().


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



This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.