[all-commits] [llvm/llvm-project] 7294be: [mlir][linalg] Replace linalg.fill by OpDSL variant.

Tobias Gysi via All-commits all-commits at lists.llvm.org
Mon Mar 14 03:52:19 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7294be2b8e9ada57e051bac6a20ca8b4dbf46475
      https://github.com/llvm/llvm-project/commit/7294be2b8e9ada57e051bac6a20ca8b4dbf46475
  Author: gysit <gysit at google.com>
  Date:   2022-03-14 (Mon, 14 Mar 2022)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
    M mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
    M mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
    M mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp
    M mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp
    M mlir/lib/Dialect/Vector/Transforms/VectorTransferSplitRewritePatterns.cpp
    M mlir/python/mlir/dialects/_linalg_ops_ext.py
    M mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
    M mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-named.mlir
    M mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
    M mlir/test/Dialect/Bufferization/Transforms/one-shot-bufferize-partial.mlir
    M mlir/test/Dialect/Linalg/bufferize.mlir
    M mlir/test/Dialect/Linalg/canonicalize.mlir
    M mlir/test/Dialect/Linalg/codegen-strategy.mlir
    M mlir/test/Dialect/Linalg/comprehensive-bufferize-analysis-2fill-extract-matmul-all-perms.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize-alloca.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize-analysis-init-tensor-elimination.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize-analysis.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize-init-tensor-elimination.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize-invalid.mlir
    M mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir
    M mlir/test/Dialect/Linalg/drop-unit-extent-dims.mlir
    M mlir/test/Dialect/Linalg/forward-vector-transfers.mlir
    M mlir/test/Dialect/Linalg/fusion-elementwise-ops.mlir
    M mlir/test/Dialect/Linalg/fusion-pattern.mlir
    M mlir/test/Dialect/Linalg/fusion-sequence.mlir
    M mlir/test/Dialect/Linalg/fusion-tensor-pattern.mlir
    M mlir/test/Dialect/Linalg/fusion.mlir
    M mlir/test/Dialect/Linalg/generalize-named-ops.mlir
    M mlir/test/Dialect/Linalg/generalize-named-polymorphic-ops.mlir
    M mlir/test/Dialect/Linalg/generalize-pad-tensor.mlir
    M mlir/test/Dialect/Linalg/hoist-padding.mlir
    M mlir/test/Dialect/Linalg/invalid.mlir
    M mlir/test/Dialect/Linalg/library-calls.mlir
    M mlir/test/Dialect/Linalg/loops.mlir
    M mlir/test/Dialect/Linalg/named-ops.mlir
    M mlir/test/Dialect/Linalg/pad.mlir
    M mlir/test/Dialect/Linalg/pad_fusion.mlir
    M mlir/test/Dialect/Linalg/promotion_options.mlir
    M mlir/test/Dialect/Linalg/roundtrip.mlir
    M mlir/test/Dialect/Linalg/tile-and-fuse-no-fuse.mlir
    M mlir/test/Dialect/Linalg/tile-and-fuse-on-tensors.mlir
    M mlir/test/Dialect/Linalg/tile-and-fuse-sequence-on-tensors.mlir
    M mlir/test/Dialect/Linalg/tile-and-fuse-tensors.mlir
    M mlir/test/Dialect/Linalg/tile-fuse-and-distribute.mlir
    M mlir/test/Dialect/Linalg/tile-scalarize-dynamic-dims.mlir
    M mlir/test/Dialect/Linalg/tile.mlir
    M mlir/test/Dialect/Linalg/transform-patterns.mlir
    M mlir/test/Dialect/Linalg/vectorization.mlir
    M mlir/test/Dialect/SparseTensor/conversion.mlir
    M mlir/test/Dialect/SparseTensor/conversion_sparse2dense.mlir
    M mlir/test/Dialect/SparseTensor/sparse_1d.mlir
    M mlir/test/Dialect/Vector/vector-transfer-full-partial-split.mlir
    M mlir/test/Integration/Dialect/Async/CPU/microbench-linalg-async-parallel-for.mlir
    M mlir/test/Integration/Dialect/Async/CPU/microbench-scf-async-parallel-for.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/benchmark_matmul.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/matmul-vs-matvec.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-comprehensive-bufferize.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-1d-call.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-1d-nwc-wcf-call.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-2d-call.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-2d-nhwc-hwcf-call.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-3d-call.mlir
    M mlir/test/Integration/Dialect/Linalg/CPU/test-conv-3d-ndhwc-dhwcf-call.mlir
    M mlir/test/Integration/Dialect/SparseTensor/taco/tools/mlir_pytaco.py
    M mlir/test/mlir-cpu-runner/async.mlir
    M mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir
    M mlir/test/mlir-cpu-runner/unranked-memref.mlir
    M mlir/test/mlir-cpu-runner/utils.mlir
    M mlir/test/mlir-opt/async.mlir
    M mlir/test/python/dialects/linalg/ops.py
    M mlir/test/python/integration/dialects/linalg/opsrun.py

  Log Message:
  -----------
  [mlir][linalg] Replace linalg.fill by OpDSL variant.

The revision removes the linalg.fill operation and renames the OpDSL generated linalg.fill_tensor operation to replace it. After the change, all named structured operations are defined via OpDSL and there are no handwritten operations left.

A side-effect of the change is that the pretty printed form changes from:
```
%1 = linalg.fill(%cst, %0) : f32, tensor<?x?xf32> -> tensor<?x?xf32>
```
changes to
```
%1 = linalg.fill ins(%cst : f32) outs(%0 : tensor<?x?xf32>) -> tensor<?x?xf32>
```
Additionally, the builder signature now takes input and output value ranges as it is the case for all other OpDSL operations:
```
rewriter.create<linalg::FillOp>(loc, val, output)
```
changes to
```
rewriter.create<linalg::FillOp>(loc, ValueRange{val}, ValueRange{output})
```
All other changes remain minimal. In particular, the canonicalization patterns are the same and the `value()`, `output()`, and `result()` methods are now implemented by the FillOpInterface.

Depends On D120726

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D120728




More information about the All-commits mailing list