Go to the documentation of this file.
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()
Port * firstReadPort() const
void createAntidepsForReg(MoveNode &firstMove, MoveNode &lastMove, const TTAMachine::RegisterFile &rf, int index, TCEString regName, BasicBlockNode &bbn, bool loopScheduling)
virtual Node & tailNode(const Edge &edge) const
virtual TCEString name() const
std::string toString() const
virtual Node & headNode(const Edge &edge) const
std::set< const TTAMachine::RegisterFile *, TTAMachine::MachinePart::Comparator > possibleTempRegRFs(const MoveNode &mn, bool tempRegAfter, const TTAMachine::RegisterFile *forbiddenRF=nullptr)
Terminal & destination() const
static std::string toString(const T &source)
void setDestination(Terminal *dst)
Port * firstWritePort() const
DataDependenceGraph & ddg()
virtual EdgeSet inEdges(const Node &node) const
virtual EdgeSet outEdges(const Node &node) const
TTAProgram::Move & move()
void undoAndRemovePostChildren()
virtual Terminal * copy() const =0
bool splitMove(BasicBlockNode &bbn)
bool runPostChild(Reversible *preChild)
void setSource(Terminal *src)