Go to the documentation of this file.
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_) {
const Operation & operation() const
virtual bool isFUPort() const
virtual bool isTriggering() const
std::string toString() const
std::set< MoveNode *, typename MoveNode ::Comparator > NodeSet
bool isUnconditional() const
Terminal & destination() const
static MoveNode * getSisterTrigger(const MoveNode &mn, const TTAMachine::Machine &mach)
virtual TCEString name() const
const TTAMachine::Machine & targetMachine() const
bool isTrigger(const TTAMachine::Unit &unit, MoveNode &mn)
NodeSet regDepSiblings(const MoveNode &mn) const
virtual FUPort * port(int operand) const
virtual int operationIndex() const
virtual bool operator()()
virtual void undoOnlyMe()
DataDependenceGraph & ddg()
virtual bool hasOperation(const std::string &name) const
const TTAMachine::FunctionUnit * scheduledFU() const
virtual const TTAMachine::FunctionUnit & functionUnit() const
ProgramOperation & destinationOperation(unsigned int index=0) const
TTAProgram::Move & move()
BF2ScheduleFront * currentFront()
bool runPreChild(Reversible *preChild)
DataDependenceGraph::NodeSet illegalOperandShares_
virtual const TTAMachine::Port & port() const
virtual HWOperation * operation(const std::string &name) const
virtual bool removedNode()
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