[mlir][sparse][bufferization] refine bufferization assumption enforcement
authorAart Bik <ajcbik@google.com>
Mon, 27 Jun 2022 23:51:27 +0000 (16:51 -0700)
committerAart Bik <ajcbik@google.com>
Tue, 28 Jun 2022 16:43:30 +0000 (09:43 -0700)
commiteca6f9160f1f70cf879005527cc44dee63be7793
treed32e6d7b983b2089925898d56aed4eab64f1b2df
parent3706bdad4ae0fe91fbb8bb3e0acc88cf6b13ce56
[mlir][sparse][bufferization] refine bufferization assumption enforcement

Enforce the assumption made on tensor buffers explicitly. When in-place,
reuse the buffer, but fill with all zeroes for the non-update case, since
the kernel assumes all elements are written to. When not in-place, zero
out the new buffer when materializing or when no-updates occur. Copy the
original tensor value when updates occur. This prepares migrating to the
new bufferization strategy, where these assumptions must be made explicit.

Reviewed By: springerm

Differential Revision: https://reviews.llvm.org/D128691
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp
mlir/test/Dialect/SparseTensor/dense.mlir
mlir/test/Dialect/SparseTensor/sparse_1d.mlir
mlir/test/Dialect/SparseTensor/sparse_2d.mlir
mlir/test/Dialect/SparseTensor/sparse_3d.mlir
mlir/test/Dialect/SparseTensor/sparse_affine.mlir
mlir/test/Dialect/SparseTensor/sparse_nd.mlir
mlir/test/Dialect/SparseTensor/sparse_outbuf.mlir [new file with mode: 0644]
mlir/test/Dialect/SparseTensor/sparse_perm.mlir