[mlir][linalg][bufferize][NFC] Move Affine interface impl to new build target
This makes ComprehensiveBufferize entirely independent of the Affine dialect.
Differential Revision: https://reviews.llvm.org/D114222
GitOrigin-RevId: f32c3d9528e4af6c27806b2f5fd50972b2aa27d5
diff --git a/include/mlir/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.h b/include/mlir/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.h
new file mode 100644
index 0000000..d3009ad
--- /dev/null
+++ b/include/mlir/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.h
@@ -0,0 +1,27 @@
+//===- LinalgInterfaceImpl.h - Linalg Impl. of BufferizableOpInterface ----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MLIR_DIALECT_LINALG_COMPREHENSIVEBUFFERIZE_AFFINE_INTERFACE_IMPL_H
+#define MLIR_DIALECT_LINALG_COMPREHENSIVEBUFFERIZE_AFFINE_INTERFACE_IMPL_H
+
+namespace mlir {
+
+class DialectRegistry;
+
+namespace linalg {
+namespace comprehensive_bufferize {
+namespace affine_ext {
+
+void registerBufferizableOpInterfaceExternalModels(DialectRegistry ®istry);
+
+} // namespace affine_ext
+} // namespace comprehensive_bufferize
+} // namespace linalg
+} // namespace mlir
+
+#endif // MLIR_DIALECT_LINALG_COMPREHENSIVEBUFFERIZE_AFFINE_INTERFACE_IMPL_H
diff --git a/lib/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.cpp b/lib/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.cpp
new file mode 100644
index 0000000..6dcc7c5
--- /dev/null
+++ b/lib/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.cpp
@@ -0,0 +1,18 @@
+//===- AffineInterfaceImpl.cpp - Affine Impl. of BufferizableOpInterface --===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "mlir/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.h"
+
+#include "mlir/Dialect/Affine/IR/AffineOps.h"
+#include "mlir/Dialect/Linalg/ComprehensiveBufferize/BufferizableOpInterface.h"
+
+void mlir::linalg::comprehensive_bufferize::affine_ext::
+ registerBufferizableOpInterfaceExternalModels(DialectRegistry ®istry) {
+ registry.addOpInterface<AffineParallelOp,
+ AllocationHoistingBarrierOnly<AffineParallelOp>>();
+}
diff --git a/lib/Dialect/Linalg/ComprehensiveBufferize/CMakeLists.txt b/lib/Dialect/Linalg/ComprehensiveBufferize/CMakeLists.txt
index c97be3c..c367c00 100644
--- a/lib/Dialect/Linalg/ComprehensiveBufferize/CMakeLists.txt
+++ b/lib/Dialect/Linalg/ComprehensiveBufferize/CMakeLists.txt
@@ -1,4 +1,5 @@
set(LLVM_OPTIONAL_SOURCES
+ AffineInterfaceImpl.cpp
ArithInterfaceImpl.cpp
BufferizableOpInterface.cpp
ComprehensiveBufferize.cpp
@@ -20,6 +21,14 @@
MLIRMemRef
)
+add_mlir_dialect_library(MLIRAffineBufferizableOpInterfaceImpl
+ AffineInterfaceImpl.cpp
+
+ LINK_LIBS PUBLIC
+ MLIRAffine
+ MLIRBufferizableOpInterface
+)
+
add_mlir_dialect_library(MLIRArithBufferizableOpInterfaceImpl
ArithInterfaceImpl.cpp
@@ -73,7 +82,6 @@
ComprehensiveBufferize.cpp
LINK_LIBS PUBLIC
- MLIRAffine
MLIRBufferizableOpInterface
MLIRInferTypeOpInterface
MLIRIR
diff --git a/lib/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.cpp b/lib/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.cpp
index 1d40aee..c10168f 100644
--- a/lib/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.cpp
+++ b/lib/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.cpp
@@ -109,10 +109,10 @@
#include <random>
-#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
#include "mlir/Dialect/Linalg/ComprehensiveBufferize/BufferizableOpInterface.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
+#include "mlir/Dialect/StandardOps/IR/Ops.h"
#include "mlir/Dialect/Utils/StaticValueUtils.h"
#include "mlir/IR/AsmState.h"
#include "mlir/IR/BlockAndValueMapping.h"
@@ -1513,8 +1513,6 @@
// Ops that are not bufferizable but are allocation hoisting barriers.
registry.addOpInterface<FuncOp, AllocationHoistingBarrierOnly<FuncOp>>();
- registry.addOpInterface<AffineParallelOp,
- AllocationHoistingBarrierOnly<AffineParallelOp>>();
}
} // namespace comprehensive_bufferize
diff --git a/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index 9732b48..5edede2 100644
--- a/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -29,6 +29,7 @@
LINK_LIBS PUBLIC
MLIRAffine
+ MLIRAffineBufferizableOpInterfaceImpl
MLIRAffineUtils
MLIRAnalysis
MLIRArithBufferizableOpInterfaceImpl
diff --git a/lib/Dialect/Linalg/Transforms/ComprehensiveBufferizePass.cpp b/lib/Dialect/Linalg/Transforms/ComprehensiveBufferizePass.cpp
index 916bc02..d864bfe 100644
--- a/lib/Dialect/Linalg/Transforms/ComprehensiveBufferizePass.cpp
+++ b/lib/Dialect/Linalg/Transforms/ComprehensiveBufferizePass.cpp
@@ -9,6 +9,7 @@
#include "PassDetail.h"
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
+#include "mlir/Dialect/Linalg/ComprehensiveBufferize/AffineInterfaceImpl.h"
#include "mlir/Dialect/Linalg/ComprehensiveBufferize/ArithInterfaceImpl.h"
#include "mlir/Dialect/Linalg/ComprehensiveBufferize/BufferizableOpInterface.h"
#include "mlir/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.h"
@@ -44,6 +45,7 @@
vector::VectorDialect, scf::SCFDialect,
arith::ArithmeticDialect, StandardOpsDialect, AffineDialect>();
registerBufferizableOpInterfaceExternalModels(registry);
+ affine_ext::registerBufferizableOpInterfaceExternalModels(registry);
arith_ext::registerBufferizableOpInterfaceExternalModels(registry);
linalg_ext::registerBufferizableOpInterfaceExternalModels(registry);
scf_ext::registerBufferizableOpInterfaceExternalModels(registry);