Integrate LLVM at `e7630a0d` (#18078)

Advance to https://github.com/llvm/llvm-project/commit/e7630a0d

No local patches.

Folds @MaheshRavishankar's https://github.com/iree-org/iree/pull/17435.

---------

Signed-off-by: Benoit Jacob <jacob.benoit.1@gmail.com>
Signed-off-by: Mahesh Ravishankar <mahesh.ravishankar@gmail.com>
Co-authored-by: Mahesh Ravishankar <mahesh.ravishankar@gmail.com>
diff --git a/build_tools/pkgci/external_test_suite/onnx_cpu_llvm_sync.json b/build_tools/pkgci/external_test_suite/onnx_cpu_llvm_sync.json
index 3646f61..a260eeb 100644
--- a/build_tools/pkgci/external_test_suite/onnx_cpu_llvm_sync.json
+++ b/build_tools/pkgci/external_test_suite/onnx_cpu_llvm_sync.json
@@ -491,7 +491,6 @@
     "onnx/node/generated/test_wrap_pad"
   ],
   "expected_run_failures": [
-    "onnx/node/generated/test_asin",
     "onnx/node/generated/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True",
     "onnx/node/generated/test_bernoulli",
     "onnx/node/generated/test_bernoulli_double",
diff --git a/build_tools/pkgci/external_test_suite/onnx_gpu_cuda.json b/build_tools/pkgci/external_test_suite/onnx_gpu_cuda.json
index 92ccf6d..eebcb71 100644
--- a/build_tools/pkgci/external_test_suite/onnx_gpu_cuda.json
+++ b/build_tools/pkgci/external_test_suite/onnx_gpu_cuda.json
@@ -494,7 +494,6 @@
     "onnx/node/generated/test_wrap_pad"
   ],
   "expected_run_failures": [
-    "onnx/node/generated/test_asin",
     "onnx/node/generated/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True",
     "onnx/node/generated/test_bernoulli",
     "onnx/node/generated/test_bernoulli_double",
diff --git a/build_tools/pkgci/external_test_suite/onnx_gpu_rocm_rdna3.json b/build_tools/pkgci/external_test_suite/onnx_gpu_rocm_rdna3.json
index 6f31aad..f5f2897 100644
--- a/build_tools/pkgci/external_test_suite/onnx_gpu_rocm_rdna3.json
+++ b/build_tools/pkgci/external_test_suite/onnx_gpu_rocm_rdna3.json
@@ -489,7 +489,6 @@
     "onnx/node/generated/test_wrap_pad"
   ],
   "expected_run_failures": [
-    "onnx/node/generated/test_asin",
     "onnx/node/generated/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True",
     "onnx/node/generated/test_bernoulli",
     "onnx/node/generated/test_bernoulli_double",
diff --git a/build_tools/pkgci/external_test_suite/onnx_gpu_vulkan.json b/build_tools/pkgci/external_test_suite/onnx_gpu_vulkan.json
index c62935e..5eb81fa 100644
--- a/build_tools/pkgci/external_test_suite/onnx_gpu_vulkan.json
+++ b/build_tools/pkgci/external_test_suite/onnx_gpu_vulkan.json
@@ -554,7 +554,6 @@
     "onnx/node/generated/test_and_bcast3v1d",
     "onnx/node/generated/test_and_bcast4v2d",
     "onnx/node/generated/test_and_bcast4v4d",
-    "onnx/node/generated/test_asin",
     "onnx/node/generated/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True",
     "onnx/node/generated/test_bernoulli",
     "onnx/node/generated/test_bernoulli_double",
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/GPUApplyTilingLevel.cpp b/compiler/src/iree/compiler/Codegen/Common/GPU/GPUApplyTilingLevel.cpp
index 1ef74e8..6d2bac4 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/GPUApplyTilingLevel.cpp
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/GPUApplyTilingLevel.cpp
@@ -107,7 +107,7 @@
 
       // TODO: Add some helpers to construct this based on the enum type rather
       // than doing it here.
-      SmallVector<DeviceMappingAttrInterface> mapping;
+      SmallVector<Attribute> mapping;
       int idx = 0;
       for (auto size : tileSizes) {
         if (!isConstantIntValue(size, 0)) {
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/GPUTensorTile.cpp b/compiler/src/iree/compiler/Codegen/Common/GPU/GPUTensorTile.cpp
index 2efd4f8..086f1a4 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/GPUTensorTile.cpp
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/GPUTensorTile.cpp
@@ -280,10 +280,16 @@
       }
     }
     std::reverse(idDims.begin(), idDims.end());
-    ArrayAttr mapping = rewriter.getArrayAttr(idDims);
-    auto tilingResult =
-        linalg::tileToForallOp(rewriter, tilingOp, numThreads, mapping);
-    rewriter.replaceOp(tilingOp, tilingResult->tileOp->getResults());
+    scf::SCFTilingOptions options;
+    options.setLoopType(scf::SCFTilingOptions::LoopType::ForallOp);
+    options.setMapping(idDims);
+    options.setNumThreads(numThreads);
+    FailureOr<scf::SCFTilingResult> tilingResult =
+        scf::tileUsingSCF(rewriter, tilingOp, options);
+    if (failed(tilingResult)) {
+      return tilingOp->emitOpError("failed to tile to scf.forall");
+    }
+    rewriter.replaceOp(tilingOp, tilingResult->replacements);
   }
   return success();
 }
