55#ifdef DEBUG_BUBBLEFISH_SCHEDULER
56 std::cerr <<
"\t\tShareOperands operator() called for:"
62#ifdef DEBUG_BUBBLEFISH_SCHEDULER
63 std::cerr <<
"\t\t\tIllegal operand share: " <<
mn_.
toString()
69 bool didSomething =
false;
75 for (
auto i : siblings) {
76 if (!i->isDestinationOperation()) {
80 if (i->isScheduled()) {
87 if (i->cycle() < ddglc - 5) {
101 if (sharedPort != &dt.
port()) {
108 if (forcedFU != NULL) {
109 if (&fu == forcedFU) {
113 if (trigger == &
mn_) {
DataDependenceGraph::NodeSet illegalOperandShares_
bool isTrigger(const TTAMachine::Unit &unit, MoveNode &mn)
BF2ScheduleFront * currentFront()
static MoveNode * getSisterTrigger(const MoveNode &mn, const TTAMachine::Machine &mach)
DataDependenceGraph & ddg()
const TTAMachine::Machine & targetMachine() const
virtual bool removedNode()
virtual bool operator()()
virtual void undoOnlyMe()
NodeSet regDepSiblings(const MoveNode &mn) const
int latestCycle(const MoveNode &moveNode, unsigned int ii=UINT_MAX, bool ignoreRegAntideps=false, bool ignoreUnscheduledSuccessors=true, bool ignoreGuards=false, bool ignoreFUDeps=false, bool ignoreSameOperationEdges=false) const
std::set< GraphNode *, typename GraphNode::Comparator > NodeSet
std::string toString() const
TTAProgram::Move & move()
ProgramOperation & destinationOperation(unsigned int index=0) const
virtual TCEString name() const
const Operation & operation() const
const TTAMachine::FunctionUnit * scheduledFU() const
bool runPreChild(Reversible *preChild)
virtual HWOperation * operation(const std::string &name) const
virtual bool hasOperation(const std::string &name) const
virtual FUPort * port(int operand) const
bool isUnconditional() const
Terminal & destination() const
virtual bool isTriggering() const
virtual const TTAMachine::FunctionUnit & functionUnit() const
virtual int operationIndex() const
virtual const TTAMachine::Port & port() const
virtual bool isFUPort() const