This can be a pre-processing for bufferization and allows for more efficient lowerings without an alloc.
Depends On: D142206
Paths
| Differential D142207
[mlir][linalg] Convert tensor.pad to destination style ClosedPublic Authored by springerm on Jan 20 2023, 5:58 AM.
Details Summary This can be a pre-processing for bufferization and allows for more efficient lowerings without an alloc. Depends On: D142206
Diff Detail
Event Timelinespringerm added a parent revision: D142206: [mlir][linalg] Convert tensor.from_elements to destination style.Jan 20 2023, 5:58 AM mravishankar added inline comments.
This revision now requires changes to proceed.Jan 20 2023, 9:38 AM
springerm retitled this revision from [mlir][tensor] Convert tensor.pad to destination style to [mlir][linalg] Convert tensor.pad to destination style.Jan 23 2023, 3:57 AM Comment Actions Unblocking, but have one comment remaining.
This revision is now accepted and ready to land.Jan 23 2023, 12:27 PM Closed by commit rG7b3c662da9e2: [mlir][linalg] Convert tensor.pad to destination style (authored by springerm). · Explain WhyJan 24 2023, 12:36 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 491296 mlir/lib/Dialect/Linalg/Transforms/ConvertToDestinationStyle.cpp
mlir/test/Dialect/Linalg/convert-to-destination-style.mlir
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
First, I am not sure we need to make this distinction.... constant yielded value is already outside the op.
Even if we need to, could this be made simpler by just having
if (matchPattern(yieldedValue, m_Constant(...)) { yieldedValue = ... } auto fillOp = rewriter.create<linalg::FillOp>(..., yieldeValue, ...);