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