Go to the documentation of this file.
36 #ifndef TTA_OPERATION_HH
37 #define TTA_OPERATION_HH
52 class RandomNumberGenerator;
133 virtual bool canSwap(
int id1,
int id2)
const;
134 virtual bool isCall()
const;
137 virtual void setCall(
bool setting);
140 virtual bool isPure()
const;
204 virtual bool isCall()
const;
211 virtual bool canSwap(
int id1,
int id2)
const;
virtual int numberOfInputs() const
virtual Operand & operand(int id) const
virtual TCEString affects(unsigned int i) const
virtual int affectedByCount() const
virtual bool writesMemory() const
virtual void setReadsMemory(bool setting)
virtual bool isPure() const
virtual void removeDag(int index)
virtual bool hasSideEffects() const
virtual TCEString description() const
virtual Operand & output(int index) const
virtual OperationBehavior & behavior() const
virtual void addOutput(Operand *operand)
virtual TCEString dagError(int index) const
static const char * OPRN_IN
Object state name for input operand.
Operation(const TCEString &name, OperationBehavior &behavior)
static NullOperation instance_
Unique instance of NullOperation.
virtual bool dependsOn(const Operation &op) const
static const char * OPRN_NAME
Object state name for name.
NullOperation()
Some gcc versions warn about private constructors.
virtual int numberOfInputs() const
virtual TCEString affectedBy(unsigned int i) const
virtual bool isClocked() const
static const char * OPRN_AFFECTS
Object state name for affects.
virtual bool canBeSimulated() const
NullOperation & operator=(const NullOperation &)
Assignment not allowed.
virtual int affectsCount() const
static NullOperation & instance()
virtual TCEString name() const
static const char * OPRN_AFFECTED_BY
Object state name for affected by.
virtual TCEString name() const
OperationPimpl * pimpl_
Private implementation in a separate source file.
virtual TCEString dagCode(int index) const
virtual bool canSwap(int id1, int id2) const
virtual bool canSwap(int id1, int id2) const
static const char * OPRN_CONTROL_FLOW
Object state name for control flow property.
virtual void setCall(bool setting)
virtual void setBehavior(OperationBehavior &behavior)
static const char * OPRN_DESCRIPTION
Object state name for description.
static const char * OPRN_TRAP
Object state name for trap.
static const char * OPRN_TRIGGER
Object state name for trigger semantics.
virtual bool areValid(const InputOperandVector &inputs, const OperationContext &context) const
virtual Operand & input(int id) const
virtual void setControlFlowOperation(bool setting)
TCEString emulationFunctionName() const
virtual bool isControlFlowOperation() const
static const char * OPRN_OPERATION
Object state name for operation.
virtual void setBehavior(OperationBehavior &behavior)
static const char * OPRN_CLOCKED
Object state name for clockedness.
static const char * OPRN_ISCALL
Object state name for call property.
virtual void loadState(const ObjectState *state)
virtual void addDag(const TCEString &code)
virtual void deleteState(OperationContext &context) const
static const char * OPRN_WRITES_MEMORY
Object state name for writes memory.
virtual bool readsMemory() const
virtual bool isBaseOffsetMemOperation() const
virtual bool canTrap() const
virtual ObjectState * saveState() const
static const char * OPRN_READS_MEMORY
Object state name for reads memory.
virtual Operand & output(int id) const
virtual bool isVectorOperation() const
virtual bool usesMemory() const
virtual void deleteState(OperationContext &context) const
static const char * OPRN_OUT
Object state name for output operand.
virtual int operandCount() const
static const char * OPRN_INPUTS
Object state name for inputs.
virtual TCEString description() const
virtual Operand & input(int index) const
static const char * OPRN_SIDE_EFFECTS
Object state name for side effects.
virtual void createState(OperationContext &context) const
virtual bool usesMemory() const
virtual Operand & operand(int id) const
std::vector< SimValue > InputOperandVector
Input operand type for areValid()
virtual void createState(OperationContext &context) const
virtual int dagCount() const
OperationBehavior::InputOperandVector InputOperandVector
virtual bool isClocked() const
virtual void addInput(Operand *operand)
virtual bool writesMemory() const
virtual void setDagCode(int index, const TCEString &code)
virtual bool canTrap() const
virtual bool hasSideEffects() const
virtual bool simulateTrigger(SimValue **, OperationContext &context) const
virtual OperationBehavior & behavior() const
virtual bool readsMemory() const
virtual void setWritesMemory(bool setting)
virtual bool isCall() const
virtual bool isCall() const
virtual int affectedByCount() const
virtual TCEString affectedBy(unsigned int i) const
virtual bool isBranch() const
virtual bool dependsOn(const Operation &op) const
virtual int numberOfOutputs() const
static const char * OPRN_ISBRANCH
Object state name for branch property.
static const char * OPRN_OUTPUTS
Object state name for outputs.
virtual int affectsCount() const
virtual bool isBranch() const
virtual void setBranch(bool setting)
virtual OperationDAG & dag(int index) const
virtual int numberOfOutputs() const
virtual TCEString affects(unsigned int i) const
virtual bool simulateTrigger(SimValue **, OperationContext &context) const
virtual bool isControlFlowOperation() const