Merge branch 'google' into main-to-google
diff --git a/SUBMODULE_VERSIONS b/SUBMODULE_VERSIONS
index dd0799a..c92bb72 100644
--- a/SUBMODULE_VERSIONS
+++ b/SUBMODULE_VERSIONS
@@ -6,7 +6,7 @@
 4fb0ff7069bd88ee85902f4d0bb62794e5f6d021 third_party/flatcc
 f2fb48c3b3d79a75a88a99fba6576b25d42ec528 third_party/googletest
 a4efbe40a33e506000a5378b106d24c7eb798227 third_party/llvm-bazel
-a48d480e1f7ebc5d5f93507fe1f519496621e259 third_party/llvm-project
+5e4409f30817798377689ef6c229f1c82815e6e8 third_party/llvm-project
 17b12a4481daa150e2d1ea3ada086b551b856707 third_party/marl
 d2cdb70e038370b5e28f353fe98ccd70af1cbc25 third_party/mlir-emitc
 d8c7ee00a687ac369e62e2032514a93a9b413502 third_party/pybind11
@@ -15,7 +15,7 @@
 685f86471e9d26b3eb7676695a2e2cefb4551ae9 third_party/spirv_cross
 f8bf11a0253a32375c32cad92c841237b96696c0 third_party/spirv_headers
 57eb48aed36160c4876bc8310d9ca84d42ee9e2a third_party/swiftshader
-e665554b90a45e93b1444506ae9ee359cdb800e0 third_party/tensorflow
+68a6fe0d984377b625b421d34f8c607d6ed73597 third_party/tensorflow
 a9a09ab0940408898fccfdcfe2bb8dc19b50f13c third_party/tracy
 9bd3f561bcee3f01d22912de10bb07ce4e23d378 third_party/vulkan_headers
 909f36b714c9239ee0b112a321220213a474ba53 third_party/vulkan_memory_allocator
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/LinalgTileAndFusePass.cpp b/iree/compiler/Conversion/LinalgToSPIRV/LinalgTileAndFusePass.cpp
index 219104e..e0cd21f 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/LinalgTileAndFusePass.cpp
+++ b/iree/compiler/Conversion/LinalgToSPIRV/LinalgTileAndFusePass.cpp
@@ -137,12 +137,15 @@
              benefit),
         launchConfig(launchConfig) {}
 
-  virtual LogicalResult matchAndRewrite(Operation *op,
-                                        PatternRewriter &rewriter) const {
+  LogicalResult matchAndRewrite(Operation *op,
+                                PatternRewriter &rewriter) const override {
     // Find the parent FuncOp before tiling. If tiling succeeds, the op will be
     // erased.
     FuncOp funcOp = op->getParentOfType<FuncOp>();
-    if (!funcOp || failed(Base::matchAndRewrite(op, rewriter)) ||
+    SmallVector<Value, 4> tensorResults;
+    if (!funcOp ||
+        failed(Base::matchAndRewriteBase(op, rewriter, tensorResults)) ||
+        !tensorResults.empty() ||
         failed(updateWorkGroupSize(funcOp, launchConfig.getWorkgroupSize())) ||
         (funcOp.getAttr(getNumWorkgroupsFnAttrName()) &&
          failed(createNumWorkgroupsFromResultShape(
@@ -349,14 +352,13 @@
     return tileSizesVal;
   };
 
-  auto getSubgroupProcInfoFn =
-      [&launchConfig](OpBuilder &builder, Location loc,
-                      ArrayRef<Range> parallelLoopRanges) {
-        ArrayRef<int64_t> numSubgroups =
-            launchConfig.getNumSubgroups().take_front(
-                parallelLoopRanges.size());
-        return getSubgroupIdsAndCounts(builder, loc, numSubgroups);
-      };
+  auto getSubgroupProcInfoFn = [&launchConfig](
+                                   OpBuilder &builder, Location loc,
+                                   ArrayRef<Range> parallelLoopRanges) {
+    ArrayRef<int64_t> numSubgroups =
+        launchConfig.getNumSubgroups().take_front(parallelLoopRanges.size());
+    return getSubgroupIdsAndCounts(builder, loc, numSubgroups);
+  };
   linalg::LinalgLoopDistributionOptions subgroupDistributionOptions = {
       getSubgroupProcInfoFn,
       {linalg::DistributionMethod::CyclicNumProcsEqNumIters,
diff --git a/third_party/llvm-project b/third_party/llvm-project
index a48d480..5e4409f 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit a48d480e1f7ebc5d5f93507fe1f519496621e259
+Subproject commit 5e4409f30817798377689ef6c229f1c82815e6e8
diff --git a/third_party/tensorflow b/third_party/tensorflow
index e665554..68a6fe0 160000
--- a/third_party/tensorflow
+++ b/third_party/tensorflow
@@ -1 +1 @@
-Subproject commit e665554b90a45e93b1444506ae9ee359cdb800e0
+Subproject commit 68a6fe0d984377b625b421d34f8c607d6ed73597