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