CIRCT  20.0.0git
Classes | Namespaces | Macros | Functions
LowerClasses.cpp File Reference
#include "circt/Dialect/FIRRTL/FIRRTLAnnotationHelper.h"
#include "circt/Dialect/FIRRTL/FIRRTLAnnotations.h"
#include "circt/Dialect/FIRRTL/FIRRTLDialect.h"
#include "circt/Dialect/FIRRTL/FIRRTLTypes.h"
#include "circt/Dialect/FIRRTL/FIRRTLUtils.h"
#include "circt/Dialect/FIRRTL/OwningModuleCache.h"
#include "circt/Dialect/FIRRTL/Passes.h"
#include "circt/Dialect/HW/InnerSymbolNamespace.h"
#include "circt/Dialect/OM/OMAttributes.h"
#include "circt/Dialect/OM/OMOps.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/Threading.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Support/LogicalResult.h"
#include "mlir/Transforms/DialectConversion.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "circt/Dialect/FIRRTL/Passes.h.inc"
Include dependency graph for LowerClasses.cpp:

Go to the source code of this file.

Classes

struct  FIntegerConstantOpConversion
 
struct  BoolConstantOpConversion
 
struct  DoubleConstantOpConversion
 
struct  StringConstantOpConversion
 
struct  ListCreateOpConversion
 
struct  ListConcatOpConversion
 
struct  IntegerAddOpConversion
 
struct  IntegerMulOpConversion
 
struct  IntegerShrOpConversion
 
struct  IntegerShlOpConversion
 
struct  PathOpConversion
 
struct  WireOpConversion
 
struct  AnyCastOpConversion
 
struct  ObjectSubfieldOpConversion
 
struct  ClassFieldsOpConversion
 
struct  ObjectOpConversion
 
struct  ClassOpSignatureConversion
 
struct  ClassExternOpSignatureConversion
 
struct  ObjectFieldOpConversion
 

Namespaces

 circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 
 circt::firrtl
 

Macros

#define GEN_PASS_DEF_LOWERCLASSES
 

Functions

void checkAddContainingModulePorts (bool hasContainingModule, OpBuilder builder, SmallVector< Attribute > &fieldNames, SmallVector< NamedAttribute > &fieldTypes)
 
static om::ClassLike convertExtClass (FModuleLike moduleLike, OpBuilder builder, Twine name, ArrayRef< StringRef > formalParamNames, bool hasContainingModule)
 
static om::ClassLike convertClass (FModuleLike moduleLike, OpBuilder builder, Twine name, ArrayRef< StringRef > formalParamNames, bool hasContainingModule)
 
static LogicalResult updateObjectInClass (firrtl::ObjectOp firrtlObject, const PathInfoTable &pathInfoTable, SmallVectorImpl< RtlPortsInfo > &rtlPortsToCreate, std::mutex &intraPassMutex, SmallVectorImpl< Operation * > &opsToErase)
 
static LogicalResult updateInstanceInClass (InstanceOp firrtlInstance, hw::HierPathOp hierPath, InstanceGraph &instanceGraph, const PathInfoTable &pathInfoTable, SmallVectorImpl< Operation * > &opsToErase)
 
static LogicalResult updateInstanceInModule (InstanceOp firrtlInstance, InstanceGraph &instanceGraph, SmallVectorImpl< Operation * > &opsToErase)
 
static LogicalResult updateInstancesInModule (FModuleOp moduleOp, InstanceGraph &instanceGraph, SmallVectorImpl< Operation * > &opsToErase)
 
static LogicalResult updateObjectsAndInstancesInClass (om::ClassOp classOp, InstanceGraph &instanceGraph, const LoweringState &state, const PathInfoTable &pathInfoTable, SmallVectorImpl< RtlPortsInfo > &rtlPortsToCreate, std::mutex &intraPassMutex, SmallVectorImpl< Operation * > &opsToErase)
 
static LogicalResult convertClassLike (om::ClassLike classOp, TypeConverter typeConverter, ConversionPatternRewriter &rewriter)
 
static void populateConversionTarget (ConversionTarget &target)
 
