CIRCT
19.0.0git
|
#include "PassDetails.h"
#include "circt/Dialect/FIRRTL/CHIRRTLVisitors.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/Support/LLVM.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/OperationSupport.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/TypeSwitch.h"
Go to the source code of this file.
Functions | |
static void | forEachLeaf (ImplicitLocOpBuilder &builder, Value value, llvm::function_ref< void(Value)> func) |
Performs the callback for each leaf element of a value. More... | |
static void | connectLeafsTo (ImplicitLocOpBuilder &builder, Value bundle, Value value) |
Drive a value to all leafs of the input aggregate value. More... | |
static MemOp::PortKind | memDirAttrToPortKind (MemDirAttr direction) |
Converts a CHIRRTL memory port direction to a MemoryOp port type. More... | |
|
static |
Drive a value to all leafs of the input aggregate value.
This only makes sense when all leaf values have the same type, since the same value will be connected to each leaf. This does not work for aggregates with flip types.
Definition at line 142 of file LowerCHIRRTL.cpp.
References builder, circt::firrtl::emitConnect(), and forEachLeaf().
|
static |
Performs the callback for each leaf element of a value.
This will create any subindex and subfield operations needed to access the leaf values of the aggregate value.
Definition at line 125 of file LowerCHIRRTL.cpp.
References builder.
Referenced by connectLeafsTo().
|
static |
Converts a CHIRRTL memory port direction to a MemoryOp port type.
The biggest difference is that there is no match for the Infer port type.
Definition at line 162 of file LowerCHIRRTL.cpp.