Moving FlattenMemRefSubspanPass to Common/. (#5552)

It's super useful :)
diff --git a/iree/compiler/Conversion/Common/BUILD b/iree/compiler/Conversion/Common/BUILD
index 4d37cf3..405bc91 100644
--- a/iree/compiler/Conversion/Common/BUILD
+++ b/iree/compiler/Conversion/Common/BUILD
@@ -22,6 +22,7 @@
     name = "Common",
     srcs = [
         "BufferAllocViewCleanUpPass.cpp",
+        "FlattenMemRefSubspanPass.cpp",
         "LaunchConfig.cpp",
         "LinalgBufferizePass.cpp",
         "LinalgRewriteDestructiveUpdatesPass.cpp",
@@ -42,6 +43,7 @@
         "//iree/compiler/Dialect/IREE/IR",
         "//iree/compiler/Dialect/Shape/IR",
         "@llvm-project//llvm:Support",
+        "@llvm-project//mlir:Affine",
         "@llvm-project//mlir:AffineUtils",
         "@llvm-project//mlir:CFGTransforms",
         "@llvm-project//mlir:GPUDialect",
diff --git a/iree/compiler/Conversion/Common/CMakeLists.txt b/iree/compiler/Conversion/Common/CMakeLists.txt
index 291fbec..7f414fb 100644
--- a/iree/compiler/Conversion/Common/CMakeLists.txt
+++ b/iree/compiler/Conversion/Common/CMakeLists.txt
@@ -20,6 +20,7 @@
     "Transforms.h"
   SRCS
     "BufferAllocViewCleanUpPass.cpp"
+    "FlattenMemRefSubspanPass.cpp"
     "LaunchConfig.cpp"
     "LinalgBufferizePass.cpp"
     "LinalgRewriteDestructiveUpdatesPass.cpp"
@@ -28,6 +29,7 @@
     "VectorTransferOptimization.cpp"
   DEPS
     LLVMSupport
+    MLIRAffine
     MLIRAffineUtils
     MLIRGPU
     MLIRIR
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/FlattenMemRefSubspanPass.cpp b/iree/compiler/Conversion/Common/FlattenMemRefSubspanPass.cpp
similarity index 99%
rename from iree/compiler/Conversion/LinalgToSPIRV/FlattenMemRefSubspanPass.cpp
rename to iree/compiler/Conversion/Common/FlattenMemRefSubspanPass.cpp
index d24b6a3..f0f0fda 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/FlattenMemRefSubspanPass.cpp
+++ b/iree/compiler/Conversion/Common/FlattenMemRefSubspanPass.cpp
@@ -340,7 +340,7 @@
 }
 
 static PassRegistration<FlattenMemRefSubspanPass> pass(
-    "iree-spirv-flatten-memref-subspan",
+    "iree-codegen-flatten-memref-subspan",
     "Flatten n-D MemRef subspan ops to 1-D ones and fold byte offsets on "
     "subspan ops to the consumer load/store ops");
 
diff --git a/iree/compiler/Conversion/Common/Passes.h b/iree/compiler/Conversion/Common/Passes.h
index e659350..2cb7f47 100644
--- a/iree/compiler/Conversion/Common/Passes.h
+++ b/iree/compiler/Conversion/Common/Passes.h
@@ -57,5 +57,10 @@
 // allocations and view operations.
 std::unique_ptr<FunctionPass> createBufferAllocViewCleanUpPass();
 
+// Flattens n-D MemRef subspan ops to 1-D MemRef and folds the byte offsets on
+// subspan ops to the consumer load/store ops, in preparation for lowering to
+// backends that require linearized access.
+std::unique_ptr<FunctionPass> createFlattenMemRefSubspanPass();
+
 }  // namespace iree_compiler
 }  // namespace mlir
