OpenASIP 2.2
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
Operation Class Reference

#include <Operation.hh>

Inheritance diagram for Operation:
Inheritance graph
Collaboration diagram for Operation:
Collaboration graph

Public Types

typedef OperationBehavior::InputOperandVector InputOperandVector
 

Public Member Functions

 Operation (const TCEString &name, OperationBehavior &behavior)
 
virtual ~Operation ()
 
virtual TCEString name () const
 
virtual TCEString description () const
 
virtual void addDag (const TCEString &code)
 
virtual void removeDag (int index)
 
virtual int dagCount () const
 
virtual OperationDAGdag (int index) const
 
virtual TCEString dagCode (int index) const
 
virtual void setDagCode (int index, const TCEString &code)
 
virtual TCEString dagError (int index) const
 
virtual int numberOfInputs () const
 
virtual int numberOfOutputs () const
 
virtual int operandCount () const
 
virtual bool isVectorOperation () const
 
virtual bool usesMemory () const
 
virtual bool readsMemory () const
 
virtual bool writesMemory () const
 
virtual bool canTrap () const
 
virtual bool hasSideEffects () const
 
virtual bool isClocked () const
 
virtual bool isControlFlowOperation () const
 
virtual bool dependsOn (const Operation &op) const
 
virtual void setReadsMemory (bool setting)
 
virtual void setWritesMemory (bool setting)
 
virtual int affectsCount () const
 
virtual int affectedByCount () const
 
virtual TCEString affects (unsigned int i) const
 
virtual TCEString affectedBy (unsigned int i) const
 
virtual bool canSwap (int id1, int id2) const
 
virtual bool isCall () const
 
virtual bool isBranch () const
 
virtual bool isBaseOffsetMemOperation () const
 
virtual void setCall (bool setting)
 
virtual void setBranch (bool setting)
 
virtual void setControlFlowOperation (bool setting)
 
virtual bool isPure () const
 
virtual Operandinput (int index) const
 
virtual void addInput (Operand *operand)
 
virtual Operandoutput (int index) const
 
virtual void addOutput (Operand *operand)
 
virtual Operandoperand (int id) const
 
virtual void setBehavior (OperationBehavior &behavior)
 
virtual OperationBehaviorbehavior () const
 
virtual void loadState (const ObjectState *state)
 
virtual ObjectStatesaveState () const
 
virtual bool simulateTrigger (SimValue **, OperationContext &context) const
 
virtual bool areValid (const InputOperandVector &inputs, const OperationContext &context) const
 
virtual void createState (OperationContext &context) const
 
virtual void deleteState (OperationContext &context) const
 
virtual bool canBeSimulated () const
 
bool isNull () const
 
TCEString emulationFunctionName () const
 
OperationPimplimpl ()
 
- Public Member Functions inherited from Serializable
virtual ~Serializable ()
 

Static Public Attributes

static const char * OPRN_OPERATION = "operation"
 Object state name for operation.
 
static const char * OPRN_NAME = "name"
 Object state name for name.
 
static const char * OPRN_DESCRIPTION = "description"
 Object state name for description.
 
static const char * OPRN_INPUTS = "inputs"
 Object state name for inputs.
 
static const char * OPRN_OUTPUTS = "outputs"
 Object state name for outputs.
 
static const char * OPRN_TRAP = "trap"
 Object state name for trap.
 
static const char * OPRN_SIDE_EFFECTS = "side-effects"
 Object state name for side effects.
 
static const char * OPRN_CLOCKED = "clocked"
 Object state name for clockedness.
 
static const char * OPRN_CONTROL_FLOW = "control-flow"
 Object state name for control flow property.
 
static const char * OPRN_READS_MEMORY = "reads-memory"
 Object state name for reads memory.
 
static const char * OPRN_WRITES_MEMORY = "writes-memory"
 Object state name for writes memory.
 
static const char * OPRN_AFFECTS = "affects"
 Object state name for affects.
 
static const char * OPRN_AFFECTED_BY = "affected-by"
 Object state name for affected by.
 
static const char * OPRN_IN = "in"
 Object state name for input operand.
 
static const char * OPRN_OUT = "out"
 Object state name for output operand.
 
static const char * OPRN_TRIGGER = "trigger-semantics"
 Object state name for trigger semantics.
 
static const char * OPRN_ISCALL = "is-call"
 Object state name for call property.
 
static const char * OPRN_ISBRANCH = "is-branch"
 Object state name for branch property.
 

Private Attributes

OperationPimplpimpl_
 Private implementation in a separate source file.
 

Detailed Description

Class that models the static properties and the behavior of operations of the target processor.

Definition at line 59 of file Operation.hh.

Member Typedef Documentation

◆ InputOperandVector

Definition at line 62 of file Operation.hh.

Constructor & Destructor Documentation

◆ Operation()

Operation::Operation ( const TCEString name,
OperationBehavior behavior 
)

Constructor.

Parameters
nameThe name of the Operation.
behaviorThe behavior of the Operation.

Definition at line 73 of file Operation.cc.

73 :
75}
OperationPimpl * pimpl_
Private implementation in a separate source file.
Definition Operation.hh:173
virtual TCEString name() const
Definition Operation.cc:93
virtual OperationBehavior & behavior() const
Definition Operation.cc:388

◆ ~Operation()

Operation::~Operation ( )
virtual

Destructor.

Operands are destroyed.

Definition at line 82 of file Operation.cc.

82 {
83 delete pimpl_;
84 pimpl_ = NULL;
85}

References pimpl_.

Member Function Documentation

◆ addDag()

void Operation::addDag ( const TCEString code)
virtual

Creates new DAG and adds it's code for operation.

Parameters
codeSource code written in DAG language.

Definition at line 113 of file Operation.cc.

113 {
114 pimpl_->addDag(code);
115}
void addDag(const TCEString &code)

References OperationPimpl::addDag(), and pimpl_.

Referenced by OperationDAGDialog::doSaveDAG().

Here is the call graph for this function:

◆ addInput()

void Operation::addInput ( Operand operand)
virtual

Definition at line 508 of file Operation.cc.

508 {
510}
void addInput(Operand *operand)
virtual Operand & operand(int id) const
Definition Operation.cc:541

References OperationPimpl::addInput(), operand(), and pimpl_.

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ addOutput()

