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