Go to the documentation of this file.
52 for (DataDependenceGraph::NodeSet::iterator i = roots.begin();
84 __FILE__,__LINE__,
__func__,
"Creation of subgraph failed");
105 #ifdef WRITE_DOT_SNAPSHOTS
121 ddg_(&ddg), ddgOwned_(
false) {
125 #ifdef WRITE_DOT_SNAPSHOTS
162 for (DataDependenceGraph::NodeSet::iterator i = unscheduled.begin();
163 i != unscheduled.end();
206 for (DataDependenceGraph::NodeSet::iterator i = succ.begin();
207 i != succ.end(); ++i) {
217 #ifdef WRITE_DOT_SNAPSHOTS
250 bool allReady =
true;
266 for (
int outputIndex = 0;
304 (boost::format(
"Illegal move '%s'.") %
333 for (DataDependenceGraph::NodeSet::iterator i = unscheduledMoves.begin();
334 i != unscheduledMoves.end(); ++i) {
335 if ((*i)->move().isControlFlowMove() ==
false) {
bool predecessorsReady(MoveNode &node) const
DataDependenceGraph * ddg_
The data dependence graph built from the basic block.
bool isDestinationVariable() const
int scheduledNodeCount() const
TTAMachine::Machine * machine
the architecture definition of the estimated processor
bool isDestinationOperation() const
std::set< MoveNode *, typename MoveNode ::Comparator > NodeSet
Terminal & destination() const
void setCause(const Exception &cause)
void setMachine(const TTAMachine::Machine &machine)
bool isSourceConstant() const
void mightBeReady(MoveNode &node)
virtual void setCycleGrouping(bool flag)
virtual DataDependenceGraph & dataDependenceGraph()
ProgramOperation & sourceOperation() const
#define assert(condition)
DataDependenceGraph * createSubgraph(NodeSet &nodes, bool includeLoops=false)
virtual int operationIndex() const
bool isControlFlowMove() const
ReadyMoveNodeGroupList readyList_
The prioritized ready list.
void initializeReadylist()
Initializes ready list from nodes that are ready.
CriticalPathBBMoveNodeSelector(TTAProgram::BasicBlock &bb, const TTAMachine::Machine &machine)
virtual MoveNodeGroup candidates()
bool isSourceOperation() const
int inputMoveCount() const
virtual void notifyScheduled(MoveNode &node)
virtual void writeToDotFile(const TCEString &fileName) const
int outputMoveCount() const
void addNode(MoveNode &node)
bool isSourceVariable() const
ProgramOperation & destinationOperation(unsigned int index=0) const
TTAProgram::Move & move()
static std::string disassemble(const TTAProgram::Move &move)
find Finds info of the inner loops in the false
bool isReadyToBeScheduled(MoveNode &node) const
bool inSameOperation(const MoveNode &other) const
virtual DataDependenceGraph * build(ControlFlowGraph &cGraph, DataDependenceGraph::AntidependenceLevel antidependenceLevel, const TTAMachine::Machine &mach, const UniversalMachine *um=NULL, bool createMemAndFUDeps=true, bool createDeathInformation=true, llvm::AliasAnalysis *AA=NULL)
Terminal & source() const
virtual NodeSet rootNodes() const
useful utility functions
virtual bool isRA() const
MoveNode & outputMove(int index) const
NodeSet unscheduledMoves() const
virtual NodeSet successors(const Node &node, bool ignoreBackEdges=false, bool ignoreForwardEdges=false) const
MoveNode & inputMove(int index) const
virtual ~CriticalPathBBMoveNodeSelector()