CIRCT
19.0.0git
|
#include "PassDetails.h"
#include "circt/Dialect/FIRRTL/AnnotationDetails.h"
#include "circt/Dialect/FIRRTL/FIRRTLAttributes.h"
#include "circt/Dialect/FIRRTL/FIRRTLOps.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/FIRRTL/Passes.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"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "firrtl-lower-types" |
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 52 of file LowerTypes.cpp.
|
static |
Definition at line 832 of file LowerTypes.cpp.
References builder.
|
static |
Clone memory for the specified field. Returns null op on error.
Definition at line 230 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 119 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 216 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 206 of file LowerTypes.cpp.
Referenced by getSAWritePath().
|
static |
Return true if the type is a 1d vector type or ground type.
Definition at line 106 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 130 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 93 of file LowerTypes.cpp.
References circt::firrtl::mapBaseType().
Referenced by mapLoweredType().
|
static |
Return fieldType or fieldType as same ref as type.
Definition at line 98 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 169 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case(), and isPreservableAggregateType().