MLIR
20.0.0git
|
#include <optional>
#include <utility>
#include "mlir/Analysis/SliceAnalysis.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
#include "mlir/Dialect/Linalg/IR/Linalg.h"
#include "mlir/Dialect/Linalg/Transforms/Transforms.h"
#include "mlir/Dialect/Linalg/Utils/Utils.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Dialect/Tensor/Utils/Utils.h"
#include "mlir/IR/PatternMatch.h"
Go to the source code of this file.
Functions | |
static AffineMap | scaleReductionDim (LinalgOp op, OpOperand &opOperand, unsigned reductionDimPos, int64_t reductionRatio) |
Rewrite f(i, j, k, ...) into f(i, j, k * ratio + kk, ...) TODO: Additional pattern to rewrite f(i, j, k * ratio + kk, ...) into f(i, j, k, kk, ...) with a proper ExpandShapeOp. More... | |
static AffineMap | insertParallelDim (LinalgOp op, OpOperand &opOperand, unsigned reductionDimPos, int64_t size) |
|
static |
Definition at line 230 of file SplitReduction.cpp.
References mlir::AffineMap::compose(), mlir::getAffineDimExpr(), mlir::AffineMap::getMultiDimIdentityMap(), mlir::AffineMap::getNumDims(), mlir::AffineMap::insertResult(), and mlir::AffineMap::shiftDims().
Referenced by mlir::linalg::splitReductionByScaling().
|
static |
Rewrite f(i, j, k, ...) into f(i, j, k * ratio + kk, ...) TODO: Additional pattern to rewrite f(i, j, k * ratio + kk, ...) into f(i, j, k, kk, ...) with a proper ExpandShapeOp.
This is probably better done as a transform to enable better vectorization.
Definition at line 215 of file SplitReduction.cpp.
References mlir::AffineMap::compose(), mlir::getAffineDimExpr(), mlir::AffineMap::getMultiDimIdentityMap(), mlir::AffineMap::getNumDims(), mlir::AffineMap::replace(), and mlir::AffineMap::shiftDims().
Referenced by mlir::linalg::splitReductionByScaling().