CIRCT  20.0.0git
Private Member Functions | List of all members
CallEmitter Class Reference

Emit a systemc.cpp.call operation. More...

Inheritance diagram for CallEmitter:
Inheritance graph
[legend]
Collaboration diagram for CallEmitter:
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 (CallOp op, EmissionPrinter &p) override
 Emit zero (default) or more statements for the given operation. More...
 
void printCall (CallOp op, EmissionPrinter &p)
 

Additional Inherited Members

- Public Member Functions inherited from circt::ExportSystemC::OpEmissionPattern< CallOp >
 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 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 437 of file SystemCEmissionPatterns.cpp.

Member Function Documentation

◆ emitInlined()

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

Definition at line 446 of file SystemCEmissionPatterns.cpp.

◆ emitStatement()

void CallEmitter::emitStatement ( CallOp  op,
EmissionPrinter p 
)
inlineoverrideprivatevirtual

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

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

Definition at line 450 of file SystemCEmissionPatterns.cpp.

◆ matchInlinable()

MatchResult CallEmitter::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 440 of file SystemCEmissionPatterns.cpp.

◆ printCall()

void CallEmitter::printCall ( CallOp  op,
EmissionPrinter p 
)
inlineprivate

Definition at line 461 of file SystemCEmissionPatterns.cpp.


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