Go to the documentation of this file.
40 #ifndef TTA_MOVE_NODE_HH
41 #define TTA_MOVE_NODE_HH
68 explicit MoveNode(std::shared_ptr<TTAProgram::Move> newMove);
69 explicit MoveNode(std::shared_ptr<TTAProgram::Immediate> imm);
110 std::shared_ptr<TTAProgram::Move>
movePtr();
111 std::shared_ptr<const TTAProgram::Move>
movePtr()
const;
113 std::shared_ptr<const TTAProgram::Immediate>
immediatePtr()
const;
142 inline bool isMove()
const;
155 const std::shared_ptr<TTAProgram::Move>
move_;
bool isLastUnscheduledMoveOfDstOp() const
std::string dotString() const
bool placed_
True when the node placed (is given a cycle in program).
bool isDestinationVariable() const
std::string toString() const
ProgramOperationPtr guardOperationPtr() const
bool finalized_
The movenode cannot be unscheduled anymore, fixed in place.
bool isDestinationOperation() const
std::shared_ptr< TTAProgram::Move > movePtr()
void clearDestinationOperation()
bool isSourceReg(const std::string ®) const
bool isSourceConstant() const
std::shared_ptr< ProgramOperation > ProgramOperationPtr
bool isSourceImmediateRegister() const
MoveNode()
Node can be entry node.
MoveNode & operator=(const MoveNode &)
Assignment forbidden.
ProgramOperationPtr srcOp_
void setSourceOperationPtr(ProgramOperationPtr po)
ProgramOperation & sourceOperation() const
bool isGuardOperation() const
int earliestResultReadCycle() const
void addDestinationOperationPtr(ProgramOperationPtr po)
ProgramOperationPtr guardOp_
int latestTriggerWriteCycle() const
bool isSourceOperation() const
void unsetSourceOperation()
int cycle_
Cycle in which the node is placed. Each cycle uniquely identifies an instruction slot within the curr...
void unsetGuardOperation()
unsigned int destinationOperationCount() const
std::vector< ProgramOperationPtr > dstOps_
std::shared_ptr< TTAProgram::Immediate > immediatePtr()
const std::shared_ptr< TTAProgram::Move > move_
Pointer to Move this node represents, Node itself do not change move.
bool isSourceVariable() const
ProgramOperation & destinationOperation(unsigned int index=0) const
ProgramOperationPtr destinationOperationPtr(unsigned int index=0) const
TTAProgram::Move & move()
void setCycle(const int newcycle)
bool isInFrontier() const
void removeDestinationOperation(const ProgramOperation *po)
bool isRegisterMove() const
bool inSameOperation(const MoveNode &other) const
void setGuardOperationPtr(ProgramOperationPtr po)
bool isOperationMove() const
ProgramOperationPtr sourceOperationPtr() const
void setIsInFrontier(bool inFrontier=true)
TTAProgram::Immediate & immediate()
const std::shared_ptr< TTAProgram::Immediate > immediate_
Pointer to Immediate this node represents, Node itself do not change move.
bool isInFrontier_
This is in scheduling frontier(used in Bubblefish scheduler)
ProgramOperation & guardOperation() const