CIRCT  20.0.0git
Classes | Typedefs | Enumerations | Functions
circt::ExportSystemC Namespace Reference

Classes

class  MatchResult
 This class allows a pattern's match function for inlining to pass its result's precedence to the pattern that requested the expression. More...
 
class  PatternBase
 This is indented to be the base class for all emission patterns. More...
 
struct  OpEmissionPatternBase
 This is intended to be the base class for all emission patterns matching on operations. More...
 
struct  TypeEmissionPatternBase
 This is intended to be the base class for all emission patterns matching on types. More...
 
struct  AttrEmissionPatternBase
 This is intended to be the base class for all emission patterns matching on attributes. More...
 
struct  OpEmissionPattern
 This is a convenience class providing default implementations for operation emission patterns. More...
 
struct  TypeEmissionPattern
 This is a convenience class providing default implementations for type emission patterns. More...
 
struct  AttrEmissionPattern
 This is a convenience class providing default implementations for attribute emission patterns. More...
 
class  EmissionPatternSet
 This class collects a set of emission patterns with base type 'PatternTy'. More...
 
class  FrozenEmissionPatternSet
 This class intends to collect a set of emission patterns in a way to provide fast lookups, but does not allow to add more patterns after construction. More...
 
class  EmissionPrinter
 This is intended to be the driving class for all pattern-based IR emission. More...
 
class  InlineEmitter
 This class is returned to a pattern that requested inlined emission of a value. More...
 

Typedefs

using OpEmissionPatternSet = EmissionPatternSet< OpEmissionPatternBase >
 
using TypeEmissionPatternSet = EmissionPatternSet< TypeEmissionPatternBase >
 
using AttrEmissionPatternSet = EmissionPatternSet< AttrEmissionPatternBase >
 
using FrozenOpEmissionPatternSet = FrozenEmissionPatternSet< OpEmissionPatternBase, OperationName >
 
using FrozenTypeEmissionPatternSet = FrozenEmissionPatternSet< TypeEmissionPatternBase, TypeID >
 
using FrozenAttrEmissionPatternSet = FrozenEmissionPatternSet< AttrEmissionPatternBase, TypeID >
 

Enumerations

enum class  Precedence {
  LIT = 0 , VAR = 0 , SCOPE_RESOLUTION = 1 , POSTFIX_INC = 2 ,
  POSTFIX_DEC = 2 , FUNCTIONAL_CAST = 2 , FUNCTION_CALL = 2 , SUBSCRIPT = 2 ,
  MEMBER_ACCESS = 2 , PREFIX_INC = 3 , PREFIX_DEC = 3 , NOT = 3 ,
  CAST = 3 , DEREFERENCE = 3 , ADDRESS_OF = 3 , SIZEOF = 3 ,
  NEW = 3 , DELETE = 3 , POINTER_TO_MEMBER = 4 , MUL = 5 ,
  DIV = 5 , MOD = 5 , ADD = 6 , SUB = 6 ,
  SHL = 7 , SHR = 7 , RELATIONAL = 9 , EQUALITY = 10 ,
  BITWISE_AND = 11 , BITWISE_XOR = 12 , BITWISE_OR = 13 , LOGICAL_AND = 14 ,
  LOGICAL_OR = 15 , TERNARY = 16 , THROW = 16 , ASSIGN = 16 ,
  COMMA = 17
}
 This enum encodes the precedence of C++ expressions. More...
 

Functions

LogicalResult exportSystemC (ModuleOp module, llvm::raw_ostream &os)
 
LogicalResult exportSplitSystemC (ModuleOp module, StringRef directory)
 
void registerExportSystemCTranslation ()
 
void populateBuiltinOpEmitters (OpEmissionPatternSet &patterns, MLIRContext *context)
 Register Builtin operation emission patterns. More...
 
void populateBuiltinTypeEmitters (TypeEmissionPatternSet &patterns)
 Register Builtin type emission patterns. More...
 