diff --git a/compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/distribution.mlir b/compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/distribution.mlir
index 0f5905c..e4db4f3 100644
--- a/compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/distribution.mlir
+++ b/compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/distribution.mlir
@@ -24,8 +24,8 @@
 // CHECK-DAG:   #[[MAP0:.+]] = affine_map<()[s0] -> (s0 ceildiv 10)>
 // CHECK-DAG:   #[[MAP1:.+]] = affine_map<()[s0] -> (s0 ceildiv 30)>
 // CHECK-DAG:   #[[MAP2:.+]] = affine_map<(d0) -> (d0 * 10)>
-// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
-// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
 // CHECK-DAG:   #[[MAP5:.+]] = affine_map<(d0)[s0] -> (d0 * -30 + s0, 30)>
 // CHECK:       func.func @scatter_tiling_distribution(
 // CHECK-SAME:      %[[ORIGINAL:[a-zA-Z0-9_]+]]
@@ -39,8 +39,8 @@
 // CHECK-DAG:     %[[UB1:.+]] = affine.apply #[[MAP1]]()[%[[D1]]]
 // CHECK:         %[[RESULT:.+]] = scf.forall (%[[IV0:.+]], %[[IV1:.+]]) in (%[[UB0]], %[[UB1]]) shared_outs(%[[ITER:.+]] = %[[ORIGINAL]])
 // CHECK-DAG:       %[[I:.+]] = affine.apply #[[MAP2]](%[[IV0]])
-// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP3]](%[[IV0]])[%[[D0]]]
-// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP4]](%[[IV1]])
+// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP3]](%[[IV1]])
+// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP4]](%[[IV0]])[%[[D0]]]
 // CHECK-DAG:       %[[J_SZ:.+]] = affine.min #[[MAP5]](%[[IV1]])[%[[D1]]]
 // CHECK:           %[[UPDATES_TILE:.+]] = tensor.extract_slice %[[UPDATES]]
 // CHECK-SAME:        [%[[I]], %[[J]]] [%[[I_SZ]], %[[J_SZ]]] [1, 1]
@@ -86,8 +86,8 @@
 // CHECK-DAG:   #[[MAP0:.+]] = affine_map<()[s0] -> (s0 ceildiv 10)>
 // CHECK-DAG:   #[[MAP1:.+]] = affine_map<()[s0] -> (s0 ceildiv 30)>
 // CHECK-DAG:   #[[MAP2:.+]] = affine_map<(d0) -> (d0 * 10)>
-// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
-// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
 // CHECK-DAG:   #[[MAP5:.+]] = affine_map<(d0)[s0] -> (d0 * -30 + s0, 30)>
 // CHECK:       func.func @sort_3d_multi_result_distribute(
 // CHECK-SAME:      %[[SRC0:[a-zA-Z0-9_]+]]
@@ -102,8 +102,8 @@
 // CHECK-DAG:     %[[UB1:.+]] = affine.apply #[[MAP1]]()[%[[D1]]]
 // CHECK:         %[[RESULT:.+]]:2 = scf.forall (%[[IV0:.+]], %[[IV1:.+]]) in (%[[UB0]], %[[UB1]]) shared_outs(%[[ITER0:.+]] = %[[SRC0]], %[[ITER1:.+]] = %[[SRC1]])
 // CHECK-DAG:       %[[I:.+]] = affine.apply #[[MAP2]](%[[IV0]])
-// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP3]](%[[IV0]])[%[[D0]]]
-// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP4]](%[[IV1]])
+// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP3]](%[[IV1]])
+// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP4]](%[[IV0]])[%[[D0]]]
 // CHECK-DAG:       %[[J_SZ:.+]] = affine.min #[[MAP5]](%[[IV1]])[%[[D1]]]
 // CHECK:           %[[ITER0_TILE:.+]] = tensor.extract_slice %[[ITER0]]
 // CHECK-SAME:        [%[[I]], %[[J]], 0] [%[[I_SZ]], %[[J_SZ]], %[[D2]]]
@@ -144,8 +144,8 @@
 // CHECK-DAG:   #[[MAP0:.+]] = affine_map<()[s0] -> (s0 ceildiv 10)>
 // CHECK-DAG:   #[[MAP1:.+]] = affine_map<()[s0] -> (s0 ceildiv 30)>
 // CHECK-DAG:   #[[MAP2:.+]] = affine_map<(d0) -> (d0 * 10)>
-// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
-// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP3:.+]] = affine_map<(d0) -> (d0 * 30)>
+// CHECK-DAG:   #[[MAP4:.+]] = affine_map<(d0)[s0] -> (d0 * -10 + s0, 10)>
 // CHECK-DAG:   #[[MAP5:.+]] = affine_map<(d0)[s0] -> (d0 * -30 + s0, 30)>
 // CHECK:       func.func @sort_3d_multi_result_distribute_memref(
 // CHECK-SAME:      %[[SRC0:[a-zA-Z0-9_]+]]
@@ -160,8 +160,8 @@
 // CHECK-DAG:     %[[UB1:.+]] = affine.apply #[[MAP1]]()[%[[D1]]]
 // CHECK:         scf.forall (%[[IV0:.+]], %[[IV1:.+]]) in (%[[UB0]], %[[UB1]])
 // CHECK-DAG:       %[[I:.+]] = affine.apply #[[MAP2]](%[[IV0]])
-// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP3]](%[[IV0]])[%[[D0]]]
-// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP4]](%[[IV1]])
+// CHECK-DAG:       %[[J:.+]] = affine.apply #[[MAP3]](%[[IV1]])
+// CHECK-DAG:       %[[I_SZ:.+]] = affine.min #[[MAP4]](%[[IV0]])[%[[D0]]]
 // CHECK-DAG:       %[[J_SZ:.+]] = affine.min #[[MAP5]](%[[IV1]])[%[[D1]]]
 // CHECK:           %[[SRC0_TILE:.+]] = memref.subview %[[SRC0]]
 // CHECK-SAME:        [%[[I]], %[[J]], 0] [%[[I_SZ]], %[[J_SZ]], %[[D2]]]
diff --git a/third_party/llvm-project b/third_party/llvm-project
index d8b985c..e7630a0 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit d8b985c9490664f7ec923e59cf6c603d998179ae
+Subproject commit e7630a0d60821dc13bb0be4e50b49fba5f90471f