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

Private Attributes

OperationPimplpimpl_
 Private implementation in a separate source file. More...
 

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 }

◆ ~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 }

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 }

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 }

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 }

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 }

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 }

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 }

References OperationPimpl::affectsCount(), and pimpl_.

Referenced by CopyingDelaySlotFiller::allowedToSpeculate(), BFOptimization::canBeSpeculated(), isPure(), OSEdInfoView::operationPropertyView(), DataDependenceGraphBuilder::processDestination(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::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 }

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(), 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 }

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 }

References OperationPimpl::canSwap(), and pimpl_.

Referenced by BFSwapOperands::BFSwapOperands(), BF2Scheduler::mustBeTrigger(), BFDropPreShared::operator()(), BFSwapOperands::operator()(), BF2Scheduler::swapToUntrigger(), BUBasicBlockScheduler::tryToSwitchInputs(), BasicBlockScheduler::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 }

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 }

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 }

References OperationPimpl::dag(), and pimpl_.

Referenced by OperationDAGSelector::createExpandedDAG(), OperationDAGSelector::findDags(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), Automagic::generateableDAGOperations(), ProGeTools::generateableDAGOperations(), CompiledSimCodeGenerator::generateTriggerCode(), TDGen::getMatchableOperationDAG(), 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 }

References OperationPimpl::dagCode(), and pimpl_.

Referenced by TDGen::getMatchableOperationDAG(), 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 }

References OperationPimpl::dagError(), and pimpl_.

Referenced by OperationDAGSelector::findDags(), TDGen::getMatchableOperationDAG(), 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 }

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 }

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 }

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  {
624  return pimpl_->emulationFunctionName();
625 }

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 }

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 }

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 }

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 }

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 }

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  {
295  return pimpl_->isControlFlowOperation();
296 }

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 }

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 }

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 }

References OperationPimpl::name(), and pimpl_.

Referenced by RegisterCopyAdder::addConnectionRegisterCopies(), ProgramOperation::addNode(), VectorLSGenerator::addOperation(), StaticProgramAnalyzer::addProgram(), MachineStateBuilder::addVirtualOpcodeSettingPortsToFU(), MultiLatencyOperationExecutor::advanceClock(), OutputFUBroker::allAvailableResources(), InputFUBroker::allAvailableResources(), LoopAnalyzer::analyze(), OffsetAliasAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), TDGen::areImmediateOperandsLegal(), OutputFUBroker::assign(), InputFUBroker::assign(), ExecutionPipelineResource::assignDestination(), ControlFlowGraph::buildMBBFromBB(), MachineConnectivityCheck::busConnectedToAnyFU(), UtilizationStats::calculateForInstruction(), ExecutionPipelineResource::canAssignDestination(), ExecutionPipelineResource::canAssignSource(), Automagic::canGenerateFromDAG(), ProGeTools::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(), ProgramOperation::findTriggerFromUnit(), BasicBlockScheduler::findTriggerFromUnit(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), TDGen::getLLVMPatternWithConstants(), TDGen::getMatchableOperationDAG(), 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(), 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()(), BFEarlyGuardBypass::operator()(), BFShareOperands::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::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 }

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(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), 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(), TransportPipeline::startOperation(), SimpleOperationExecutor::startOperation(), MultiLatencyOperationExecutor::startOperation(), BF2Scheduler::swapToUntrigger(), ProgramOperation::switchInputs(), TDGen::tceOperationPattern(), ExecutionPipelineResource::testTriggerResult(), MachineInfo::triggerIndex(), BUBasicBlockScheduler::tryToSwitchInputs(), BasicBlockScheduler::tryToSwitchInputs(), ExecutionPipelineResource::unsetOperandsUsed(), ExecutionPipelineResource::unsetResultWriten(), writeCustomOpMacro(), TDGen::writeEmulationPattern(), OperationDAGConverter::writeNode(), TDGen::writeOperationDefs(), TDGen::writeOperationDefUsingGivenOperandTypes(), 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 }

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(), TDGen::getLLVMPatternWithConstants(), OperationBehaviorProxy::initializeBehavior(), OperationSimulator::initializeOutputs(), ProgramOperation::isComplete(), MultiLatencyOperationExecutor::MultiLatencyOperationExecutor(), OpsetDialog::onSelectOperation(), operandCount(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), ProgramOperation::outputNode(), TDGen::patInputs(), TDGen::patOutputs(), SmartHWOperation::port(), DataDependenceGraphBuilder::processTriggerPO(), FUState::replaceOperationExecutor(), ExecutionPipelineResource::resultReadyCycle(), FUState::sameBindings(), ExecutionPipelineResource::setResultWriten(), SmartHWOperation::SmartHWOperation(), TransportPipeline::startOperation(), SimpleOperationExecutor::startOperation(), MultiLatencyOperationExecutor::startOperation(), ExecutionPipelineResource::testTriggerResult(), ExecutionPipelineResource::unsetResultWriten(), writeCustomOpMacro(), TDGen::writeEmulationPattern(), TDGen::writeInstrInfo(), OperationDAGConverter::writeNode(), TDGen::writeOperationDefs(), TDGen::writeOperationDefUsingGivenOperandTypes(), 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 }

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

