|
CIRCT 22.0.0git
|
#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/Passes.h"#include "circt/Dialect/HW/HWAttributes.h"#include "circt/Dialect/HW/HWOpInterfaces.h"#include "circt/Support/Debug.h"#include "mlir/IR/ImplicitLocOpBuilder.h"#include "mlir/IR/Threading.h"#include "mlir/Pass/Pass.h"#include "llvm/ADT/APSInt.h"#include "llvm/ADT/BitVector.h"#include "llvm/Support/Debug.h"#include "circt/Dialect/FIRRTL/Passes.h.inc"
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 | 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. | |
| static Type | mapLoweredType (Type type, FIRRTLBaseType fieldType) |
| Return fieldType or fieldType as same ref as type. | |
| static bool | isOneDimVectorType (FIRRTLType type) |
| Return true if the type is a 1d vector type or ground type. | |
| static bool | containsBundleType (FIRRTLType type) |
| Return true if the type has a bundle type as subtype. | |
| static bool | isPreservableAggregateType (Type type, PreserveAggregate::PreserveMode mode) |
| Return true if we can preserve the type. | |
| static bool | peelType (Type type, SmallVectorImpl< FlatBundleFieldEntry > &fields, PreserveAggregate::PreserveMode mode) |
| Peel one layer of an aggregate type into its components. | |
| static bool | isNotSubAccess (Operation *op) |
| Return if something is not a normal subaccess. | |
| static SmallVector< Operation * > | getSAWritePath (Operation *op) |
| Look through and collect subfields leading to a subaccess. | |
| static MemOp | cloneMemWithNewType (ImplicitLocOpBuilder *b, MemOp op, FlatBundleFieldEntry field) |
| Clone memory for the specified field. Returns null op on error. | |
| static Value | cloneAccess (ImplicitLocOpBuilder *builder, Operation *op, Value rhs) |
| #define DEBUG_TYPE "firrtl-lower-types" |
Definition at line 46 of file LowerTypes.cpp.
| #define GEN_PASS_DEF_LOWERFIRRTLTYPES |
Definition at line 50 of file LowerTypes.cpp.
|
static |
Definition at line 829 of file LowerTypes.cpp.
|
static |
Clone memory for the specified field. Returns null op on error.
Definition at line 224 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 113 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case(), and containsBundleType().
Referenced by containsBundleType(), and isPreservableAggregateType().
|
static |
Look through and collect subfields leading to a subaccess.
Definition at line 210 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 200 of file LowerTypes.cpp.
Referenced by getSAWritePath().
|
static |
Return true if the type is a 1d vector type or ground type.
Definition at line 100 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 124 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 87 of file LowerTypes.cpp.
References circt::firrtl::mapBaseType().
Referenced by mapLoweredType().
|
static |
Return fieldType or fieldType as same ref as type.
Definition at line 92 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 163 of file LowerTypes.cpp.
References circt::firrtl::FIRRTLTypeSwitch< T, ResultT >::Case(), and isPreservableAggregateType().