33#ifndef TTA_BU_BB_SCHEDULER_HH
34#define TTA_BU_BB_SCHEDULER_HH
72 bool testOnly =
false);
107 bool bypassLate =
false);
110 MoveNode& move,
int cycle,
bool allowPredicationandRenaming);
149 std::vector<const TTAMachine::Bus*>,
void scheduleRRMove(MoveNode &moveNode)
virtual ~BUBasicBlockScheduler()
std::map< MoveNode *, std::vector< int >, MoveNode::Comparator > bypassDestinationsCycle_
void scheduleOperation(MoveNodeGroup &moves, BUMoveNodeSelector &selector)
bool scheduleOperandWrites(MoveNodeGroup &moves, int cycle)
bool tryToSwitchInputs(ProgramOperation &op)
bool scheduleOperand(MoveNode &, int cycle)
bool tryToOptimizeWaw(const MoveNode &moveNode)
virtual int handleLoopDDG(DataDependenceGraph &ddg, SimpleResourceManager &rm, const TTAMachine::Machine &targetMachine, int tripCount, SimpleResourceManager *prologRM=NULL, bool testOnly=false)
bool bypassNode(MoveNode &node, int &maxResultCycle)
virtual std::string longDescription() const
void undoBypass(MoveNode &node, MoveNode *single=NULL, int originalCycle=-1)
MoveNode * precedingTempMove(MoveNode ¤t)
void scheduleMove(MoveNode &move, int cycle, bool allowPredicationandRenaming)
void finalizeSchedule(MoveNode &node, BUMoveNodeSelector &selector)
std::set< MoveNode *, ltstr > OrderedSet
std::set< MoveNode * > droppedNodes_
OrderedSet findBypassDestinations(MoveNode &node)
std::map< MoveNode *, std::vector< const TTAMachine::Bus * >, MoveNode::Comparator > bypassDestinationsBus_
virtual int handleDDG(DataDependenceGraph &ddg, SimpleResourceManager &rm, const TTAMachine::Machine &targetMachine, int minCycle=0, bool testOnly=false)
virtual std::string shortDescription() const
void scheduleResultReadTempMoves(MoveNode &resultMove, MoveNode &resultRead, int lastUse)
void unscheduleAllNodes()
void scheduleInputOperandTempMoves(MoveNode &resultMove, MoveNode &resultRead)
std::map< MoveNode *, std::vector< MoveNode * >, MoveNode::Comparator > bypassDestinations_
int scheduleResultReads(MoveNodeGroup &moves, int cycle, bool bypass=false, bool bypassLate=false)
void scheduleRRTempMoves(MoveNode ®ToRegMove, MoveNode &firstMove, int lastUse)
virtual DataDependenceGraphBuilder & ddgBuilder()
bool operator()(const MoveNode *m1, const MoveNode *m2) const