Go to the documentation of this file.
36 #ifndef BF2_SCHEDULE_FRONT_HH
37 #define BF2_SCHEDULE_FRONT_HH
93 bool allowEarlyBypass =
true,
94 bool allowLateBypass =
true,
95 bool allowEarlySharing =
true);
MoveNodeMap bypassSources_
bool scheduleFrontFromMove(MoveNode &mn)
std::map< MoveNode *, int, MoveNode::Comparator > PathLengthCache
BF2Scheduler::MoveNodeMap MoveNodeMap
DataDependenceGraph::NodeSet illegalBypassSources_
std::set< MoveNode *, typename MoveNode ::Comparator > NodeSet
BF2Scheduler::SchedulingLimits getPreferredLimits(const MoveNode &mn)
void undidBypass(MoveNode &, MoveNode &dst)
std::map< MoveNode *, MoveNode *, MoveNode::Comparator > MoveNodeMap
void undoOnlyMe() override
DataDependenceGraph::NodeSet schedulingFront_
void appendBypassSources(MoveNodeMap &map)
PathLengthCache pathLengthCache_
int latestScheduledOfFrontCycle()
void requeueOtherMovesOfSameOp(MoveNode &mn)
void bypassed(MoveNode &src, MoveNode &dst)
void mightBeReady(MoveNode &n) override
bool tryRevertEarlierBypass(MoveNode &mn)
int scheduleMove(MoveNode &move, BF2Scheduler::SchedulingLimits limits, bool allowEarlyBypass=true, bool allowLateBypass=true, bool allowEarlySharing=true)
DataDependenceGraph::NodeSet nodesToNotify_
virtual bool operator()() override
MoveNode * findInducingBypassSource(MoveNode &mn)
void deletingNode(MoveNode *deletedNode)
bool tryToScheduleMoveOuter(MoveNode &mn, int &latestCycle)
static int prefResultCycle(const MoveNode &mn)
MoveNode * findInducingBypassSourceFromOperation(ProgramOperation &po, const DataDependenceGraph::NodeSet &processedNodes, DataDependenceGraph::NodeSet &queue)
BF2ScheduleFront(BF2Scheduler &sched, MoveNode &mn, int lc)
DataDependenceGraph::NodeSet allNodesOfSameOperation(MoveNode &mn)
void printFront(const TCEString &prefix)
DataDependenceGraph::NodeSet illegalOperandShares_
void clearSchedulingFront()
MoveNode * getMoveNodeFromFrontBU()