diff --git a/iree/compiler/Conversion/Common/test/BUILD b/iree/compiler/Conversion/Common/test/BUILD
index 58d67ad..47c3d16 100644
--- a/iree/compiler/Conversion/Common/test/BUILD
+++ b/iree/compiler/Conversion/Common/test/BUILD
@@ -29,6 +29,7 @@
         [
             "affinemin_canonicalization.mlir",
             "canonicalize_interface_load_store.mlir",
+            "flatten_memref_subspan.mlir",
             "linalg_bufferize.mlir",
             "linalg_rewrite_destructive_updates.mlir",
             "remove_dead_allocs.mlir",
diff --git a/iree/compiler/Conversion/Common/test/CMakeLists.txt b/iree/compiler/Conversion/Common/test/CMakeLists.txt
index a4cb5a6..c8e91c9 100644
--- a/iree/compiler/Conversion/Common/test/CMakeLists.txt
+++ b/iree/compiler/Conversion/Common/test/CMakeLists.txt
@@ -16,6 +16,7 @@
   SRCS
     "affinemin_canonicalization.mlir"
     "canonicalize_interface_load_store.mlir"
+    "flatten_memref_subspan.mlir"
     "linalg_bufferize.mlir"
     "linalg_rewrite_destructive_updates.mlir"
     "remove_dead_allocs.mlir"
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/test/flatten_memref_subspan.mlir b/iree/compiler/Conversion/Common/test/flatten_memref_subspan.mlir
similarity index 97%
rename from iree/compiler/Conversion/LinalgToSPIRV/test/flatten_memref_subspan.mlir
rename to iree/compiler/Conversion/Common/test/flatten_memref_subspan.mlir
index e26ace3..a870cf8 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/test/flatten_memref_subspan.mlir
+++ b/iree/compiler/Conversion/Common/test/flatten_memref_subspan.mlir
@@ -1,4 +1,4 @@
-// RUN: iree-opt -split-input-file -iree-spirv-flatten-memref-subspan -canonicalize %s | IreeFileCheck %s
+// RUN: iree-opt -split-input-file -iree-codegen-flatten-memref-subspan -canonicalize %s | IreeFileCheck %s
 
 func @load_subspan_with_offset(%offset : index, %i0: index, %i1: index, %i2: index) -> f32 {
   %subspan = hal.interface.binding.subspan @io::@s0b0_ro_constant[%offset] : memref<6x7x8xf32>
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/BUILD b/iree/compiler/Conversion/LinalgToSPIRV/BUILD
index e9f5fee..e16552a 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/BUILD
+++ b/iree/compiler/Conversion/LinalgToSPIRV/BUILD
@@ -38,7 +38,6 @@
         "ConvertToGPUPass.cpp",
         "ConvertToSPIRVPass.cpp",
         "CooperativeMatrixAnalysis.cpp",
-        "FlattenMemRefSubspanPass.cpp",
         "FoldGPUProcessorIDUses.cpp",
         "KernelDispatchUtils.cpp",
         "LinalgTileAndDistributePass.cpp",
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
index 9b8dd1f..3823727 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
+++ b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
@@ -36,7 +36,6 @@
     "ConvertToGPUPass.cpp"
     "ConvertToSPIRVPass.cpp"
     "CooperativeMatrixAnalysis.cpp"
-    "FlattenMemRefSubspanPass.cpp"
     "FoldGPUProcessorIDUses.cpp"
     "KernelDispatchUtils.cpp"
     "LinalgTileAndDistributePass.cpp"
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/Passes.h b/iree/compiler/Conversion/LinalgToSPIRV/Passes.h
index 413fc84..7a420cc 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/Passes.h
+++ b/iree/compiler/Conversion/LinalgToSPIRV/Passes.h
@@ -87,11 +87,6 @@
 std::unique_ptr<OperationPass<IREE::HAL::ExecutableTargetOp>>
 createTileAndDistributeAmongWorkgroupsPass(const SPIRVCodegenOptions &options);
 
-// Flattens n-D MemRef subspan ops to 1-D MemRef and folds the byte offsets on
-// subspan ops to the consumer load/store ops, in preparation for lowering to
-// SPIR-V.
-std::unique_ptr<FunctionPass> createFlattenMemRefSubspanPass();
-
 //===----------------------------------------------------------------------===//
 // Pipelines
 //===----------------------------------------------------------------------===//
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD b/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
index 3585b07..b471c9c 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
+++ b/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
@@ -34,7 +34,6 @@
             "convert_to_spirv.mlir",
             "dead_alloc.mlir",
             "elementwise_vectorization.mlir",
-            "flatten_memref_subspan.mlir",
             "fold-gpu-procid-uses.mlir",
             "forop_canonicalization.mlir",
             "linalg_tile_and_fuse.mlir",
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/test/CMakeLists.txt b/iree/compiler/Conversion/LinalgToSPIRV/test/CMakeLists.txt
index bf55fac..83bfe57 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/test/CMakeLists.txt
+++ b/iree/compiler/Conversion/LinalgToSPIRV/test/CMakeLists.txt
@@ -21,7 +21,6 @@
     "convert_to_spirv.mlir"
     "dead_alloc.mlir"
     "elementwise_vectorization.mlir"
-    "flatten_memref_subspan.mlir"
     "fold-gpu-procid-uses.mlir"
     "forop_canonicalization.mlir"
     "linalg_tile_and_fuse.mlir"
diff --git a/iree/compiler/Conversion/init_conversions.h b/iree/compiler/Conversion/init_conversions.h
index d948fae..fef6f91 100644
--- a/iree/compiler/Conversion/init_conversions.h
+++ b/iree/compiler/Conversion/init_conversions.h
@@ -36,6 +36,7 @@
 inline void registerCommonConversionPasses() {
   static bool init_once = []() {
     // Common
+    createFlattenMemRefSubspanPass();
     createLinalgBufferizePass();
     createLinalgRewriteDestructiveUpdatesPass();
     return true;
@@ -66,7 +67,6 @@
   static bool init_once = []() {
     // LinalgToSPIRV
     createConvertToGPUPass(SPIRVCodegenOptions());
-    createFlattenMemRefSubspanPass();
     createFoldProcessorIDUsesPass();
     createTileAndDistributeAmongWorkgroupsPass(SPIRVCodegenOptions());
     createTileAndVectorizeInOneWorkgroupPass(SPIRVCodegenOptions());