[mlir][Linalg] Add a transform.structured.lower_pack op
authorNicolas Vasilache <nicolas.vasilache@gmail.com>
Fri, 27 Jan 2023 16:24:14 +0000 (08:24 -0800)
committerNicolas Vasilache <nicolas.vasilache@gmail.com>
Tue, 31 Jan 2023 18:06:08 +0000 (10:06 -0800)
commit4ca52c6e7ed938ac20fa9845af9dbb7d46136226
tree2f82aa0686b5071e3ff0501075c0ccb0edb5c200
parent1625530d765557378e3e34f54f02883a402ff472
[mlir][Linalg] Add a transform.structured.lower_pack op

This revision introduces `transform.structured.lower_pack` which allows
rewriting a `tensor.pack` to `tensor.pad` + `tensor.expand_shape` + `linalg.transpose`.

The implementation is currently limited to static pack ops that do not have outer_dims permutations.

Differential Revision: https://reviews.llvm.org/D142881
mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.h
mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
mlir/include/mlir/Dialect/Tensor/IR/TensorOps.td
mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
mlir/lib/Dialect/Tensor/IR/TensorOps.cpp
mlir/test/Dialect/Linalg/transform-lower-pack.mlir [new file with mode: 0644]
utils/bazel/llvm-project-overlay/mlir/BUILD.bazel