[mlir][Linalg] Avoid unnecessary propagating producer result to fused op result.
authorMahesh Ravishankar <ravishankarm@google.com>
Wed, 16 Nov 2022 07:52:34 +0000 (07:52 +0000)
committerMahesh Ravishankar <ravishankarm@google.com>
Tue, 22 Nov 2022 07:08:17 +0000 (07:08 +0000)
commit2d4b998697fda9a0a213e5fb29f8af45a4828dc7
treef8bc9d1d68c8a23d419eef49f447f238b1312929
parent57fd7ffefffae313de800fecdd9f095a17bfd4ea
[mlir][Linalg] Avoid unnecessary  propagating producer result to fused op result.

Elementwise op fusion conserves the result of the producer in the
fused op, relying on later clean up patterns to drop unused results of
the fused op. Instead, if the producer result has no other use apart
from the consumer op, avoid making the producer result available in
the fused node. This saves some unnecessary IR manipulations.

Differential Revision: https://reviews.llvm.org/D138096
mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp
mlir/test/Dialect/Linalg/fusion-elementwise-options.mlir
mlir/test/Dialect/Linalg/fusion-elementwise.mlir [new file with mode: 0644]
mlir/test/lib/Dialect/Linalg/TestLinalgElementwiseFusion.cpp