From 330372f2c58de12d711062f298c6472fc6a51fc5 Mon Sep 17 00:00:00 2001 From: Matthias Springer Date: Mon, 6 Feb 2023 10:19:22 +0100 Subject: [PATCH] [mlir][tensor][bufferize] tensor.empty does not define the result tensor contents This is encoded in the `BufferizableOpInterface` via `resultBufferizesToMemoryWrite = false`. Differential Revision: https://reviews.llvm.org/D143181 --- mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp b/mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp index 14401a98..3287dcf 100644 --- a/mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp +++ b/mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp @@ -264,6 +264,12 @@ struct DimOpInterface struct EmptyOpInterface : public BufferizableOpInterface::ExternalModel { + bool resultBufferizesToMemoryWrite(Operation *op, OpResult opResult, + const AnalysisState &state) const { + // The returned tensor does not have specified contents. + return false; + } + LogicalResult bufferize(Operation *op, RewriterBase &rewriter, const BufferizationOptions &options) const { // tensor.empty ops are used to indicate the shape of a tensor. They have -- 2.7.4