CIRCT  19.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/IRMapping.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  IntegerAddOpConversion
 
struct  IntegerMulOpConversion
 
struct  IntegerShrOpConversion
 
struct  PathOpConversion
 
struct  WireOpConversion
 
struct  AnyCastOpConversion
 
struct  ObjectSubfieldOpConversion
 
struct  ClassFieldOpConversion
 
struct  ClassExternFieldOpConversion
 
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

static LogicalResult updateObjectInClass (firrtl::ObjectOp firrtlObject, const PathInfoTable &pathInfoTable, 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< 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 36 of file LowerClasses.cpp.

Function Documentation

◆ populateConversionTarget()

static void populateConversionTarget ( ConversionTarget &  target)
static

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

◆ populateTypeConverter()

static void populateTypeConverter ( TypeConverter &  converter)
static

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

References assert(), and updateInstanceInModule().

◆ updateObjectInClass()

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

Definition at line 1022 of file LowerClasses.cpp.

References circt::calyx::direction::get(), and numElements.

Referenced by updateObjectsAndInstancesInClass().

◆ updateObjectsAndInstancesInClass()

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

Definition at line 1264 of file LowerClasses.cpp.

References updateInstanceInClass(), and updateObjectInClass().