void populateBuiltinAttrEmitters (AttrEmissionPatternSet &patterns)
 Register Builtin attribute emission patterns. More...
 
void populateEmitCOpEmitters (OpEmissionPatternSet &patterns, MLIRContext *context)
 Register EmitC operation emission patterns. More...
 
void populateEmitCTypeEmitters (TypeEmissionPatternSet &patterns)
 Register EmitC type emission patterns. More...
 
void populateEmitCAttrEmitters (AttrEmissionPatternSet &patterns)
 Register EmitC attribute emission patterns. More...
 
void populateHWEmitters (OpEmissionPatternSet &patterns, MLIRContext *context)
 
void populateSystemCOpEmitters (OpEmissionPatternSet &patterns, MLIRContext *context)
 Register SystemC operation emission patterns. More...
 
void populateSystemCTypeEmitters (TypeEmissionPatternSet &patterns)
 Register SystemC type emission patterns. More...
 
void registerAllOpEmitters (OpEmissionPatternSet &patterns, MLIRContext *context)
 Collects the operation emission patterns of all supported dialects. More...
 
void registerAllTypeEmitters (TypeEmissionPatternSet &patterns)
 Collects the type emission patterns of all supported dialects. More...
 
void registerAllAttrEmitters (AttrEmissionPatternSet &patterns)
 

Typedef Documentation

◆ AttrEmissionPatternSet

Definition at line 35 of file EmissionPatternSupport.h.

◆ FrozenAttrEmissionPatternSet

Definition at line 41 of file EmissionPatternSupport.h.

◆ FrozenOpEmissionPatternSet

Definition at line 37 of file EmissionPatternSupport.h.

◆ FrozenTypeEmissionPatternSet

Definition at line 39 of file EmissionPatternSupport.h.

◆ OpEmissionPatternSet

Definition at line 33 of file EmissionPatternSupport.h.

◆ TypeEmissionPatternSet

Definition at line 34 of file EmissionPatternSupport.h.

Enumeration Type Documentation

◆ Precedence

This enum encodes the precedence of C++ expressions.

A lower number means higher precedence. Source: https://en.cppreference.com/w/cpp/language/operator_precedence

Enumerator
LIT 
VAR 
SCOPE_RESOLUTION 
POSTFIX_INC 
POSTFIX_DEC 
FUNCTIONAL_CAST 
FUNCTION_CALL 
SUBSCRIPT 
MEMBER_ACCESS 
PREFIX_INC 
PREFIX_DEC 
NOT 
CAST 
DEREFERENCE 
ADDRESS_OF 
SIZEOF 
NEW 
DELETE 
POINTER_TO_MEMBER 
MUL 
DIV 
MOD 
ADD 
SUB 
SHL 
SHR 
RELATIONAL 
EQUALITY 
BITWISE_AND 
BITWISE_XOR 
BITWISE_OR 
LOGICAL_AND 
LOGICAL_OR 
TERNARY 
THROW 
ASSIGN 
COMMA 

Definition at line 33 of file EmissionPattern.h.

Function Documentation

◆ exportSplitSystemC()

LogicalResult circt::ExportSystemC::exportSplitSystemC ( ModuleOp  module,
StringRef  directory 
)

Definition at line 87 of file ExportSystemC.cpp.

References append(), and emitFile().

Referenced by registerExportSystemCTranslation().

◆ exportSystemC()

LogicalResult circt::ExportSystemC::exportSystemC ( ModuleOp  module,
llvm::raw_ostream &  os 
)

Definition at line 82 of file ExportSystemC.cpp.

References emitFile().

Referenced by registerExportSystemCTranslation().

◆ populateBuiltinAttrEmitters()

void circt::ExportSystemC::populateBuiltinAttrEmitters ( AttrEmissionPatternSet patterns)

Register Builtin attribute emission patterns.

Definition at line 129 of file BuiltinEmissionPatterns.cpp.

Referenced by registerAllAttrEmitters().

◆ populateBuiltinOpEmitters()

