CIRCT
20.0.0git
|
Emit a systemc.cpp.call_indirect operation. More...
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) |
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.
|
inlineoverrideprivate |
Definition at line 485 of file SystemCEmissionPatterns.cpp.
|
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.
|
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.
|
inlineprivate |
Definition at line 500 of file SystemCEmissionPatterns.cpp.
References circt::ExportSystemC::InlineEmitter::emitWithParensOnLowerPrecedence(), and circt::ExportSystemC::EmissionPrinter::getInlinable().