◆ 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 }

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 }

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 }

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 }

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 }

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 }

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 }

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 }

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 }

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 }

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 }

References pimpl_, and OperationPimpl::simulateTrigger().

Referenced by MultiLatencyOperationExecutor::advanceClock(), OperationSimulator::simulateTrigger(), OperationBehaviorProxy::simulateTrigger(), OneCycleOperationExecutor::startOperation(), TransportPipeline::startOperation(), and SimpleOperationExecutor::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:
OperationPimpl::writesMemory
bool writesMemory() const
Operation::affectedByCount
virtual int affectedByCount() const
Definition: Operation.cc:416
OperationPimpl::hasSideEffects
bool hasSideEffects() const
Definition: OperationPimpl.cc:268
OperationPimpl::setBranch
void setBranch(bool setting)
Definition: OperationPimpl.cc:861
OperationPimpl::name
TCEString name() const
Definition: OperationPimpl.cc:121
OperationPimpl::dagError
TCEString dagError(int index) const
Definition: OperationPimpl.cc:248
OperationPimpl::affectedByCount
int affectedByCount() const
Definition: OperationPimpl.cc:353
Operation::hasSideEffects
virtual bool hasSideEffects() const
Definition: Operation.cc:272
OperationPimpl::loadState
void loadState(const ObjectState *state)
Definition: OperationPimpl.cc:453
OperationPimpl
Definition: OperationPimpl.hh:54
OperationPimpl::addInput
void addInput(Operand *operand)
Definition: OperationPimpl.cc:620
OperationPimpl::isCall
bool isCall() const
Definition: OperationPimpl.cc:302
OperationPimpl::isControlFlowOperation
bool isControlFlowOperation() const
Definition: OperationPimpl.cc:290
OperationPimpl::isClocked
bool isClocked() const
Definition: OperationPimpl.cc:278
OperationPimpl::canTrap
bool canTrap() const
Definition: OperationPimpl.cc:258
OperationPimpl::setCall
void setCall(bool setting)
Definition: OperationPimpl.cc:852
OperationBehavior::areValid
virtual bool areValid(const InputOperandVector &inputs, const OperationContext &context) const
Definition: OperationBehavior.cc:96
Operation::numberOfInputs
virtual int numberOfInputs() const
Definition: Operation.cc:192
Operation::canBeSimulated
virtual bool canBeSimulated() const
Definition: Operation.cc:612
OperationPimpl::addOutput
void addOutput(Operand *operand)
Definition: OperationPimpl.cc:626
OperationPimpl::emulationFunctionName
TCEString emulationFunctionName() const
Definition: OperationPimpl.cc:819
TCEString::upper
TCEString upper() const
Definition: TCEString.cc:86
Operation::name
virtual TCEString name() const
Definition: Operation.cc:93
Operation::pimpl_
OperationPimpl * pimpl_
Private implementation in a separate source file.
Definition: Operation.hh:173
OperationPimpl::dagCode
TCEString dagCode(int index) const
Definition: OperationPimpl.cc:220
OperationPimpl::dagCount
int dagCount() const
Definition: OperationPimpl.cc:172
OperationPimpl::numberOfOutputs
int numberOfOutputs() const
OperationPimpl::setControlFlowOperation
void setControlFlowOperation(bool setting)
Definition: OperationPimpl.cc:844
OperationPimpl::saveState
ObjectState * saveState() const
Definition: OperationPimpl.cc:557
OperationPimpl::setBehavior
void setBehavior(OperationBehavior &behavior)
Definition: OperationPimpl.cc:323
OperationPimpl::output
Operand & output(int index) const
Definition: OperationPimpl.cc:640
OperationPimpl::simulateTrigger
bool simulateTrigger(SimValue **, OperationContext &context) const
Definition: OperationPimpl.cc:750
OperationPimpl::affects
TCEString affects(unsigned int i) const
Definition: OperationPimpl.cc:364
OperationPimpl::setReadsMemory
void setReadsMemory(bool setting)
Definition: OperationPimpl.cc:869
OperationPimpl::operand
Operand & operand(int id) const
Definition: OperationPimpl.cc:655
OperationPimpl::createState
void createState(OperationContext &context) const
Definition: OperationPimpl.cc:764
OperationPimpl::behavior
OperationBehavior & behavior() const
Definition: OperationPimpl.cc:333
Operation::usesMemory
virtual bool usesMemory() const
Definition: Operation.cc:232
Operation::operand
virtual Operand & operand(int id) const
Definition: Operation.cc:541
OperationPimpl::readsMemory
bool readsMemory() const
OperationPimpl::removeDag
void removeDag(int index)
Definition: OperationPimpl.cc:154
Operation::behavior
virtual OperationBehavior & behavior() const
Definition: Operation.cc:388
OperationPimpl::dependsOn
bool dependsOn(const Operation &op) const
Definition: OperationPimpl.cc:413
OperationPimpl::dag
OperationDAG & dag(int index) const
Definition: OperationPimpl.cc:186
OperationPimpl::canSwap
bool canSwap(int id1, int id2) const
Definition: OperationPimpl.cc:435
OperationPimpl::affectedBy
TCEString affectedBy(unsigned int i) const
Definition: OperationPimpl.cc:389
Operation::isCall
virtual bool isCall() const
Definition: Operation.cc:318
OperationPimpl::affectsCount
int affectsCount() const
Definition: OperationPimpl.cc:343
OperationPimpl::canBeSimulated
bool canBeSimulated() const
Definition: OperationPimpl.cc:786
OperationPimpl::isBranch
bool isBranch() const
Definition: OperationPimpl.cc:313
OperationPimpl::usesMemory
bool usesMemory() const
OperationPimpl::addDag
void addDag(const TCEString &code)
Definition: OperationPimpl.cc:140
OperationPimpl::input
Operand & input(int index) const
Operation::numberOfOutputs
virtual int numberOfOutputs() const
Definition: Operation.cc:202
Operation::affectsCount
virtual int affectsCount() const
Definition: Operation.cc:402
Operation::isBranch
virtual bool isBranch() const
Definition: Operation.cc:306
OperationPimpl::description
TCEString description() const
Definition: OperationPimpl.cc:131
OperationPimpl::setWritesMemory
void setWritesMemory(bool setting)
Definition: OperationPimpl.cc:877
OperationPimpl::deleteState
void deleteState(OperationContext &context) const
Definition: OperationPimpl.cc:775
Operation::isControlFlowOperation
virtual bool isControlFlowOperation() const
Definition: Operation.cc:294
OperationPimpl::setDagCode
void setDagCode(int index, const TCEString &code)
Definition: OperationPimpl.cc:232
OperationPimpl::numberOfInputs
int numberOfInputs() const