53#ifdef DEBUG_BUBBLEFISH_SCHEDULER
54 std::cerr <<
"\t\tBFRegCopyAfter splitting move: "
69 int lastRegisterIndex = rf.
size()-1;
83 for (
auto iEdge : iEdges) {
84 if (!iEdge->isRegisterOrRA() || iEdge->headPseudo()) {
89 if (iEdge->guardUse() &&
94 }
else if (iEdge->isFalseDep()) {
102 for (
auto oEdge : oEdges) {
103 if (!oEdge->isRegisterOrRA() || oEdge->tailPseudo()) {
135 tempRegName, bbn,
ii()!= 0);
137#ifdef DEBUG_BUBBLEFISH_SCHEDULER
138 std::cerr <<
" \t\t\tMoves after split: " <<
mn_.
toString() <<
" and " <<
141#ifdef DEBUG_BUBBLEFISH_SCHEDULER
164#ifdef DEBUG_BUBBLEFISH_SCHEDULER
165 std::cerr <<
"\t\tBFRegCopyAfter undoing split move: " <<
mn_.
toString()
std::set< const TTAMachine::RegisterFile *, TTAMachine::MachinePart::Comparator > possibleTempRegRFs(const MoveNode &mn, bool tempRegAfter, const TTAMachine::RegisterFile *forbiddenRF=nullptr)
DataDependenceGraph & ddg()
bool splitMove(BasicBlockNode &bbn)
void createAntidepsForReg(MoveNode &firstMove, MoveNode &lastMove, const TTAMachine::RegisterFile &rf, int index, TCEString regName, BasicBlockNode &bbn, bool loopScheduling)
virtual Node & headNode(const Edge &edge) const
virtual EdgeSet outEdges(const Node &node) const
virtual Node & tailNode(const Edge &edge) const
virtual EdgeSet inEdges(const Node &node) const
static std::string toString(const T &source)
std::string toString() const
TTAProgram::Move & move()
bool runPostChild(Reversible *preChild)
void undoAndRemovePostChildren()
virtual TCEString name() const
Port * firstReadPort() const
Port * firstWritePort() const
void setSource(Terminal *src)
Terminal & destination() const
void setDestination(Terminal *dst)
virtual Terminal * copy() const =0