CIRCT 22.0.0git
Loading...
Searching...
No Matches
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 "circt/Dialect/FIRRTL/Passes.h.inc"
Include dependency graph for LowerClasses.cpp:

Go to the source code of this file.

Namespaces

namespace  circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 
namespace  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 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 34 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.

Referenced by convertClass(), and convertExtClass().

◆ convertClass()

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

Definition at line 1004 of file LowerClasses.cpp.

References checkAddContainingModulePorts().

◆ convertExtClass()

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

Definition at line 980 of file LowerClasses.cpp.

References checkAddContainingModulePorts().

◆ populateConversionTarget()

static void populateConversionTarget ( ConversionTarget &  target)
static

Definition at line 2029 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 2163 of file LowerClasses.cpp.

◆ populateTypeConverter()

static void populateTypeConverter ( TypeConverter &  converter)
static

Definition at line 2075 of file LowerClasses.cpp.

References assert(), and elementType.

◆ 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 1487 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

Definition at line 1238 of file LowerClasses.cpp.

References assert(), getLoc(), and numElements.

Referenced by updateObjectsAndInstancesInClass().

◆ 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 1501 of file LowerClasses.cpp.

References updateInstanceInClass(), and updateObjectInClass().