CIRCT  20.0.0git
Classes | Namespaces | Macros | Functions | Variables
FlattenMemRefs.cpp File Reference
#include "circt/Transforms/Passes.h"
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
#include "mlir/Conversion/LLVMCommon/Pattern.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/IR/BuiltinDialect.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/OperationSupport.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Transforms/DialectConversion.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/MathExtras.h"
#include "circt/Transforms/Passes.h.inc"
Include dependency graph for FlattenMemRefs.cpp:

Go to the source code of this file.

Classes

struct  FunctionRewrite
 A struct for maintaining function declarations which needs to be rewritten, if they contain memref arguments that was flattened. More...
 

Namespaces

 circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 

Macros

#define GEN_PASS_DEF_FLATTENMEMREF
 
#define GEN_PASS_DEF_FLATTENMEMREFCALLS
 

Functions

static std::atomic< unsigned > globalCounter (0)
 
static MemRefType getFlattenedMemRefType (MemRefType type)
 
static std::string getFlattenedMemRefName (StringAttr baseName, MemRefType type)
 
static Value flattenIndices (ConversionPatternRewriter &rewriter, Operation *op, ValueRange indices, MemRefType memrefType)
 
static bool hasMultiDimMemRef (ValueRange values)
 
std::unique_ptr< mlir::Pass > circt::createFlattenMemRefPass ()
 
std::unique_ptr< mlir::Pass > circt::createFlattenMemRefCallsPass ()
 

Variables

static DenseMap< StringAttr, StringAttr > globalNameMap
 

Macro Definition Documentation

◆ GEN_PASS_DEF_FLATTENMEMREF

#define GEN_PASS_DEF_FLATTENMEMREF

Definition at line 31 of file FlattenMemRefs.cpp.

◆ GEN_PASS_DEF_FLATTENMEMREFCALLS

#define GEN_PASS_DEF_FLATTENMEMREFCALLS

Definition at line 32 of file FlattenMemRefs.cpp.

Function Documentation

◆ flattenIndices()

static Value flattenIndices ( ConversionPatternRewriter &  rewriter,
Operation *  op,
ValueRange  indices,
MemRefType  memrefType 
)
static

Definition at line 67 of file FlattenMemRefs.cpp.

References assert().

◆ getFlattenedMemRefName()

static std::string getFlattenedMemRefName ( StringAttr  baseName,
MemRefType  type 
)
static

Definition at line 58 of file FlattenMemRefs.cpp.

References globalCounter().

◆ getFlattenedMemRefType()

static MemRefType getFlattenedMemRefType ( MemRefType  type)
static

Definition at line 53 of file FlattenMemRefs.cpp.

References circt::calyx::direction::get().

◆ globalCounter()

static std::atomic<unsigned> globalCounter ( )
static

Referenced by getFlattenedMemRefName().

◆ hasMultiDimMemRef()

static bool hasMultiDimMemRef ( ValueRange  values)
static

Definition at line 115 of file FlattenMemRefs.cpp.

References circt::isUniDimensional().

Variable Documentation

◆ globalNameMap

DenseMap<StringAttr, StringAttr> globalNameMap
static

Definition at line 51 of file FlattenMemRefs.cpp.