Integrate LLVM at llvm/llvm-project@89eb85ac6eab

Updates LLVM usage to match
[89eb85ac6eab](https://github.com/llvm/llvm-project/commit/89eb85ac6eab)

PiperOrigin-RevId: 414542383
diff --git a/SUBMODULE_VERSIONS.txt b/SUBMODULE_VERSIONS.txt
index f54c2ff..b4adbd0 100644
--- a/SUBMODULE_VERSIONS.txt
+++ b/SUBMODULE_VERSIONS.txt
@@ -4,7 +4,7 @@
 aa533abfd4232b01f9e57041d70114d5a77e6de0 third_party/googletest
 88b845dee001723c4a0db1fe5477de735b6d3bb0 third_party/liburing
 acd6f6f014c25e46363e718381e0b35205df2d83 third_party/libyaml
-311dd55c9eb9342b1c889f6db7728f15b05378bb third_party/llvm-project
+89eb85ac6eab6431ef72ef705d560c72c5ed71f3 third_party/llvm-project
 6ee3d5fb61b3b1861c79676092c4d7769f5f2da0 third_party/mlir-hlo
 3f701faace7addc75d16dea8a6cd769fa5b3f260 third_party/musl
 4c7697dbe973ed01ae6fbec37d186ebd05982e1f third_party/pybind11
diff --git a/iree/compiler/Dialect/Flow/Transforms/PadTensorToSubTensorInsert.cpp b/iree/compiler/Dialect/Flow/Transforms/PadTensorToSubTensorInsert.cpp
index 8c2b6eb..9667be2 100644
--- a/iree/compiler/Dialect/Flow/Transforms/PadTensorToSubTensorInsert.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/PadTensorToSubTensorInsert.cpp
@@ -63,7 +63,10 @@
       SmallVector<Value> mapValues;
       Value sourceDim = rewriter.createOrFold<tensor::DimOp>(loc, source, dim);
       mapValues.push_back(sourceDim);
-      sourceShape.push_back(sourceDim);
+      if (auto cstDim = sourceDim.getDefiningOp<arith::ConstantIndexOp>())
+        sourceShape.push_back(cstDim.getValue());
+      else
+        sourceShape.push_back(sourceDim);
       AffineExpr expr = rewriter.getAffineDimExpr(0);
       unsigned numSymbols = 0;
       auto addValueOrAttr = [&](AffineExpr e, OpFoldResult valueOrAttr) {
diff --git a/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp b/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
index cabeb37..a719872 100644
--- a/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
+++ b/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
@@ -71,14 +71,15 @@
     SmallVector<Value, 3> offsets, sizes, strides;
     for (int i = 0; i < rank; ++i) {
       offsets.push_back(rewriter.create<arith::ConstantIndexOp>(loc, 0));
-      sizes.push_back(
-          rewriter.create<tensor::DimOp>(loc, adaptor.getOperands()[0], i));
+      sizes.push_back(rewriter.createOrFold<tensor::DimOp>(
+          loc, adaptor.getOperands()[0], i));
       strides.push_back(rewriter.create<arith::ConstantIndexOp>(loc, 1));
     }
     Value resultDimSize = rewriter.create<arith::ConstantIndexOp>(loc, 0);
     for (auto arg : adaptor.getOperands()) {
-      auto size = rewriter.create<tensor::DimOp>(loc, arg, dim);
-      resultDimSize = rewriter.create<arith::AddIOp>(loc, resultDimSize, size);
+      auto size = rewriter.createOrFold<tensor::DimOp>(loc, arg, dim);
+      resultDimSize =
+          rewriter.createOrFold<arith::AddIOp>(loc, resultDimSize, size);
     }
     sizes[dim] = resultDimSize;
     auto initTensor = rewriter.create<linalg::InitTensorOp>(
@@ -88,12 +89,21 @@
     Value result =
         rewriter.create<linalg::FillOp>(loc, zero, initTensor).getResult(0);
 
+    auto toOpFoldResult = [](Value v) -> OpFoldResult {
+      auto op = v.getDefiningOp<arith::ConstantIndexOp>();
+      if (!op) return v;
+      return op.getValue();
+    };
+
     Value accBound = rewriter.create<arith::ConstantIndexOp>(loc, 0);
     for (auto arg : adaptor.getOperands()) {
       offsets[dim] = accBound;
-      sizes[dim] = rewriter.create<tensor::DimOp>(loc, arg, dim);
-      result = rewriter.create<tensor::InsertSliceOp>(loc, arg, result, offsets,
-                                                      sizes, strides);
+      sizes[dim] = rewriter.createOrFold<tensor::DimOp>(loc, arg, dim);
+      result = rewriter.create<tensor::InsertSliceOp>(
+          loc, arg, result,
+          llvm::to_vector(llvm::map_range(offsets, toOpFoldResult)),
+          llvm::to_vector(llvm::map_range(sizes, toOpFoldResult)),
+          llvm::to_vector(llvm::map_range(strides, toOpFoldResult)));
       accBound = rewriter.create<arith::AddIOp>(loc, accBound, sizes[dim]);
     }
     rewriter.replaceOp(op, result);
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 311dd55..89eb85a 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 311dd55c9eb9342b1c889f6db7728f15b05378bb
+Subproject commit 89eb85ac6eab6431ef72ef705d560c72c5ed71f3