CIRCT
20.0.0git
|
#include "circt/Dialect/FIRRTL/FIRRTLOps.h"
#include "circt/Dialect/FIRRTL/Passes.h"
#include "mlir/Pass/Pass.h"
#include "circt/Dialect/FIRRTL/AnnotationDetails.h"
#include "circt/Dialect/FIRRTL/FIRRTLAttributes.h"
#include "circt/Dialect/FIRRTL/FIRRTLTypes.h"
#include "circt/Dialect/FIRRTL/FIRRTLUtils.h"
#include "circt/Dialect/FIRRTL/FIRRTLVisitors.h"
#include "circt/Dialect/FIRRTL/NLATable.h"
#include "circt/Dialect/FIRRTL/Namespace.h"
#include "circt/Dialect/HW/HWAttributes.h"
#include "circt/Dialect/HW/HWOpInterfaces.h"
#include "circt/Dialect/SV/SVOps.h"
#include "circt/Support/Debug.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/Threading.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Parallel.h"
#include "circt/Dialect/FIRRTL/Passes.h.inc"
Go to the source code of this file.
Namespaces | |
circt | |
The InstanceGraph op interface, see InstanceGraphInterface.td for more details. | |
circt::firrtl | |
Macros | |
#define | DEBUG_TYPE "firrtl-lower-types" |
#define | GEN_PASS_DEF_LOWERFIRRTLTYPES |
Functions | |
static FIRRTLType | mapLoweredType (FIRRTLType type, FIRRTLBaseType fieldType) |
Return fieldType or fieldType as same ref as type. More... | |
static Type | mapLoweredType (Type type, FIRRTLBaseType fieldType) |
Return fieldType or fieldType as same ref as type. More... | |
static bool | isOneDimVectorType (FIRRTLType type) |
Return true if the type is a 1d vector type or ground type. More... | |
static bool | containsBundleType (FIRRTLType type) |
Return true if the type has a bundle type as subtype. More... | |
static bool | isPreservableAggregateType (Type type, PreserveAggregate::PreserveMode mode) |
Return true if we can preserve the type. More... | |
static bool | peelType (Type type, SmallVectorImpl< FlatBundleFieldEntry > &fields, PreserveAggregate::PreserveMode mode) |
Peel one layer of an aggregate type into its components. More... | |
static bool | isNotSubAccess (Operation *op) |
Return if something is not a normal subaccess. More... | |
static SmallVector< Operation * > | getSAWritePath (Operation *op) |
Look through and collect subfields leading to a subaccess. More... | |
static MemOp | cloneMemWithNewType (ImplicitLocOpBuilder *b, MemOp op, FlatBundleFieldEntry field) |
Clone memory for the specified field. Returns null op on error. More... | |
static Value | cloneAccess (ImplicitLocOpBuilder *builder, Operation *op, Value rhs) |
#define DEBUG_TYPE "firrtl-lower-types" |
Definition at line 54 of file LowerTypes.cpp.
#define GEN_PASS_DEF_LOWERFIRRTLTYPES |
Definition at line 58 of file LowerTypes.cpp.
|
static |
Definition at line 841 of file LowerTypes.cpp.
|
static |
Clone memory for the specified field. Returns null op on error.
Definition at line 239 of file LowerTypes.cpp.
References circt::firrtl::Annotation::getDict(), circt::firrtl::Annotation::getFieldID(), circt::hw::FieldIdImpl::getMaxFieldID(), and circt::firrtl::Annotation::setMember().
|
static |
Return true if the type has a bundle type as subtype.
Definition at line 128 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case().
Referenced by isPreservableAggregateType().
|
static |
Look through and collect subfields leading to a subaccess.
Definition at line 225 of file LowerTypes.cpp.
References isNotSubAccess().
|
static |
Return if something is not a normal subaccess.
Non-normal includes zero-length vectors and constant indexes (which are really subindexes).
Definition at line 215 of file LowerTypes.cpp.
Referenced by getSAWritePath().
|
static |
Return true if the type is a 1d vector type or ground type.
Definition at line 115 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case().
Referenced by isPreservableAggregateType().
|
static |
Return true if we can preserve the type.
Definition at line 139 of file LowerTypes.cpp.
References circt::firrtl::PreserveAggregate::All, containsBundleType(), circt::firrtl::hasZeroBitWidth(), isOneDimVectorType(), circt::firrtl::PreserveAggregate::None, circt::firrtl::PreserveAggregate::OneDimVec, and circt::firrtl::PreserveAggregate::Vec.
Referenced by peelType().
|
static |
Return fieldType or fieldType as same ref as type.
Definition at line 102 of file LowerTypes.cpp.
References circt::firrtl::mapBaseType().
Referenced by mapLoweredType().
|
static |
Return fieldType or fieldType as same ref as type.
Definition at line 107 of file LowerTypes.cpp.
References mapLoweredType().
|
static |
Peel one layer of an aggregate type into its components.
Type may be complex, but empty, in which case fields is empty, but the return is true.
Definition at line 178 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case(), and isPreservableAggregateType().