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