CIRCT  19.0.0git
Private Member Functions | List of all members
CallIndirectEmitter Class Reference

Emit a systemc.cpp.call_indirect operation. More...

Inheritance diagram for CallIndirectEmitter:
Inheritance graph
[legend]
Collaboration diagram for CallIndirectEmitter:
Collaboration graph
[legend]

Private Member Functions

MatchResult matchInlinable (Value value) override
 Checks if this pattern is applicable to the given value to emit an inlinable expression. More...
 
void emitInlined (Value value, EmissionPrinter &p) override
 
void emitStatement (CallIndirectOp op, EmissionPrinter &p) override
 Emit zero (default) or more statements for the given operation. More...
 
void printCall (CallIndirectOp op, EmissionPrinter &p)
 

Additional Inherited Members

- Public Member Functions inherited from circt::ExportSystemC::OpEmissionPattern< CallIndirectOp >
 OpEmissionPattern (MLIRContext *context)
 
void emitStatement (mlir::Operation *op, EmissionPrinter &p) final
 Emit zero or more statements for the given operation. More...
 
MatchResult matchInlinable (Value value) override
 Checks if this pattern is applicable to the given value to emit an inlinable expression. More...
 
bool matchStatement (mlir::Operation *op) override
 Checks if this pattern is applicable to the given operation for statement emission. More...
 
void emitInlined (mlir::Value value, EmissionPrinter &p) override
 Emit the expression for the given value. More...
 
- Public Member Functions inherited from circt::ExportSystemC::OpEmissionPatternBase
 OpEmissionPatternBase (StringRef operationName, MLIRContext *context)
 
virtual ~OpEmissionPatternBase ()=default
 
- Public Member Functions inherited from circt::ExportSystemC::PatternBase
 PatternBase (const void *rootValue)
 
const void * getRootValue () const
 Get a unique identifier for the C++ type the pattern is matching on. More...
 
- Static Public Member Functions inherited from circt::ExportSystemC::PatternBase
template<typename E , typename... Args>
static std::unique_ptr< E > create (Args &&...args)
 

Detailed Description

Emit a systemc.cpp.call_indirect operation.

If it has no result, it is treated as a statement, otherwise as an expression that will always be inlined. That means, an emission preparation pass has to insert a VariableOp to bind the call result to such that reordering of the call cannot lead to incorrectness due to interference of side-effects.

Definition at line 475 of file SystemCEmissionPatterns.cpp.

Member Function Documentation

◆ emitInlined()

void CallIndirectEmitter::emitInlined ( Value  value,
EmissionPrinter p 
)
inlineoverrideprivate

Definition at line 485 of file SystemCEmissionPatterns.cpp.

◆ emitStatement()

void CallIndirectEmitter::emitStatement ( CallIndirectOp  op,
EmissionPrinter p 
)
inlineoverrideprivatevirtual

Emit zero (default) or more statements for the given operation.

Reimplemented from circt::ExportSystemC::OpEmissionPattern< CallIndirectOp >.

Definition at line 489 of file SystemCEmissionPatterns.cpp.

◆ matchInlinable()

MatchResult CallIndirectEmitter::matchInlinable ( Value  value)
inlineoverrideprivatevirtual

Checks if this pattern is applicable to the given value to emit an inlinable expression.

Additionally returns information such as the precedence to the pattern where this pattern's result is to be inlined.

Implements circt::ExportSystemC::OpEmissionPatternBase.

Definition at line 478 of file SystemCEmissionPatterns.cpp.

◆ printCall()

void CallIndirectEmitter::printCall ( CallIndirectOp  op,
EmissionPrinter p 
)
inlineprivate

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