Integrate LLVM at llvm/llvm-project@dad5caa59e6b Updates LLVM usage to match [dad5caa59e6b](https://github.com/llvm/llvm-project/commit/dad5caa59e6b) PiperOrigin-RevId: 368257770
diff --git a/SUBMODULE_VERSIONS.txt b/SUBMODULE_VERSIONS.txt index 4665e22..c6830e9 100644 --- a/SUBMODULE_VERSIONS.txt +++ b/SUBMODULE_VERSIONS.txt
@@ -5,7 +5,7 @@ b1fbd33c06cdb0024c67733c6fdec2009d17b384 third_party/googletest 88b845dee001723c4a0db1fe5477de735b6d3bb0 third_party/liburing 99cf08795a83d3b9b49bf1b09ed40e457a082587 third_party/llvm-bazel -5a5a94ed34b07079046ac81e7e97d980ce2c834f third_party/llvm-project +dad5caa59e6b2bde8d6cf5b64a972c393c526c82 third_party/llvm-project 3c265bf59bf2515a63ec35571c66954349749a62 third_party/mlir-emitc a3fc99efe0af66da3eae469e30685ed32b3b6877 third_party/mlir-hlo 2b2bd45bbf9be04fd22ece5cc1f54679202e9257 third_party/pffft
diff --git a/experimental/ModelBuilder/BUILD b/experimental/ModelBuilder/BUILD index c437ff6..0bb3ce4 100644 --- a/experimental/ModelBuilder/BUILD +++ b/experimental/ModelBuilder/BUILD
@@ -82,6 +82,7 @@ "@llvm-project//mlir:LLVMTransforms", "@llvm-project//mlir:LinalgToLLVM", "@llvm-project//mlir:LinalgTransforms", + "@llvm-project//mlir:MemRefTransforms", "@llvm-project//mlir:Pass", "@llvm-project//mlir:SCFToStandard", "@llvm-project//mlir:SPIRVDialect",
diff --git a/experimental/ModelBuilder/ModelRunner.cpp b/experimental/ModelBuilder/ModelRunner.cpp index 3b8607a..019ddd3 100644 --- a/experimental/ModelBuilder/ModelRunner.cpp +++ b/experimental/ModelBuilder/ModelRunner.cpp
@@ -26,6 +26,7 @@ #include "mlir/Conversion/VectorToSCF/VectorToSCF.h" #include "mlir/Dialect/GPU/Passes.h" #include "mlir/Dialect/Linalg/Passes.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/SPIRV/IR/SPIRVOps.h" #include "mlir/Dialect/SPIRV/Transforms/Passes.h" #include "mlir/ExecutionEngine/ExecutionEngine.h" @@ -131,7 +132,7 @@ static void addVulkanLoweringPass(mlir::PassManager& manager) { manager.addPass(mlir::createGpuKernelOutliningPass()); - manager.addPass(mlir::createLegalizeStdOpsForSPIRVLoweringPass()); + manager.addPass(mlir::memref::createFoldSubViewOpsPass()); manager.addPass(mlir::createConvertGPUToSPIRVPass()); mlir::OpPassManager& modulePM = manager.nest<mlir::spirv::ModuleOp>(); modulePM.addPass(mlir::spirv::createLowerABIAttributesPass());
diff --git a/experimental/ModelBuilder/test/BUILD b/experimental/ModelBuilder/test/BUILD index e97f42e..154654c 100644 --- a/experimental/ModelBuilder/test/BUILD +++ b/experimental/ModelBuilder/test/BUILD
@@ -136,6 +136,7 @@ "@llvm-project//mlir:LinalgOps", "@llvm-project//mlir:LinalgToLLVM", "@llvm-project//mlir:LinalgTransforms", + "@llvm-project//mlir:MemRefTransforms", "@llvm-project//mlir:Parser", "@llvm-project//mlir:Pass", "@llvm-project//mlir:SPIRVDialect",
diff --git a/experimental/ModelBuilder/test/BenchMatMulVectorGPU.cpp b/experimental/ModelBuilder/test/BenchMatMulVectorGPU.cpp index 5a50271..d2a8d3e 100644 --- a/experimental/ModelBuilder/test/BenchMatMulVectorGPU.cpp +++ b/experimental/ModelBuilder/test/BenchMatMulVectorGPU.cpp
@@ -32,6 +32,7 @@ #include "mlir/Dialect/Linalg/Passes.h" #include "mlir/Dialect/Linalg/Transforms/CodegenStrategy.h" #include "mlir/Dialect/Linalg/Transforms/Transforms.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/SPIRV/IR/SPIRVOps.h" #include "mlir/Dialect/SPIRV/IR/TargetAndABI.h" #include "mlir/Dialect/SPIRV/Transforms/Passes.h" @@ -84,7 +85,7 @@ llvm::ArrayRef<Type> args) { pm.addPass(mlir::iree_compiler::createVectorToGPUPass()); pm.addPass(mlir::createLowerAffinePass()); - pm.addPass(mlir::createLegalizeStdOpsForSPIRVLoweringPass()); + pm.addPass(memref::createFoldSubViewOpsPass()); pm.addPass(mlir::createCanonicalizerPass()); pm.addPass(mlir::createCSEPass()); pm.addPass(mlir::iree_compiler::createVectorizeMemref());
diff --git a/iree/compiler/Conversion/LinalgToLLVM/BUILD b/iree/compiler/Conversion/LinalgToLLVM/BUILD index 69157b6..b1ec976 100644 --- a/iree/compiler/Conversion/LinalgToLLVM/BUILD +++ b/iree/compiler/Conversion/LinalgToLLVM/BUILD
@@ -83,6 +83,7 @@ "@llvm-project//mlir:MathDialect", "@llvm-project//mlir:MathTransforms", "@llvm-project//mlir:MemRefDialect", + "@llvm-project//mlir:MemRefTransforms", "@llvm-project//mlir:Pass", "@llvm-project//mlir:SCFDialect", "@llvm-project//mlir:StandardOps",
diff --git a/iree/compiler/Conversion/LinalgToLLVM/CMakeLists.txt b/iree/compiler/Conversion/LinalgToLLVM/CMakeLists.txt index d502907..467a93a 100644 --- a/iree/compiler/Conversion/LinalgToLLVM/CMakeLists.txt +++ b/iree/compiler/Conversion/LinalgToLLVM/CMakeLists.txt
@@ -50,6 +50,7 @@ MLIRMath MLIRMathTransforms MLIRMemRef + MLIRMemRefTransforms MLIRPass MLIRSCF MLIRSCFToStandard
diff --git a/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndVectorizePass.cpp b/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndVectorizePass.cpp index f570afa..44adbad 100644 --- a/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndVectorizePass.cpp +++ b/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndVectorizePass.cpp
@@ -21,6 +21,7 @@ #include "mlir/Dialect/Linalg/Transforms/CodegenStrategy.h" #include "mlir/Dialect/Linalg/Transforms/Hoisting.h" #include "mlir/Dialect/MemRef/IR/MemRef.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/Utils/StructuredOpsUtils.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/Matchers.h" @@ -256,8 +257,7 @@ // ops computation. linalg::hoistRedundantVectorTransfers(funcOp); - // TODO(ataei): Move this to common vector dialect patterns. - populateStdLegalizationPatternsForSPIRVLowering(vectorToLoopsPatterns); + memref::populateFoldSubViewOpPatterns(vectorToLoopsPatterns); if (failed(applyPatternsAndFoldGreedily( funcOp, std::move(vectorToLoopsPatterns)))) { return signalPassFailure();
diff --git a/iree/compiler/Conversion/LinalgToNVVM/BUILD b/iree/compiler/Conversion/LinalgToNVVM/BUILD index 9b972b8..adcc2c7 100644 --- a/iree/compiler/Conversion/LinalgToNVVM/BUILD +++ b/iree/compiler/Conversion/LinalgToNVVM/BUILD
@@ -46,6 +46,7 @@ "@llvm-project//mlir:LLVMTransforms", "@llvm-project//mlir:LinalgOps", "@llvm-project//mlir:LinalgTransforms", + "@llvm-project//mlir:MemRefTransforms", "@llvm-project//mlir:NVVMDialect", "@llvm-project//mlir:Pass", "@llvm-project//mlir:SCFToStandard",
diff --git a/iree/compiler/Conversion/LinalgToNVVM/CMakeLists.txt b/iree/compiler/Conversion/LinalgToNVVM/CMakeLists.txt index ee8c97b..41531cb 100644 --- a/iree/compiler/Conversion/LinalgToNVVM/CMakeLists.txt +++ b/iree/compiler/Conversion/LinalgToNVVM/CMakeLists.txt
@@ -29,6 +29,7 @@ MLIRIR MLIRLinalg MLIRLinalgTransforms + MLIRMemRefTransforms MLIRNVVMIR MLIRPass MLIRSCFToStandard
diff --git a/iree/compiler/Conversion/LinalgToNVVM/VectorizationPass.cpp b/iree/compiler/Conversion/LinalgToNVVM/VectorizationPass.cpp index 3826b0e..69971dd 100644 --- a/iree/compiler/Conversion/LinalgToNVVM/VectorizationPass.cpp +++ b/iree/compiler/Conversion/LinalgToNVVM/VectorizationPass.cpp
@@ -19,6 +19,7 @@ #include "iree/compiler/Conversion/LinalgToNVVM/Passes.h" #include "mlir/Conversion/StandardToSPIRV/StandardToSPIRV.h" #include "mlir/Dialect/Linalg/Transforms/Hoisting.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/Vector/VectorOps.h" #include "mlir/Dialect/Vector/VectorTransforms.h" #include "mlir/Transforms/GreedyPatternRewriteDriver.h" @@ -125,7 +126,7 @@ vectorToSCFOptions.setUnroll(true); populateVectorToSCFConversionPatterns(vectorToLoopsPatterns, vectorToSCFOptions); - populateStdLegalizationPatternsForSPIRVLowering(vectorToLoopsPatterns); + memref::populateFoldSubViewOpPatterns(vectorToLoopsPatterns); (void)applyPatternsAndFoldGreedily(funcOp, std::move(vectorToLoopsPatterns)); }
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/BUILD b/iree/compiler/Conversion/LinalgToSPIRV/BUILD index ced6f20..e16552a 100644 --- a/iree/compiler/Conversion/LinalgToSPIRV/BUILD +++ b/iree/compiler/Conversion/LinalgToSPIRV/BUILD
@@ -80,6 +80,7 @@ "@llvm-project//mlir:LinalgOps", "@llvm-project//mlir:LinalgTransforms", "@llvm-project//mlir:MemRefDialect", + "@llvm-project//mlir:MemRefTransforms", "@llvm-project//mlir:Pass", "@llvm-project//mlir:SCFDialect", "@llvm-project//mlir:SCFToGPUPass",
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt index 9f64c69..3823727 100644 --- a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt +++ b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
@@ -58,6 +58,7 @@ MLIRLinalg MLIRLinalgTransforms MLIRMemRef + MLIRMemRefTransforms MLIRPass MLIRSCF MLIRSCFToGPU
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/Passes.cpp b/iree/compiler/Conversion/LinalgToSPIRV/Passes.cpp index c0fe47d..c6c7ef2 100644 --- a/iree/compiler/Conversion/LinalgToSPIRV/Passes.cpp +++ b/iree/compiler/Conversion/LinalgToSPIRV/Passes.cpp
@@ -38,6 +38,7 @@ #include "mlir/Dialect/Linalg/IR/LinalgOps.h" #include "mlir/Dialect/Linalg/Passes.h" #include "mlir/Dialect/Linalg/Transforms/Transforms.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/SCF/SCF.h" #include "mlir/Dialect/SPIRV/IR/SPIRVOps.h" #include "mlir/Dialect/SPIRV/Transforms/Passes.h" @@ -128,7 +129,7 @@ pm.nest<ModuleOp>().addNestedPass<FuncOp>( createVectorTransferOptimizationPass()); } - pm.nest<ModuleOp>().addPass(createLegalizeStdOpsForSPIRVLoweringPass()); + pm.nest<ModuleOp>().addPass(memref::createFoldSubViewOpsPass()); pm.nest<ModuleOp>().addPass(createCanonicalizerPass()); pm.nest<ModuleOp>().addPass(createCSEPass()); if (options.enableVectorization) {
diff --git a/iree/tools/init_mlir_passes.h b/iree/tools/init_mlir_passes.h index 37e7e78..9031991 100644 --- a/iree/tools/init_mlir_passes.h +++ b/iree/tools/init_mlir_passes.h
@@ -26,6 +26,7 @@ #include "mlir/Dialect/Affine/Passes.h" #include "mlir/Dialect/GPU/Passes.h" #include "mlir/Dialect/Linalg/Passes.h" +#include "mlir/Dialect/MemRef/Transforms/Passes.h" #include "mlir/Dialect/Quant/Passes.h" #include "mlir/Dialect/SCF/Passes.h" #include "mlir/Dialect/SPIRV/Transforms/Passes.h" @@ -65,6 +66,9 @@ // Linalg registerLinalgPasses(); + // MemRef + memref::registerMemRefPasses(); + // SCF registerSCFParallelLoopFusionPass(); registerSCFParallelLoopTilingPass(); @@ -79,7 +83,6 @@ spirv::registerSPIRVLowerABIAttributesPass(); registerConvertGPUToSPIRVPass(); registerConvertStandardToSPIRVPass(); - registerLegalizeStandardForSPIRVPass(); registerConvertLinalgToSPIRVPass(); // TOSA.
diff --git a/third_party/llvm-project b/third_party/llvm-project index 5a5a94e..dad5caa 160000 --- a/third_party/llvm-project +++ b/third_party/llvm-project
@@ -1 +1 @@ -Subproject commit 5a5a94ed34b07079046ac81e7e97d980ce2c834f +Subproject commit dad5caa59e6b2bde8d6cf5b64a972c393c526c82