LLVM API Documentation

llvm::ScheduleDAG Class Reference

#include <ScheduleDAG.h>

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

List of all members.

Public Member Functions

 ScheduleDAG (MachineFunction &mf)
virtual ~ScheduleDAG ()
void viewGraph ()
void Run (SelectionDAG *DAG, MachineBasicBlock *MBB, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End)
virtual void BuildSchedGraph ()=0
virtual void ComputeLatency (SUnit *SU)=0
virtual MachineBasicBlock * EmitSchedule ()=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

SelectionDAG * DAG
MachineBasicBlock * BB
MachineBasicBlock::iterator Begin
MachineBasicBlock::iterator End
const TargetMachine & TM
const TargetInstrInfo * TII
const TargetRegisterInfo * TRI
TargetLowering * TLI
MachineFunction & MF
MachineRegisterInfo & MRI
MachineConstantPool * ConstPool
std::vector< SUnit * > Sequence
std::vector< SUnit > SUnits

Protected Member Functions

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


Detailed Description

Definition at line 417 of file ScheduleDAG.h.


Constructor & Destructor Documentation

ScheduleDAG::ScheduleDAG ( MachineFunction &  mf  )  [explicit]

Definition at line 25 of file ScheduleDAG.cpp.

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 ( SelectionDAG *  dag,
MachineBasicBlock *  bb,
MachineBasicBlock::iterator  begin,
MachineBasicBlock::iterator  end 
)

Run - perform scheduling.

Definition at line 49 of file ScheduleDAG.cpp.

References BB, Begin, DAG, DEBUG, DOUT, dumpSchedule(), End, Schedule(), Sequence, and SUnits.

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]

EmitNoop - Emit a noop instruction.

Definition at line 35 of file ScheduleDAGEmit.cpp.

References BB, End, llvm::TargetInstrInfo::insertNoop(), and TII.

Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule(), and llvm::ScheduleDAGInstrs::EmitSchedule().

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 481 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 316 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::EmitPhysRegCopy ( 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 497 of file ScheduleDAG.h.

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


Member Data Documentation

Definition at line 426 of file ScheduleDAG.h.

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

Definition at line 428 of file ScheduleDAG.h.

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

Definition at line 429 of file ScheduleDAG.h.


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