[mlir][linalg] Fusion on tensors.
authorTobias Gysi <gysit@google.com>
Mon, 20 Sep 2021 14:16:26 +0000 (14:16 +0000)
committerTobias Gysi <gysit@google.com>
Mon, 20 Sep 2021 14:45:34 +0000 (14:45 +0000)
commit6db928b8f31b17caf205eee9c95bb817e51a3f2c
tree0444b3d77c2c791fb63f480a94243b8f03059996
parent5dee50111c13bbc4480401e2eaa67f6bca1b480a
[mlir][linalg] Fusion on tensors.

Add a new version of fusion on tensors that supports the following scenarios:
- support input and output operand fusion
- fuse a producer result passed in via tile loop iteration arguments (update the tile loop iteration arguments)
- supports only linalg operations on tensors
- supports only scf::for
- cannot add an output to the tile loop nest

The LinalgTileAndFuseOnTensors pass tiles the root operation and fuses its producers.

Reviewed By: nicolasvasilache, mravishankar

Differential Revision: https://reviews.llvm.org/D109766
mlir/include/mlir/Dialect/Linalg/Passes.h
mlir/include/mlir/Dialect/Linalg/Passes.td
mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp [new file with mode: 0644]
mlir/test/Dialect/Linalg/tile-and-fuse-on-tensors.mlir [new file with mode: 0644]