void Operation::addOutput ( Operand operand)
virtual

Definition at line 513 of file Operation.cc.

513 {
515}
void addOutput(Operand *operand)

References OperationPimpl::addOutput(), operand(), and pimpl_.

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ affectedBy()

TCEString Operation::affectedBy ( unsigned int  i) const
virtual

Returns the name of the operation that is affected by this operation.

Note
This is from the point of view of the single operation's description. It doesn't know the affects-properties globally of all possible operations!
Parameters
iThe index of the operation.
Exceptions
OutOfRangeIf index is illegal.
Returns
The name of the operation.

Reimplemented in NullOperation.

Definition at line 447 of file Operation.cc.

447 {
448 return pimpl_->affectedBy(i);
449}
TCEString affectedBy(unsigned int i) const

References OperationPimpl::affectedBy(), and pimpl_.

Referenced by OSEdInfoView::operationPropertyView().

Here is the call graph for this function:

◆ affectedByCount()

int Operation::affectedByCount ( ) const
virtual

Returns the number of operations affected by this operation.

Note
This is from the point of view of the single operation's description. It doesn't know the affects-properties globally of all possible operations!
Returns
The number of operations affected by this operation.

Reimplemented in NullOperation.

Definition at line 416 of file Operation.cc.

416 {
417 return pimpl_->affectedByCount();
418}
int affectedByCount() const

References OperationPimpl::affectedByCount(), and pimpl_.

Referenced by isPure(), OSEdInfoView::operationPropertyView(), DataDependenceGraphBuilder::processDestination(), OperationPoolPimpl::sharesState(), and writeCustomOpMacro().

Here is the call graph for this function:

◆ affects()

TCEString Operation::affects ( unsigned int  i) const
virtual

Returns the name of the operation this operation affects.

Note
This is from the point of view of the single operation's description. It doesn't know the affects-properties globally of all possible operations!
Parameters
iThe index of the operation.
Returns
The name of the operation.

Reimplemented in NullOperation.

Definition at line 431 of file Operation.cc.

431 {
432 return pimpl_->affects(i);
433}
TCEString affects(unsigned int i) const

References OperationPimpl::affects(), and pimpl_.

Referenced by OSEdInfoView::operationPropertyView().

Here is the call graph for this function:

◆ affectsCount()

int Operation::affectsCount ( ) const
virtual

Returns the number of operations that affect this operation.

Note
This is from the point of view of the single operation's description. It doesn't know the affectedBy-properties globally of all possible operations!
Returns
The number of operations that affect this operation.

Reimplemented in NullOperation.

Definition at line 402 of file Operation.cc.

402 {
403 return pimpl_->affectsCount();
404}
int affectsCount() const

References OperationPimpl::affectsCount(), and pimpl_.

Referenced by CopyingDelaySlotFiller::allowedToSpeculate(), BFOptimization::canBeSpeculated(), isPure(), OSEdInfoView::operationPropertyView(), DataDependenceGraphBuilder::processDestination(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), OperationPoolPimpl::sharesState(), and writeCustomOpMacro().

Here is the call graph for this function:

◆ areValid()

bool Operation::areValid ( const InputOperandVector inputs,
const OperationContext context 
) const
virtual

Returns true if the given inputs for valid and sensible for the operation.

The Base implementation return always true unless number of inputs does not match of the operands or the operation can not be simulated.

Parameters
inputsInput vector of SimValues for each input operand in order. Note: Vector at index 0 is for Operand 1, index 1 is for Operand 2 and so on.
contextThe context in which the validation is performed.

Definition at line 574 of file Operation.cc.

576 {
577
578 return canBeSimulated()
579 && (inputs.size() == static_cast<size_t>(numberOfInputs()))
580 && pimpl_->behavior().areValid(inputs, context);
581}
virtual bool areValid(const InputOperandVector &inputs, const OperationContext &context) const
OperationBehavior & behavior() const
virtual int numberOfInputs() const
Definition Operation.cc:192
virtual bool canBeSimulated() const
Definition Operation.cc:612

References OperationBehavior::areValid(), OperationPimpl::behavior(), canBeSimulated(), numberOfInputs(), and pimpl_.

Here is the call graph for this function:

◆ behavior()

OperationBehavior & Operation::behavior ( ) const
virtual

Returns the behavior of Operation.

Returns
The behavior of Operation.

Reimplemented in NullOperation.

Definition at line 388 of file Operation.cc.

388 {
389 return pimpl_->behavior();
390}

References OperationPimpl::behavior(), and pimpl_.

Referenced by OperationBehaviorProxy::canBeSimulated(), SimulateDialog::createState(), CmdReset::execute(), RISCVInstructionExecutor::executeInstructionHelper(), SimulateDialog::onReset(), OsalInterpreter::operation(), setBehavior(), and SimulateDialog::~SimulateDialog().

Here is the call graph for this function:

◆ canBeSimulated()

bool Operation::canBeSimulated ( ) const
virtual

