[Mlir-commits] [mlir] fd74694 - [mlir][sparse] attach bufferizableOpInterface to InsertOp
Peiming Liu
llvmlistbot at llvm.org
Thu Oct 20 13:54:42 PDT 2022
Author: Peiming Liu
Date: 2022-10-20T20:54:37Z
New Revision: fd7469404bcd5c4142070ef17d94007a57268ff3
URL: https://github.com/llvm/llvm-project/commit/fd7469404bcd5c4142070ef17d94007a57268ff3
DIFF: https://github.com/llvm/llvm-project/commit/fd7469404bcd5c4142070ef17d94007a57268ff3.diff
LOG: [mlir][sparse] attach bufferizableOpInterface to InsertOp
To fix D136286
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D136372
Added:
Modified:
mlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp
index aa6c6e9870cc..7c16cf6933a1 100644
--- a/mlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp
+++ b/mlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp
@@ -94,6 +94,45 @@ struct NewOpInterface
}
};
+struct InsertOpInterface
+ : public BufferizableOpInterface::ExternalModel<InsertOpInterface,
+ sparse_tensor::InsertOp> {
+ bool bufferizesToAllocation(Operation *op, OpResult opResult) const {
+ // Does bufferization handle realloc?
+ return false;
+ }
+
+ bool bufferizesToMemoryRead(Operation *op, OpOperand &opOperand,
+ const AnalysisState &state) const {
+ return false;
+ }
+
+ bool bufferizesToMemoryWrite(Operation *op, OpOperand &opOperand,
+ const AnalysisState &state) const {
+ // InsertOp writes to memory.
+ return true;
+ }
+
+ SmallVector<OpResult> getAliasingOpResult(Operation *op, OpOperand &opOperand,
+ const AnalysisState &state) const {
+ // InsertOp returns an alias of its operand.
+ assert(op->getNumResults() == 1);
+ return op->getResults();
+ }
+
+ BufferRelation bufferRelation(Operation *oo, OpResult opResult,
+ const AnalysisState &state) const {
+ // InsertOp returns the same object (realloc should not invalidate
+ // aliases).
+ return BufferRelation::Equivalent;
+ }
+
+ bool isWritable(Operation *op, Value value,
+ const AnalysisState &state) const {
+ return true;
+ }
+};
+
} // namespace
} // namespace sparse_tensor
} // namespace mlir
@@ -105,5 +144,6 @@ void mlir::sparse_tensor::registerBufferizableOpInterfaceExternalModels(
sparse_tensor::ConvertOp::attachInterface<ConvertOpInterface>(*ctx);
sparse_tensor::LoadOp::attachInterface<LoadOpInterface>(*ctx);
sparse_tensor::NewOp::attachInterface<NewOpInterface>(*ctx);
+ sparse_tensor::InsertOp::attachInterface<InsertOpInterface>(*ctx);
});
}
More information about the Mlir-commits
mailing list