CIRCT  19.0.0git
Functions
LowerCHIRRTL.cpp File Reference
#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"
Include dependency graph for LowerCHIRRTL.cpp:

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...
 

Function Documentation

◆ connectLeafsTo()

static void connectLeafsTo ( ImplicitLocOpBuilder &  builder,
Value  bundle,
Value  value 
)
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().

◆ forEachLeaf()

static void forEachLeaf ( ImplicitLocOpBuilder &  builder,
Value  value,
llvm::function_ref< void(Value)>  func 
)
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().

◆ memDirAttrToPortKind()

static MemOp::PortKind memDirAttrToPortKind ( MemDirAttr  direction)
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.