[mlir][Linalg] Add a transform.structured.lower_unpack op
authorNicolas Vasilache <nicolas.vasilache@gmail.com>
Mon, 30 Jan 2023 08:37:46 +0000 (00:37 -0800)
committerNicolas Vasilache <nicolas.vasilache@gmail.com>
Wed, 1 Feb 2023 10:26:44 +0000 (02:26 -0800)
commit7cedd956d0602bf6aca24c1fa5eda2bd585750ac
tree39acc8080ac3e457f842c996010414569f336a69
parentcdcd43c87e9bdec9c344d8e276d93d4672b24fb2
[mlir][Linalg] Add a transform.structured.lower_unpack op

This revision introduces `transform.structured.lower_unpack` which allows
rewriting a `tensor.unpack` to `transpose` (`linalg.generic`) + `tensor.empty` + `tensor.collapse_shape` + `tensor.extract_slice`

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

Differential Revision: https://reviews.llvm.org/D142889
mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.h
mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
mlir/test/Dialect/Linalg/transform-lower-pack.mlir