Lines Matching full:linalg
1 //===- BlockPackMatmul.cpp - Linalg matmul block packing ------------------===//
9 #include "mlir/Dialect/Linalg/Passes.h"
11 #include "mlir/Dialect/Linalg/IR/Linalg.h"
12 #include "mlir/Dialect/Linalg/Transforms/Transforms.h"
13 #include "mlir/Dialect/Linalg/Utils/Utils.h"
23 #include "mlir/Dialect/Linalg/Passes.h.inc"
27 using namespace mlir::linalg;
44 static bool validateFullTilesOnDims(linalg::LinalgOp linalgOp,
90 transposePackedMatmul(RewriterBase &rewriter, linalg::LinalgOp linalgOp,
139 linalg::blockPackMatmul(RewriterBase &rewriter, linalg::LinalgOp linalgOp,
186 dyn_cast<linalg::GenericOp>(packedMatmul->packedLinalgOp.getOperation());
237 struct BlockPackMatmul<linalg::GenericOp>
238 : public OpRewritePattern<linalg::GenericOp> {
241 : OpRewritePattern<linalg::GenericOp>(context, benefit),
244 LogicalResult matchAndRewrite(linalg::GenericOp linalgOp,
247 if (!linalg::isaContractionOpInterface(linalgOp)) {
278 /// Convert linalg matmul ops to block layout and back.
288 [&](linalg::LinalgOp op) -> BlockPackMatmulOptions {
303 linalg::populateBlockPackMatmulPatterns(patterns, controlFn);
310 void linalg::populateBlockPackMatmulPatterns(
312 patterns.add<BlockPackMatmul<linalg::GenericOp>,
313 BlockPackMatmul<linalg::MatmulOp>,
314 BlockPackMatmul<linalg::BatchMatmulOp>,
315 BlockPackMatmul<linalg::MatmulTransposeAOp>,
316 BlockPackMatmul<linalg::BatchMatmulTransposeAOp>,
317 BlockPackMatmul<linalg::MatmulTransposeBOp>,
318 BlockPackMatmul<linalg::BatchMatmulTransposeBOp>>(