static void populateTypeConverter (TypeConverter &converter)
 
static void populateRewritePatterns (RewritePatternSet &patterns, TypeConverter &converter, const PathInfoTable &pathInfoTable, const DenseMap< StringAttr, firrtl::ClassType > &classTypeTable)
 

Macro Definition Documentation

◆ GEN_PASS_DEF_LOWERCLASSES

#define GEN_PASS_DEF_LOWERCLASSES

Definition at line 35 of file LowerClasses.cpp.

Function Documentation

◆ checkAddContainingModulePorts()

void checkAddContainingModulePorts ( bool  hasContainingModule,
OpBuilder  builder,
SmallVector< Attribute > &  fieldNames,
SmallVector< NamedAttribute > &  fieldTypes 
)

Definition at line 969 of file LowerClasses.cpp.

References circt::calyx::direction::get().

Referenced by convertClass(), and convertExtClass().

◆ convertClass()

static om::ClassLike convertClass ( FModuleLike  moduleLike,
OpBuilder  builder,
Twine  name,
ArrayRef< StringRef >  formalParamNames,
bool  hasContainingModule 
)
static

◆ convertClassLike()

static LogicalResult convertClassLike ( om::ClassLike  classOp,
TypeConverter  typeConverter,
ConversionPatternRewriter &  rewriter 
)
static

◆ convertExtClass()

static om::ClassLike convertExtClass ( FModuleLike  moduleLike,
OpBuilder  builder,
Twine  name,
ArrayRef< StringRef >  formalParamNames,
bool  hasContainingModule 
)
static

◆ populateConversionTarget()

static void populateConversionTarget ( ConversionTarget &  target)
static

Definition at line 1998 of file LowerClasses.cpp.

◆ populateRewritePatterns()

static void populateRewritePatterns ( RewritePatternSet &  patterns,
TypeConverter &  converter,
const PathInfoTable &  pathInfoTable,
const DenseMap< StringAttr, firrtl::ClassType > &  classTypeTable 
)
static

Definition at line 2132 of file LowerClasses.cpp.

◆ populateTypeConverter()

static void populateTypeConverter ( TypeConverter &  converter)
static

Definition at line 2044 of file LowerClasses.cpp.

References assert(), elementType, and circt::calyx::direction::get().

◆ updateInstanceInClass()

static LogicalResult updateInstanceInClass ( InstanceOp  firrtlInstance,
hw::HierPathOp  hierPath,
InstanceGraph instanceGraph,
const PathInfoTable &  pathInfoTable,
SmallVectorImpl< Operation * > &  opsToErase 
)
static

◆ updateInstanceInModule()

static LogicalResult updateInstanceInModule ( InstanceOp  firrtlInstance,
InstanceGraph instanceGraph,
SmallVectorImpl< Operation * > &  opsToErase 
)
static

◆ updateInstancesInModule()

static LogicalResult updateInstancesInModule ( FModuleOp  moduleOp,
InstanceGraph instanceGraph,
SmallVectorImpl< Operation * > &  opsToErase 
)
static

Definition at line 1485 of file LowerClasses.cpp.

References assert(), and updateInstanceInModule().

◆ updateObjectInClass()

static LogicalResult updateObjectInClass ( firrtl::ObjectOp  firrtlObject,
const PathInfoTable &  pathInfoTable,
SmallVectorImpl< RtlPortsInfo > &  rtlPortsToCreate,
std::mutex &  intraPassMutex,
SmallVectorImpl< Operation * > &  opsToErase 
)
static

◆ updateObjectsAndInstancesInClass()

static LogicalResult updateObjectsAndInstancesInClass ( om::ClassOp  classOp,
InstanceGraph instanceGraph,
const LoweringState &  state,
const PathInfoTable &  pathInfoTable,
SmallVectorImpl< RtlPortsInfo > &  rtlPortsToCreate,
std::mutex &  intraPassMutex,
SmallVectorImpl< Operation * > &  opsToErase 
)
static

Definition at line 1499 of file LowerClasses.cpp.

References updateInstanceInClass(), and updateObjectInClass().