Returns true if this operation has behavior, or dag which is simulateable (doesn't contain infinite recursion loop).

Returns
True if this operation has behavior, or dag which is

Definition at line 612 of file Operation.cc.

612 {
613 return pimpl_->canBeSimulated();
614}
bool canBeSimulated() const

References OperationPimpl::canBeSimulated(), and pimpl_.

Referenced by areValid(), OperationBehaviorProxy::canBeSimulated(), OperationDAGBehavior::canBeSimulated(), POMValidator::checkSimulatability(), OSEdSimulateCmd::isEnabled(), and OSEdInfoView::operationPropertyView().

Here is the call graph for this function:

◆ canSwap()

bool Operation::canSwap ( int  id1,
int  id2 
) const
virtual

Returns true if Operands can be swapped.

Parameters
id1Id of the first Operand.
id2Id of the second Operand.
Returns
True, if Operands can be swapped, false otherwise.

Reimplemented in NullOperation.

Definition at line 470 of file Operation.cc.

470 {
471 return pimpl_->canSwap(id1, id2);
472}
bool canSwap(int id1, int id2) const

References OperationPimpl::canSwap(), and pimpl_.

Referenced by BFSwapOperands::BFSwapOperands(), BF2Scheduler::mustBeTrigger(), BFDropPreShared::operator()(), BFSwapOperands::operator()(), BF2Scheduler::swapToUntrigger(), BasicBlockScheduler::tryToSwitchInputs(), BUBasicBlockScheduler::tryToSwitchInputs(), and TDGen::writeOperationDefs().

Here is the call graph for this function:

◆ canTrap()

bool Operation::canTrap ( ) const
virtual

Returns true if Operation can trap.

Returns
True if Operation can trap, false otherwise.

Reimplemented in NullOperation.

Definition at line 262 of file Operation.cc.

262 {
263 return pimpl_->canTrap();
264}
bool canTrap() const

References OperationPimpl::canTrap(), and pimpl_.

Referenced by OperationPropertyDialog::TransferDataToWindow(), and OSEdInfoView::writeStaticPropertiesOfOperation().

Here is the call graph for this function:

◆ createState()

void Operation::createState ( OperationContext context) const
virtual

Creates an instance of operation state for this operation and adds it to the operation context.

Parameters
contextThe operation context to add the state in.

Reimplemented in NullOperation.

Definition at line 590 of file Operation.cc.

590 {
591 pimpl_->createState(context);
592}
void createState(OperationContext &context) const

References OperationPimpl::createState(), and pimpl_.

Referenced by FUState::addOperationExecutor(), OperationBehaviorProxy::createState(), FUState::replaceOperationExecutor(), and FUState::reset().

Here is the call graph for this function:

◆ dag()

OperationDAG & Operation::dag ( int  index) const
virtual

Returns an operation DAG for operation.

Compiles DAG from code to object if necessary.

Parameters
indexIndex of returned DAG.
Returns
Requested operation DAG or OperationDAG::null if DAG is not valid.

Definition at line 148 of file Operation.cc.

148 {
149 return pimpl_->dag(index);
150}
OperationDAG & dag(int index) const

References OperationPimpl::dag(), and pimpl_.

Referenced by OperationDAGSelector::createExpandedDAG(), OperationDAGSelector::findDags(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), ProGeTools::generateableDAGOperations(), Automagic::generateableDAGOperations(), CompiledSimCodeGenerator::generateTriggerCode(), TDGen::getMatchableOperationDAG(), TDGen::getMatchableOperationDAGs(), OperationBehaviorProxy::initializeBehavior(), MemoryAliasAnalyzer::mausOfOperation(), TDGen::operationCanBeMatched(), FUGen::parseOperations(), and OperationDAGDialog::updateDAG().

Here is the call graph for this function:

◆ dagCode()

TCEString Operation::dagCode ( int  index) const
virtual

Returns source code of DAG.

Parameters
indexIndex of DAG whose source code is requested.
Returns
The source code set for DAG.

Definition at line 159 of file Operation.cc.

159 {
160 return pimpl_->dagCode(index);
161}
TCEString dagCode(int index) const

References OperationPimpl::dagCode(), and pimpl_.

Referenced by TDGen::getMatchableOperationDAG(), TDGen::getMatchableOperationDAGs(), OperationPropertyDialog::saveOperation(), and OperationDAGDialog::updateDAG().

Here is the call graph for this function:

◆ dagCount()

int Operation::dagCount ( ) const
virtual

◆ dagError()

TCEString Operation::dagError ( int  index) const
virtual

Error message if DAG source code could not be compiled.

Parameters
indexIndex of DAG whose error is returned.
Returns
Error message, empty string if DAG was compiles successfully.

Definition at line 182 of file Operation.cc.

182 {
183 return pimpl_->dagError(index);
184}
TCEString dagError(int index) const

References OperationPimpl::dagError(), and pimpl_.

Referenced by OperationDAGSelector::findDags(), TDGen::getMatchableOperationDAG(), TDGen::getMatchableOperationDAGs(), and OperationDAGDialog::updateDAG().

Here is the call graph for this function:

◆ deleteState()

void Operation::deleteState ( OperationContext context) const
virtual

Deletes an instance of operation state for this operation from the operation context.

Parameters
contextThe operation context to delete the state from.

Reimplemented in NullOperation.

Definition at line 601 of file Operation.cc.

601 {
602 pimpl_->deleteState(context);
603}
void deleteState(OperationContext &context) const

References OperationPimpl::deleteState(), and pimpl_.

Referenced by OperationBehaviorProxy::deleteState(), and FUState::reset().

Here is the call graph for this function:

◆ dependsOn()

bool Operation::dependsOn ( const Operation op) const
virtual

Returns true if Operation depends on the given operation.

Parameters
opThe Operation being investigated.
Returns
True if Operation depends on the given operation, false otherwise.

Reimplemented in NullOperation.

Definition at line 458 of file Operation.cc.

458 {
459 return pimpl_->dependsOn(op);
460}
bool dependsOn(const Operation &op) const

References OperationPimpl::dependsOn(), and pimpl_.

Referenced by DataDependenceGraphBuilder::createSideEffectEdges(), and OperationPoolPimpl::sharesState().

Here is the call graph for this function:

◆ description()

TCEString Operation::description ( ) const
virtual

Returns the description of the Operation.

Returns
The description of the Operation.

Reimplemented in NullOperation.

Definition at line 103 of file Operation.cc.

103 {
104 return pimpl_->description();
105}
TCEString description() const

References OperationPimpl::description(), and pimpl_.

Referenced by OpsetDialog::onSelectOperation(), printLatexFunctionUnitDescription(), OperationPropertyDialog::TransferDataToWindow(), and OSEdInfoView::writeStaticPropertiesOfOperation().

Here is the call graph for this function:

◆ emulationFunctionName()

TCEString Operation::emulationFunctionName ( ) const

Name of emulation function which is called if the operation is emulated in program.

Returns
Name of emulation function of the instruction.

Definition at line 623 of file Operation.cc.

623 {
625}
TCEString emulationFunctionName() const

References OperationPimpl::emulationFunctionName(), and pimpl_.

Here is the call graph for this function:

◆ hasSideEffects()

bool Operation::hasSideEffects ( ) const
virtual

◆ impl()

OperationPimpl & Operation::impl ( )
inline

Definition at line 170 of file Operation.hh.

170{ return *pimpl_; }

References pimpl_.

Referenced by TDGen::createTrivialDAG().

◆ input()

Operand & Operation::input ( int  index) const
virtual

Returns the input Operand with the given index.

This method can be used to traverse the list of input operands (the max index is numberOfOutput() - 1).

Parameters
indexThe id of Operand.

Reimplemented in NullOperation.

Definition at line 503 of file Operation.cc.

503 {
504 return pimpl_->input(index);
505}
Operand & input(int index) const

References OperationPimpl::input(), and pimpl_.

Referenced by MemoryAliasAnalyzer::addressOperandMove(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), OperationSimulator::initializeOutputs(), MemoryAliasAnalyzer::mausOfOperation(), writeCustomOpMacro(), and TDGen::writeOperationDefUsingGivenOperandTypes().

Here is the call graph for this function:

◆ isBaseOffsetMemOperation()

bool Operation::isBaseOffsetMemOperation ( ) const
virtual

Definition at line 323 of file Operation.cc.

323 {
324 std::string upperName = name().upper();
325 return upperName == "ALDW" || upperName == "ALDHU" ||
326 upperName == "ALDH" || upperName == "ALDQU" ||
327 upperName == "ALDQ" || upperName == "ASTW" ||
328 upperName == "ASTH" || upperName == "ASTQ";
329}
TCEString upper() const
Definition TCEString.cc:86

References name(), and TCEString::upper().

Referenced by llvm::LLVMTCEBuilder::emitInstruction(), and osalInputIndex().

Here is the call graph for this function:

◆ isBranch()

bool Operation::isBranch ( ) const
virtual

Return true if the operation is branch.

Branches of different type have this property set.

Returns
True if Operation is a branch operation.

Reimplemented in NullOperation.

Definition at line 306 of file Operation.cc.

306 {
307 return pimpl_->isBranch();
308}
bool isBranch() const

References OperationPimpl::isBranch(), and pimpl_.

Referenced by TTAProgram::Move::isJump(), isPure(), ConstantTransformer::runOnMachineFunction(), TransportPipeline::startOperation(), and OperationPropertyDialog::TransferDataToWindow().

Here is the call graph for this function:

◆ isCall()

bool Operation::isCall ( ) const
virtual

Return true if the operation is call.

Calls of different type have this property set.

Returns
True if Operation is a call operation.

Reimplemented in NullOperation.

Definition at line 318 of file Operation.cc.

318 {
319 return pimpl_->isCall();
320}
bool isCall() const

References OperationPimpl::isCall(), and pimpl_.

Referenced by TTAProgram::Move::isCall(), isPure(), ConstantTransformer::runOnMachineFunction(), TransportPipeline::startOperation(), and OperationPropertyDialog::TransferDataToWindow().

Here is the call graph for this function:

◆ isClocked()

bool Operation::isClocked ( ) const
virtual

Returns true if the operation is clocked.

Returns
True if the operation is clocked.

Reimplemented in NullOperation.

Definition at line 282 of file Operation.cc.

282 {
283 return pimpl_->isClocked();
284}
bool isClocked() const

References OperationPimpl::isClocked(), and pimpl_.

Referenced by POMValidator::checkCompiledSimulatability(), OperationPropertyDialog::TransferDataToWindow(), and OSEdInfoView::writeStaticPropertiesOfOperation().

Here is the call graph for this function:

◆ isControlFlowOperation()

bool Operation::isControlFlowOperation ( ) const
virtual

Return true if the operation can change control flow.

Branches and calls of different type have this property set.

Returns
True if Operation is a control flow operation.

Reimplemented in NullOperation.

Definition at line 294 of file Operation.cc.

294 {
296}
bool isControlFlowOperation() const

References OperationPimpl::isControlFlowOperation(), and pimpl_.

Referenced by BFOptimization::canBeSpeculated(), TTAProgram::CodeGenerator::createTerminalFUPort(), TTAProgram::Move::isControlFlowMove(), isPure(), BFRemoveLoopChecksAndJump::operator()(), and OperationPropertyDialog::TransferDataToWindow().

Here is the call graph for this function:

◆ isNull()

bool Operation::isNull ( ) const

◆ isPure()

bool Operation::isPure ( ) const
virtual

Returns true if Operand does not have any kind of side effects program wide.

In Addition of !hasSideEffects(), the operation does not access memory and is not control flow operation.

Definition at line 346 of file Operation.cc.

346 {
347 return (!hasSideEffects()
348 && !usesMemory()
350 && !isCall()
351 && !isBranch() && affectsCount() == 0
352 && affectedByCount() == 0);
353}
virtual int affectedByCount() const
Definition Operation.cc:416
virtual bool usesMemory() const
Definition Operation.cc:232
virtual bool isCall() const
Definition Operation.cc:318
virtual bool isControlFlowOperation() const
Definition Operation.cc:294
virtual bool hasSideEffects() const
Definition Operation.cc:272
virtual int affectsCount() const
Definition Operation.cc:402
virtual bool isBranch() const
Definition Operation.cc:306

References affectedByCount(), affectsCount(), hasSideEffects(), isBranch(), isCall(), isControlFlowOperation(), and usesMemory().

Here is the call graph for this function:

◆ isVectorOperation()

bool Operation::isVectorOperation ( ) const
virtual

Returns true if any of the operands is a vector operand.

Returns
True if the Operation has a vector operand, false otherwise.

Definition at line 222 of file Operation.cc.

222 {
223 return false; // WiP.
224}

Referenced by TDGen::gatherAllMachineOperations(), and TDGen::writeInstrInfo().

◆ loadState()

void Operation::loadState ( const ObjectState state)
virtual

Loads the Operation from ObjectState object.

Parameters
stateThe state of the Operation.

Implements Serializable.

Definition at line 480 of file Operation.cc.

480 {
481 pimpl_->loadState(state);
482}
void loadState(const ObjectState *state)

References OperationPimpl::loadState(), and pimpl_.

Referenced by OSEdTreeView::constructTree(), OperationIndex::effectiveOperation(), OperationPropertyLoader::loadOperationProperties(), OperationDAGDialog::onCancel(), OperationContainer::operation(), and OperationPropertyDialog::updateOperation().

Here is the call graph for this function:

◆ name()

TCEString Operation::name ( ) const
virtual

Returns the name of the Operation.

Returns
The name of the Operation.

Reimplemented in NullOperation.

Definition at line 93 of file Operation.cc.

93 {
94 return pimpl_->name();
95}
TCEString name() const

References OperationPimpl::name(), and pimpl_.

Referenced by RegisterCopyAdder::addConnectionRegisterCopies(), ProgramOperation::addNode(), VectorLSGenerator::addOperation(), StaticProgramAnalyzer::addProgram(), MachineStateBuilder::addVirtualOpcodeSettingPortsToFU(), MultiLatencyOperationExecutor::advanceClock(), InputFUBroker::allAvailableResources(), OutputFUBroker::allAvailableResources(), LoopAnalyzer::analyze(), OffsetAliasAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), TDGen::areImmediateOperandsLegal(), InputFUBroker::assign(), OutputFUBroker::assign(), ExecutionPipelineResource::assignDestination(), ControlFlowGraph::buildMBBFromBB(), MachineConnectivityCheck::busConnectedToAnyFU(), UtilizationStats::calculateForInstruction(), ExecutionPipelineResource::canAssignDestination(), ExecutionPipelineResource::canAssignSource(), ProGeTools::canGenerateFromDAG(), Automagic::canGenerateFromDAG(), AddressSpaceCheck::check(), POMValidator::checkCompiledSimulatability(), PreOptimizer::checkGuardReversalAllowed(), POMValidator::checkSimulatability(), CopyingDelaySlotFiller::collectMoves(), OperationDAGSelector::countUnknownOperations(), POMDisassembler::createFUPort(), DataDependenceGraphBuilder::createOperationEdges(), OperationBehaviorProxy::createState(), TDGen::dagNodeToString(), OperationPimpl::dependsOn(), MemoryAliasAnalyzer::detectConstantScale(), OSEdAddOperationCmd::Do(), OSEdPropertiesCmd::Do(), OSEdRemoveOperationCmd::Do(), ResourceConstraintAnalyzer::dumpGraphWithStats(), MoveNodeDuplicator::duplicateMove(), ExecutionPipelineBroker::earliestFromDestination(), ExecutionPipelineBroker::earliestFromSource(), MoveNode::earliestResultReadCycle(), ControlFlowEdge::edgePredicateFromMove(), llvm::LLVMTCEBuilder::emitInstruction(), TDGen::emulatingOpNodeLLVMName(), CodeCompressorPlugin::encodeFUTerminal(), OperationDAGSelector::findDags(), LoopAnalyzer::findEndCond(), MemoryAliasAnalyzer::findIncrement(), LoopAnalyzer::findInitAndUpdate(), DataDependenceGraph::findLoopIndexUpdate(), DataDependenceGraph::findLoopLimitAndIndex(), MachineConnectivityCheck::findPossibleDestinationPorts(), MachineConnectivityCheck::findPossibleSourcePorts(), BasicBlockScheduler::findTrigger(), BasicBlockScheduler::findTriggerFromUnit(), ProgramOperation::findTriggerFromUnit(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), RISCVTDGen::getFormatType(), TDGen::getLLVMPatternWithConstants(), TDGen::getMatchableOperationDAG(), TDGen::getMatchableOperationDAGs(), CopyingDelaySlotFiller::getMove(), BasicBlockScheduler::getTriggerOperand(), PreOptimizer::handleCFGDDG(), ProgramOperation::hwopFromOutMove(), BFOptimization::immCountPreventsScheduling(), OperationBehaviorLoader::importBehavior(), OffsetAliasAnalyzer::isAddressTraceable(), isBaseOffsetMemOperation(), POMDisassembler::isCallOrJump(), ProgramOperation::isLegalFU(), ExecutionPipelineBroker::isMoveTrigger(), BF2Scheduler::isTrigger(), DataDependenceGraphBuilder::isTriggering(), ImmInfo::key(), ImmInfo::key(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), MoveNode::latestTriggerWriteCycle(), ExecutionPipelineResource::latestTriggerWriteCycle(), TDGen::llvmOperationPattern(), OperationPropertyLoader::loadOperationProperties(), ScheduleEstimator::maximumSizeOfBB(), Peel2BBLoops::negateOp(), ProGeTools::nodeLatency(), Automagic::nodeLatency(), ExecutionPipelineResource::nodeOfInputPort(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandPort(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), ExecutionPipelineResource::operandTooLate(), OsalInterpreter::operation(), TDGen::operationCanBeMatched(), TDGen::operationDAGCanBeMatched(), TDGen::operationNodeToString(), BFLateBypassGuard::operator()(), BFShareOperands::operator()(), BFEarlyGuardBypass::operator()(), ProgramOperation::outputIndexFromGuard(), ExecutionPipelineResource::poConflictsWithInputPort(), BF2Scheduler::preAllocateFunctionUnitsInner(), SimProgramBuilder::processBidirTerminal(), DataDependenceGraphBuilder::processTriggerPO(), BF2Scheduler::releasePortForOp(), RegisterCopyAdder::requiredRegisterCopiesForEachFU(), BF2Scheduler::reservePreallocatedFUs(), ExecutionPipelineResource::resourcesAllowTrigger(), ExecutionPipelineResource::resultCausesTriggerBetweenOperandSharing(), ExecutionPipelineResource::resultPort(), ExecutionPipelineResource::resultReadyCycle(), BFOptimization::RFReadPortCountPreventsScheduling(), OperationGlobals::runtimeError(), BUBasicBlockScheduler::scheduleMove(), FUGen::scheduleOperations(), MemoryAliasAnalyzer::searchLoopIndexBasedIncrement(), ExecutionPipelineResource::setOperandsUsed(), ProgramOperation::setOperation(), ExecutionPipelineResource::setResultWriten(), SimulateDialog::setTexts(), SmartHWOperation::SmartHWOperation(), ConflictDetectingOperationExecutor::startOperation(), MultiLatencyOperationExecutor::startOperation(), FUGen::subOpName(), TDGen::supportedStackAccessOperations(), TDGen::tceOperationPattern(), TTAProgram::TerminalFUPort::TerminalFUPort(), TTAProgram::ProgramWriter::terminalResource(), ExecutionPipelineResource::testTriggerResult(), OperationNode::toString(), OperationPropertyDialog::TransferDataToWindow(), MachineInfo::triggerIndex(), ExecutionPipelineResource::triggerTooEarly(), PreOptimizer::tryToPrecalcConstantAdd(), LoopAnalyzer::tryTrackCommonAncestor(), ExecutionPipelineResource::unassignDestination(), ExecutionPipelineResource::unsetOperandsUsed(), ExecutionPipelineResource::unsetResultWriten(), OperationPropertyDialog::updateOperation(), TDGen::writeEmulationPattern(), TDGen::writeInstrInfo(), OperationDAGConverter::writeNode(), TDGen::writeOperationDef(), TDGen::writeOperationDefs(), TDGen::writeOperationDefs(), RISCVTDGen::writePatternDefinition(), TDGen::writeScalarOperationExploitations(), OSEdInfoView::writeStaticPropertiesOfOperation(), and TDGen::writeVectorOperationDef().

Here is the call graph for this function:

◆ numberOfInputs()

int Operation::numberOfInputs ( ) const
virtual

Returns the number of the inputs of the Operation.

Returns
The number of inputs of the Operation.

Reimplemented in NullOperation.

Definition at line 192 of file Operation.cc.

192 {
193 return pimpl_->numberOfInputs();
194}
int numberOfInputs() const

References OperationPimpl::numberOfInputs(), and pimpl_.

Referenced by VectorLSGenerator::addOperation(), MemoryAliasAnalyzer::addressOperandMove(), MachineStateBuilder::addVirtualOpcodeSettingPortsToFU(), SimpleOperationExecutor::advanceClock(), TDGen::areImmediateOperandsLegal(), areValid(), BFSwapOperands::BFSwapOperands(), MachineStateBuilder::bindPortsToOperands(), ControlFlowGraph::buildMBBFromBB(), ExecutionPipelineResource::canAssignDestination(), BF2Scheduler::countLoopInvariantValueUsages(), TDGen::createDefaultOperandTypeString(), OpsetDialog::createOperation(), TDGen::createTrivialDAG(), VectorLSGenerator::createVectorLSU(), TDGen::dagNodeToString(), llvm::LLVMTCEBuilder::emitInstruction(), TDGen::emulatingOpNodeLLVMName(), CmdTrigger::execute(), RISCVInstructionExecutor::executeInstructionHelper(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), RISCVTDGen::getFormatType(), TDGen::getLLVMPatternWithConstants(), BasicBlockScheduler::getTriggerOperand(), OperationBehaviorProxy::initializeBehavior(), ProgramOperation::inputNode(), ProgramOperation::isComplete(), ProgramOperation::isReady(), MemoryAliasAnalyzer::mausOfOperation(), MultiLatencyOperationExecutor::MultiLatencyOperationExecutor(), BF2Scheduler::mustBeTrigger(), OpsetDialog::onSelectOperation(), operandCount(), TDGen::operationCanBeMatched(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), OSEdInfoView::operationPropertyView(), BFDropPreShared::operator()(), SmartHWOperation::otherMandatoryInputsBound(), ProgramOperation::outputNode(), TDGen::patInputs(), TDGen::patOutputs(), ExecutionPipelineResource::poConflictsWithInputPort(), SmartHWOperation::port(), BF2Scheduler::preAllocateFunctionUnits(), DataDependenceGraphBuilder::processTriggerPO(), BF2Scheduler::releasePortForOp(), FUState::replaceOperationExecutor(), BF2Scheduler::reservePreallocatedFUs(), ExecutionPipelineResource::resultReadyCycle(), FUState::sameBindings(), ExecutionPipelineResource::setOperandsUsed(), ExecutionPipelineResource::setResultWriten(), OperationSimulator::simulateTrigger(), SmartHWOperation::SmartHWOperation(), MultiLatencyOperationExecutor::startOperation(), SimpleOperationExecutor::startOperation(), TransportPipeline::startOperation(), BF2Scheduler::swapToUntrigger(), ProgramOperation::switchInputs(), TDGen::tceOperationPattern(), ExecutionPipelineResource::testTriggerResult(), MachineInfo::triggerIndex(), BasicBlockScheduler::tryToSwitchInputs(), BUBasicBlockScheduler::tryToSwitchInputs(), ExecutionPipelineResource::unsetOperandsUsed(), ExecutionPipelineResource::unsetResultWriten(), writeCustomOpMacro(), TDGen::writeEmulationPattern(), OperationDAGConverter::writeNode(), TDGen::writeOperationDefs(), TDGen::writeOperationDefs(), TDGen::writeOperationDefUsingGivenOperandTypes(), RISCVTDGen::writePatternDefinition(), TDGen::writeScalarOperationExploitations(), OSEdInfoView::writeStaticPropertiesOfOperation(), and TDGen::writeVectorBitwiseOperationDefs().

Here is the call graph for this function:

◆ numberOfOutputs()

int Operation::numberOfOutputs ( ) const
virtual

Returns the number of outputs of the Operation.

Returns
The number of outputs of the Operation.

Reimplemented in NullOperation.

Definition at line 202 of file Operation.cc.

202 {
203 return pimpl_->numberOfOutputs();
204}
int numberOfOutputs() const

References OperationPimpl::numberOfOutputs(), and pimpl_.

Referenced by VectorLSGenerator::addOperation(), MachineStateBuilder::addVirtualOpcodeSettingPortsToFU(), SimpleOperationExecutor::advanceClock(), TDGen::areImmediateOperandsLegal(), MachineStateBuilder::bindPortsToOperands(), ControlFlowGraph::buildMBBFromBB(), TDGen::constantNodeString(), TDGen::createDefaultOperandTypeString(), OpsetDialog::createOperation(), TDGen::createTrivialDAG(), VectorLSGenerator::createVectorLSU(), TDGen::dagNodeToString(), llvm::LLVMTCEBuilder::emitInstruction(), TDGen::emulatingOpNodeLLVMName(), CmdTrigger::execute(), RISCVInstructionExecutor::executeInstructionHelper(), RISCVTDGen::getFormatType(), TDGen::getLLVMPatternWithConstants(), OperationBehaviorProxy::initializeBehavior(), OperationSimulator::initializeOutputs(), ProgramOperation::isComplete(), MultiLatencyOperationExecutor::MultiLatencyOperationExecutor(), OpsetDialog::onSelectOperation(), operandCount(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), OSEdInfoView::operationPropertyView(), ProgramOperation::outputNode(), TDGen::patInputs(), TDGen::patOutputs(), SmartHWOperation::port(), DataDependenceGraphBuilder::processTriggerPO(), FUState::replaceOperationExecutor(), ExecutionPipelineResource::resultReadyCycle(), FUState::sameBindings(), ExecutionPipelineResource::setResultWriten(), SmartHWOperation::SmartHWOperation(), MultiLatencyOperationExecutor::startOperation(), SimpleOperationExecutor::startOperation(), TransportPipeline::startOperation(), ExecutionPipelineResource::testTriggerResult(), ExecutionPipelineResource::unsetResultWriten(), writeCustomOpMacro(), TDGen::writeEmulationPattern(), TDGen::writeInstrInfo(), OperationDAGConverter::writeNode(), TDGen::writeOperationDefs(), TDGen::writeOperationDefs(), TDGen::writeOperationDefUsingGivenOperandTypes(), RISCVTDGen::writePatternDefinition(), TDGen::writeScalarOperationExploitations(), OSEdInfoView::writeStaticPropertiesOfOperation(), TDGen::writeVectorBitwiseOperationDefs(), and TDGen::writeVectorOperationDef().

Here is the call graph for this function:

◆ operand()

Operand & Operation::operand ( int  id) const
virtual

Returns the Operand with the given id if found, otherwise null Operand.

Note
This method is used to fetch operands with their 'id', the number which identifies it to the programmer. That is, output ids start from the last input id + 1, etc.
Parameters
idThe id of Operand.
Returns
Operand if found, null Operand otherwise.

Reimplemented in NullOperation.

Definition at line 541 of file Operation.cc.

541 {
542 return pimpl_->operand(id);
543}
Operand & operand(int id) const

References OperationPimpl::operand(), and pimpl_.

Referenced by addInput(), addOutput(), TDGen::analyzeMachineVectorRegisterClasses(), TDGen::areImmediateOperandsLegal(), OperationDAGBuilder::connectOperandToNode(), TDGen::constantNodeString(), ImmInfo::count(), TDGen::createDefaultOperandTypeString(), OpsetDialog::createOperation(), TDGen::createTrivialDAG(), FUGen::DAGNodeOperandWidth(), TDGen::dagNodeToString(), SocketBusConnCmd::Do(), llvm::LLVMTCEBuilder::emitInstruction(), llvm::LLVMTCEBuilder::emitOperationMacro(), TDGen::emulatingOpNodeLLVMName(), MachineInfo::findWidestOperand(), llvm::LLVMTCEBuilder::hasAmbiguousASpaceRefs(), TDGen::hasRawOperands(), TDGen::hasRegisterClassSupport(), ImmInfo::immediateValueBounds(), MachineInfo::operandFromPort(), MachineConnectivityCheck::operandWidth(), OSEdInfoView::operationPropertyView(), osalInputIndex(), TDGen::patInputs(), TDGen::patOutputs(), ConstantTransformer::runOnMachineFunction(), FUGen::scheduleOperations(), SimpleOperationExecutor::startOperation(), TDGen::subwordWidthOfRawData(), PreOptimizer::tryToRemoveEq(), ImmInfo::widestImmediate(), writeCustomOpMacro(), TDGen::writeEmulationPattern(), OperationDAGConverter::writeNode(), and TDGen::writeOperationDefs().

Here is the call graph for this function:

◆ operandCount()

int Operation::operandCount ( ) const
virtual

Returns the number of all operands of the Operation.

Returns
The number of all operands of the Operation.

Definition at line 212 of file Operation.cc.

212 {
213 return numberOfInputs() + numberOfOutputs();
214}
virtual int numberOfOutputs() const
Definition Operation.cc:202

References numberOfInputs(), and numberOfOutputs().

Referenced by TDGen::analyzeMachineVectorRegisterClasses(), TDGen::areImmediateOperandsLegal(), OperationDAGBuilder::connectOperandToNode(), MachineInfo::findWidestOperand(), TDGen::hasRawOperands(), TDGen::hasRegisterClassSupport(), operandBindingsString(), TDGen::subwordWidthOfRawData(), and TDGen::writeVectorOperationDef().

Here is the call graph for this function:

◆ output()

Operand & Operation::output ( int  index) const
virtual

Returns the output Operand with the given index.

This method can be used to traverse the list of output operands (the max index is numberOfOutput() - 1).

Parameters
indexThe index of Operand.

Reimplemented in NullOperation.

Definition at line 526 of file Operation.cc.

526 {
527 return pimpl_->output(index);
528}
Operand & output(int index) const

References OperationPimpl::output(), and pimpl_.

Referenced by OperationSimulator::initializeOutputs(), writeCustomOpMacro(), TDGen::writeOperationDefUsingGivenOperandTypes(), TDGen::writeScalarOperationExploitations(), and TDGen::writeVectorBitwiseOperationDefs().

Here is the call graph for this function:

◆ readsMemory()

bool Operation::readsMemory ( ) const
virtual

◆ removeDag()

void Operation::removeDag ( int  index)
virtual

Removes DAG of given index from operation.

Parameters
indexIndex of dag to delete.

Definition at line 123 of file Operation.cc.

123 {
124 pimpl_->removeDag(index);
125}
void removeDag(int index)

References pimpl_, and OperationPimpl::removeDag().

Referenced by OperationDAGDialog::onDeleteDAG().

Here is the call graph for this function:

◆ saveState()

ObjectState * Operation::saveState ( ) const
virtual

Saves the state of the Operation in ObjectState object.

Returns
The state of the Operation.

Implements Serializable.

Definition at line 490 of file Operation.cc.

490 {
491 return pimpl_->saveState();
492}
ObjectState * saveState() const

References pimpl_, and OperationPimpl::saveState().

Referenced by OSEdAddOperationCmd::Do(), and OSEdPropertiesCmd::Do().

Here is the call graph for this function:

◆ setBehavior()

void Operation::setBehavior ( OperationBehavior behavior)
virtual

Sets the behavior for operation.

Parameters
behaviorBehavior for an operation.

Reimplemented in NullOperation.

Definition at line 378 of file Operation.cc.

378 {
380}
void setBehavior(OperationBehavior &behavior)

References behavior(), pimpl_, and OperationPimpl::setBehavior().

Referenced by OperationIndex::effectiveOperation(), OperationBehaviorProxy::initializeBehavior(), OperationContainer::operation(), and OperationBehaviorProxy::uninitializeBehavior().

Here is the call graph for this function:

◆ setBranch()

void Operation::setBranch ( bool  setting)
virtual

Sets the property of operation indicating the operation is branch changing control flow.

Definition at line 368 of file Operation.cc.

368 {
369 pimpl_->setBranch(setting);
370}
void setBranch(bool setting)

References pimpl_, and OperationPimpl::setBranch().

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ setCall()

void Operation::setCall ( bool  setting)
virtual

Sets the property of operation indicating the operation is function call.

Definition at line 359 of file Operation.cc.

359 {
360 pimpl_->setCall(setting);
361}
void setCall(bool setting)

References pimpl_, and OperationPimpl::setCall().

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ setControlFlowOperation()

void Operation::setControlFlowOperation ( bool  setting)
virtual

Sets the property of operation indicating the operation is control flow.

Definition at line 335 of file Operation.cc.

335 {
337}
void setControlFlowOperation(bool setting)

References pimpl_, and OperationPimpl::setControlFlowOperation().

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ setDagCode()

void Operation::setDagCode ( int  index,
const TCEString code 
)
virtual

Set new source code for DAG and automatically tries to compile latest version to object.

Parameters
indexIndex of DAG whose source code is updated.
codeNew source code in DAG Osal Language.

Definition at line 171 of file Operation.cc.

171 {
172 pimpl_->setDagCode(index, code);
173}
void setDagCode(int index, const TCEString &code)

References pimpl_, and OperationPimpl::setDagCode().

Referenced by OperationDAGDialog::doSaveDAG().

Here is the call graph for this function:

◆ setReadsMemory()

void Operation::setReadsMemory ( bool  setting)
virtual

Specifies if operation reads memory.

Definition at line 631 of file Operation.cc.

631 {
632 pimpl_->setReadsMemory(setting);
633}
void setReadsMemory(bool setting)

References pimpl_, and OperationPimpl::setReadsMemory().

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ setWritesMemory()

void Operation::setWritesMemory ( bool  setting)
virtual

Specifies if operation writes memory.

Definition at line 639 of file Operation.cc.

639 {
640 pimpl_->setWritesMemory(setting);
641}
void setWritesMemory(bool setting)

References pimpl_, and OperationPimpl::setWritesMemory().

Referenced by OperationPoolPimpl::loadFromLLVM().

Here is the call graph for this function:

◆ simulateTrigger()

bool Operation::simulateTrigger ( SimValue **  io,
OperationContext context 
) const
virtual

Simulates the process of starting execution of an operation.

Parameters
ioThe input and output operands.
contextThe operation context.
Returns
True, if all values could be computed, false otherwise.
Exceptions
ExceptionDepends on the operation behavior.

Reimplemented in NullOperation.

Definition at line 555 of file Operation.cc.

557 {
558
559 return pimpl_->simulateTrigger(io, context);
560}
bool simulateTrigger(SimValue **, OperationContext &context) const

References pimpl_, and OperationPimpl::simulateTrigger().

Referenced by MultiLatencyOperationExecutor::advanceClock(), OperationSimulator::simulateTrigger(), OperationBehaviorProxy::simulateTrigger(), OneCycleOperationExecutor::startOperation(), SimpleOperationExecutor::startOperation(), and TransportPipeline::startOperation().

Here is the call graph for this function:

◆ usesMemory()

bool Operation::usesMemory ( ) const
virtual

◆ writesMemory()

bool Operation::writesMemory ( ) const
virtual

Member Data Documentation

◆ OPRN_AFFECTED_BY

const char * Operation::OPRN_AFFECTED_BY = "affected-by"
static

Object state name for affected by.

Definition at line 89 of file Operation.hh.

Referenced by OperationPimpl::loadState(), OperationPropertyDialog::saveOperation(), and OperationPimpl::saveState().

◆ OPRN_AFFECTS

const char * Operation::OPRN_AFFECTS = "affects"
static

Object state name for affects.

Definition at line 87 of file Operation.hh.

Referenced by OperationPimpl::loadState(), OperationPropertyDialog::saveOperation(), and OperationPimpl::saveState().

◆ OPRN_CLOCKED

const char * Operation::OPRN_CLOCKED = "clocked"
static

◆ OPRN_CONTROL_FLOW

const char * Operation::OPRN_CONTROL_FLOW = "control-flow"
static

◆ OPRN_DESCRIPTION

const char * Operation::OPRN_DESCRIPTION = "description"
static

◆ OPRN_IN

const char * Operation::OPRN_IN = "in"
static

◆ OPRN_INPUTS

const char * Operation::OPRN_INPUTS = "inputs"
static

◆ OPRN_ISBRANCH

const char * Operation::OPRN_ISBRANCH = "is-branch"
static

◆ OPRN_ISCALL

const char * Operation::OPRN_ISCALL = "is-call"
static

◆ OPRN_NAME

const char * Operation::OPRN_NAME = "name"
static

◆ OPRN_OPERATION

const char * Operation::OPRN_OPERATION = "operation"
static

◆ OPRN_OUT

const char * Operation::OPRN_OUT = "out"
static

◆ OPRN_OUTPUTS

const char * Operation::OPRN_OUTPUTS = "outputs"
static

◆ OPRN_READS_MEMORY

const char * Operation::OPRN_READS_MEMORY = "reads-memory"
static

◆ OPRN_SIDE_EFFECTS

const char * Operation::OPRN_SIDE_EFFECTS = "side-effects"
static

◆ OPRN_TRAP

const char * Operation::OPRN_TRAP = "trap"
static

◆ OPRN_TRIGGER

const char * Operation::OPRN_TRIGGER = "trigger-semantics"
static

Object state name for trigger semantics.

Definition at line 95 of file Operation.hh.

Referenced by OperationPimpl::loadState(), OperationPropertyDialog::saveOperation(), and OperationPimpl::saveState().

◆ OPRN_WRITES_MEMORY

const char * Operation::OPRN_WRITES_MEMORY = "writes-memory"
static

◆ pimpl_

OperationPimpl* Operation::pimpl_
private

The documentation for this class was generated from the following files: