[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 &registry);
+
+} // 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 &registry) {
+  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);