void circt::ExportSystemC::populateBuiltinOpEmitters ( OpEmissionPatternSet patterns,
MLIRContext *  context 
)

Register Builtin operation emission patterns.

Definition at line 119 of file BuiltinEmissionPatterns.cpp.

Referenced by registerAllOpEmitters().

◆ populateBuiltinTypeEmitters()

void circt::ExportSystemC::populateBuiltinTypeEmitters ( TypeEmissionPatternSet patterns)

Register Builtin type emission patterns.

Definition at line 124 of file BuiltinEmissionPatterns.cpp.

Referenced by registerAllTypeEmitters().

◆ populateEmitCAttrEmitters()

void circt::ExportSystemC::populateEmitCAttrEmitters ( AttrEmissionPatternSet patterns)

Register EmitC attribute emission patterns.

Definition at line 249 of file EmitCEmissionPatterns.cpp.

Referenced by registerAllAttrEmitters().

◆ populateEmitCOpEmitters()

void circt::ExportSystemC::populateEmitCOpEmitters ( OpEmissionPatternSet patterns,
MLIRContext *  context 
)

Register EmitC operation emission patterns.

Definition at line 238 of file EmitCEmissionPatterns.cpp.

Referenced by registerAllOpEmitters().

◆ populateEmitCTypeEmitters()

void circt::ExportSystemC::populateEmitCTypeEmitters ( TypeEmissionPatternSet patterns)

Register EmitC type emission patterns.

Definition at line 244 of file EmitCEmissionPatterns.cpp.

Referenced by registerAllTypeEmitters().

◆ populateHWEmitters()

void circt::ExportSystemC::populateHWEmitters ( OpEmissionPatternSet patterns,
MLIRContext *  context 
)

Definition at line 49 of file HWEmissionPatterns.cpp.

Referenced by registerAllOpEmitters().

◆ populateSystemCOpEmitters()

void circt::ExportSystemC::populateSystemCOpEmitters ( OpEmissionPatternSet patterns,
MLIRContext *  context 
)

Register SystemC operation emission patterns.

Definition at line 576 of file SystemCEmissionPatterns.cpp.

Referenced by registerAllOpEmitters().

◆ populateSystemCTypeEmitters()

void circt::ExportSystemC::populateSystemCTypeEmitters ( TypeEmissionPatternSet patterns)

Register SystemC type emission patterns.

Definition at line 591 of file SystemCEmissionPatterns.cpp.

Referenced by registerAllTypeEmitters().

◆ registerAllAttrEmitters()

void circt::ExportSystemC::registerAllAttrEmitters ( AttrEmissionPatternSet patterns)
inline

Definition at line 42 of file RegisterAllEmitters.h.

References populateBuiltinAttrEmitters(), and populateEmitCAttrEmitters().

Referenced by emitFile().

◆ registerAllOpEmitters()

void circt::ExportSystemC::registerAllOpEmitters ( OpEmissionPatternSet patterns,
MLIRContext *  context 
)
inline

Collects the operation emission patterns of all supported dialects.

Definition at line 27 of file RegisterAllEmitters.h.

References populateBuiltinOpEmitters(), populateEmitCOpEmitters(), populateHWEmitters(), and populateSystemCOpEmitters().

Referenced by emitFile().

◆ registerAllTypeEmitters()

void circt::ExportSystemC::registerAllTypeEmitters ( TypeEmissionPatternSet patterns)
inline

Collects the type emission patterns of all supported dialects.

Definition at line 36 of file RegisterAllEmitters.h.

References populateBuiltinTypeEmitters(), populateEmitCTypeEmitters(), and populateSystemCTypeEmitters().

Referenced by emitFile().

◆ registerExportSystemCTranslation()

void circt::ExportSystemC::registerExportSystemCTranslation ( )

Definition at line 128 of file ExportSystemC.cpp.

References exportSplitSystemC(), and exportSystemC().

Referenced by circt::registerAllTranslations().