MLIR
20.0.0git
|
#include "mlir/Dialect/Affine/Passes.h"
#include "mlir/Dialect/Affine/Analysis/AffineAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/Utils.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Affine/Utils.h"
#include "mlir/Dialect/Arith/Utils/Utils.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/IR/Builders.h"
#include "mlir/Transforms/Passes.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Support/Debug.h"
#include "mlir/Dialect/Affine/Passes.h.inc"
Go to the source code of this file.
Namespaces | |
mlir | |
Include the generated interface declarations. | |
mlir::affine | |
Macros | |
#define | GEN_PASS_DEF_AFFINEPIPELINEDATATRANSFER |
#define | DEBUG_TYPE "affine-pipeline-data-transfer" |
Functions | |
static unsigned | getTagMemRefPos (Operation &dmaOp) |
static bool | doubleBuffer (Value oldMemRef, AffineForOp forOp) |
Doubles the buffer of the supplied memref on the specified 'affine.for' operation by adding a leading dimension of size two to the memref. More... | |
static bool | checkTagMatch (AffineDmaStartOp startOp, AffineDmaWaitOp waitOp) |
static void | findMatchingStartFinishInsts (AffineForOp forOp, SmallVectorImpl< std::pair< Operation *, Operation * >> &startWaitPairs) |
#define DEBUG_TYPE "affine-pipeline-data-transfer" |
Definition at line 36 of file PipelineDataTransfer.cpp.
#define GEN_PASS_DEF_AFFINEPIPELINEDATATRANSFER |
Definition at line 31 of file PipelineDataTransfer.cpp.
|
static |
Definition at line 151 of file PipelineDataTransfer.cpp.
References mlir::affine::AffineDmaStartOp::getTagIndices(), mlir::affine::AffineDmaWaitOp::getTagIndices(), mlir::affine::AffineDmaStartOp::getTagMemRef(), and mlir::affine::AffineDmaWaitOp::getTagMemRef().
Referenced by findMatchingStartFinishInsts().
|
static |
Doubles the buffer of the supplied memref on the specified 'affine.for' operation by adding a leading dimension of size two to the memref.
Replaces all uses of the old memref by the new one while indexing the newly added dimension by the loop IV of the specified 'affine.for' operation modulo 2. Returns false if such a replacement cannot be performed.
Definition at line 77 of file PipelineDataTransfer.cpp.
References copy(), mlir::OpBuilder::create(), mlir::OpBuilder::createOrFold(), mlir::detail::enumerate(), mlir::AffineMap::get(), mlir::Builder::getAffineDimExpr(), mlir::Value::getType(), mlir::affine::replaceAllMemRefUsesWith(), mlir::OpBuilder::setInsertionPointAfter(), mlir::MemRefType::Builder::setLayout(), and mlir::MemRefType::Builder::setShape().
|
static |
Definition at line 174 of file PipelineDataTransfer.cpp.
References checkTagMatch().
|
static |
Definition at line 63 of file PipelineDataTransfer.cpp.