MLIR 22.0.0git
SplitReduction.cpp File Reference

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.
static AffineMap insertParallelDim (LinalgOp op, OpOperand &opOperand, unsigned reductionDimPos, int64_t size)

Function Documentation

◆ insertParallelDim()

◆ scaleReductionDim()

AffineMap scaleReductionDim ( LinalgOp op,
OpOperand & opOperand,
unsigned reductionDimPos,
int64_t reductionRatio )
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().