Go to the documentation of this file.
34 #ifndef TCE_PROGRAM_OPERATION_HH
35 #define TCE_PROGRAM_OPERATION_HH
74 const llvm::MachineInstr* instr=NULL);
142 unsigned int poId()
const;
const Operation & operation() const
std::vector< MoveNode * > MoveVector
int outputIndexFromGuardOfMove(const MoveNode &node) const
bool operator()(const ProgramOperationPtr po1, const ProgramOperationPtr po2) const
bool operator==(const ProgramOperation &po)
void addGuardOutputNode(MoveNode &node)
void removeInputNode(MoveNode &node)
bool hasOutputNode(int out) const
std::shared_ptr< ProgramOperation > ProgramOperationPtr
MoveNodeSet & outputNode(int out) const
bool isAnyOutputAssigned()
const TTAMachine::FunctionUnit * fuFromOutMove(const MoveNode &outputNode) const
void switchInputs(int idx1=1, int idx2=2)
const llvm::MachineInstr * machineInstr() const
void addNode(MoveNode &node)
std::map< int, MoveNodeSet * > outputMoves_
MoveNode & opcodeSettingNode()
int outputIndexFromGuard(const TTAMachine::PortGuard &pg) const
bool isLegalFU(const TTAMachine::FunctionUnit &fu) const
MoveNode * triggeringMove() const
std::shared_ptr< ProgramOperation > ProgramOperationPtr
void addOutputNode(MoveNode &node, int outputIndex)
static unsigned int idCounter
MoveVector allOutputMoves_
std::map< int, MoveNodeSet * > inputMoves_
const llvm::MachineInstr * mInstr_
ProgramOperation()
TODO: this better go, just for testing with empty operation...
const TTAMachine::HWOperation * hwopFromOutMove(const MoveNode &outputNode) const
bool hasConstantOperand() const
MoveVector allInputMoves_
void removeGuardOutputNode(MoveNode &node)
int inputMoveCount() const
MoveNode * findTriggerFromUnit(const TTAMachine::Unit &unit) const
const TTAMachine::FunctionUnit * scheduledFU() const
int outputMoveCount() const
void addInputNode(MoveNode &node)
std::string toString() const
MoveNode & moveNode(const TTAProgram::Move &move) const
void setOperation(const Operation &op)
MoveNodeSet & inputNode(int in) const
bool hasInputNode(int in) const
bool areOutputsAssigned()
bool hasMoveNodeForMove(const TTAProgram::Move &move) const
unsigned int poId() const
bool operator()(const ProgramOperation *po1, const ProgramOperation *po2) const
ProgramOperation & operator=(const ProgramOperation &)
const Operation * operation_
MoveNode & outputMove(int index) const
int outputIndexOfMove(const MoveNode &mn) const
bool isAnyInputAssigned()
void removeOutputNode(MoveNode &node, int outputIndex)
MoveNode & inputMove(int index) const