Go to the documentation of this file.
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*>,
virtual std::string longDescription() const
BUBasicBlockScheduler(InterPassData &data, SoftwareBypasser *bypasser=NULL, RegisterRenamer *registerRenamer=NULL)
OrderedSet findBypassDestinations(MoveNode &node)
void scheduleResultReadTempMoves(MoveNode &resultMove, MoveNode &resultRead, int lastUse)
void undoBypass(MoveNode &node, MoveNode *single=NULL, int originalCycle=-1)
void scheduleMove(MoveNode &move, int cycle, bool allowPredicationandRenaming)
std::set< MoveNode *, ltstr > OrderedSet
virtual DataDependenceGraphBuilder & ddgBuilder()
bool tryToSwitchInputs(ProgramOperation &op)
virtual ~BUBasicBlockScheduler()
bool bypassNode(MoveNode &node, int &maxResultCycle)
void unscheduleAllNodes()
void scheduleRRTempMoves(MoveNode ®ToRegMove, MoveNode &firstMove, int lastUse)
bool operator()(const MoveNode *m1, const MoveNode *m2) const
bool tryToOptimizeWaw(const MoveNode &moveNode)
virtual int handleDDG(DataDependenceGraph &ddg, SimpleResourceManager &rm, const TTAMachine::Machine &targetMachine, int minCycle=0, bool testOnly=false)
void finalizeSchedule(MoveNode &node, BUMoveNodeSelector &selector)
virtual std::string shortDescription() const
std::map< MoveNode *, std::vector< const TTAMachine::Bus * >, MoveNode::Comparator > bypassDestinationsBus_
virtual int handleLoopDDG(DataDependenceGraph &ddg, SimpleResourceManager &rm, const TTAMachine::Machine &targetMachine, int tripCount, SimpleResourceManager *prologRM=NULL, bool testOnly=false)
bool scheduleOperand(MoveNode &, int cycle)
void scheduleInputOperandTempMoves(MoveNode &resultMove, MoveNode &resultRead)
std::map< MoveNode *, std::vector< MoveNode * >, MoveNode::Comparator > bypassDestinations_
std::set< MoveNode * > droppedNodes_
void scheduleRRMove(MoveNode &moveNode)
bool scheduleOperandWrites(MoveNodeGroup &moves, int cycle)
void scheduleOperation(MoveNodeGroup &moves, BUMoveNodeSelector &selector)
std::map< MoveNode *, std::vector< int >, MoveNode::Comparator > bypassDestinationsCycle_
MoveNode * precedingTempMove(MoveNode ¤t)
int scheduleResultReads(MoveNodeGroup &moves, int cycle, bool bypass=false, bool bypassLate=false)