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