Go to the documentation of this file.
101 typedef std::map<TCEString, ProgramOperationPtr>
102 FUProgramOperationIndex;
104 FUProgramOperationIndex untriggered, triggered;
113 for (
int j = 0; j < ins.
moveCount(); j++) {
133 #ifdef DEBUG_MNGBUILDER
135 <<
"processing move: " << move.
toString() <<
" "
136 << sourceIsFU <<
" " << destIsFU;
139 if (!sourceIsFU && destIsFU) {
155 mngs->push_back(mng);
160 po->addInputNode(*moveNode);
167 }
else if (sourceIsFU && !destIsFU) {
171 "Encountered an FU read without a triggered operation.");
173 po->addOutputNode(*moveNode);
176 }
else if (sourceIsFU && destIsFU) {
180 "Encountered an FU read without a triggered operation.");
181 po->addOutputNode(*moveNode);
195 mngs->push_back(mng);
200 po->addInputNode(*moveNode);
206 }
else if (!sourceIsFU && !destIsFU) {
209 mngs->push_back(mng);
214 mngs->push_back(mng);
223 if (mng != NULL && mng->
nodeCount() > 0) {
224 mngs->push_back(mng);
228 for (FUProgramOperationIndex::const_iterator i = untriggered.begin();
229 i != untriggered.end(); ++i) {
231 if (po != NULL && po->inputMoveCount() > 0) {
234 "Encountered an untriggered&unfinished "
235 "ProgramOperation\nat the end of the BB. "
236 "BB-crossing operations are not\nsupported "
237 "at this point." + po->toString()));
241 #ifdef DEBUG_MNGBUILDER
252 for (MoveNodeGroupList::const_iterator i = mngs->begin();
253 i != mngs->end(); ++i, ++count) {
256 << count <<
": " << mng->
toString() << std::endl;
virtual bool isFUPort() const
virtual bool isTriggering() const
virtual TCEString name() const
std::string toString() const
ProgramOperationList programOperations_
Terminal & destination() const
virtual Operation & hintOperation() const
std::string toString() const
void setProgramOperationPtr(ProgramOperationPtr op)
in case this MNG contains strictly the nodes of a single operation, it can be set and queried with th...
static std::ostream & logStream()
std::shared_ptr< ProgramOperation > ProgramOperationPtr
virtual Operation & operation() const
void setSourceOperationPtr(ProgramOperationPtr po)
#define assert(condition)
MoveNodeGroupList * build(TTAProgram::BasicBlock &bb)
#define abortWithError(message)
void addDestinationOperationPtr(ProgramOperationPtr po)
virtual int instructionCount() const
virtual bool isOpcodeSetting() const
std::string toString() const
void addNode(MoveNode &node)
virtual const TTAMachine::FunctionUnit & functionUnit() const
std::string toString() const
virtual Instruction & instructionAtIndex(int index) const
Terminal & source() const
virtual const TTAMachine::Port & port() const
std::shared_ptr< Move > movePtr(int i) const
std::list< MoveNodeGroup * > MoveNodeGroupList