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());