[GlobalOpt] Unset encodings for non-CPU backends. (#15453)

This is a step toward turning data-tiling on by default.
diff --git a/compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel b/compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel
index 4700c4d..5d176a4 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel
+++ b/compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel
@@ -60,6 +60,7 @@
     deps = [
         ":PassHeaders",
         ":PassesIncGen",
+        "//compiler/src/iree/compiler/Codegen/Common",
         "//compiler/src/iree/compiler/Codegen/Common/CPU:CommonCPUPasses",
         "//compiler/src/iree/compiler/Dialect/Flow/IR",
         "//compiler/src/iree/compiler/Dialect/Flow/Transforms",
diff --git a/compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt b/compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt
index 4d2eb4e..73aa647 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt
+++ b/compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt
@@ -73,6 +73,7 @@
     MLIRTensorTransforms
     MLIRTensorUtils
     MLIRTransforms
+    iree::compiler::Codegen::Common
     iree::compiler::Codegen::Common::CPU::CommonCPUPasses
     iree::compiler::Dialect::Flow::IR
     iree::compiler::Dialect::Flow::Transforms
diff --git a/compiler/src/iree/compiler/GlobalOptimization/MaterializeHomogeneousEncodings.cpp b/compiler/src/iree/compiler/GlobalOptimization/MaterializeHomogeneousEncodings.cpp
index 1ed56ef..2ec27fc 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/MaterializeHomogeneousEncodings.cpp
+++ b/compiler/src/iree/compiler/GlobalOptimization/MaterializeHomogeneousEncodings.cpp
@@ -5,6 +5,7 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 #include "iree/compiler/Codegen/Common/CPU/Passes.h"
+#include "iree/compiler/Codegen/Common/Passes.h"
 #include "iree/compiler/Dialect/HAL/IR/HALDialect.h"
 #include "iree/compiler/Dialect/HAL/IR/HALOps.h"
 #include "iree/compiler/GlobalOptimization/PassDetail.h"
@@ -17,6 +18,7 @@
 #include "mlir/IR/BuiltinTypes.h"
 #include "mlir/IR/Diagnostics.h"
 #include "mlir/Pass/Pass.h"
+#include "mlir/Transforms/Passes.h"
 
 namespace mlir {
 namespace iree_compiler {
@@ -44,20 +46,26 @@
     if (executableTargets.size() != 1) {
       return;
     }
-    // TODO(hanchung): Move *CPUMateralize* methods to Codegen/Common. They
-    // could be generalized to other backends (by looking into something like
-    // ExecutableTarget things). Only llvm-cpu backends handle encodings for
-    // now.
+    // TODO: vmvx has its own logic about supporting dynamic tile
+    // sizes. It is not fully integrated into the pipeline, so we remain the
+    // materialization to the end.
     auto executableTarget = executableTargets[0];
-    if (executableTarget.getBackend() != "llvm-cpu") {
+    if (executableTarget.getBackend() == "vmvx") {
       return;
     }
 
+    // Only llvm-cpu backends handle encodings for now, others just go with nop.
     OpPassManager passManager(moduleOp.getOperationName());
-    passManager.addNestedPass<func::FuncOp>(
-        createCPUMaterializeUpperBoundTileSizePass(executableTargets));
-    passManager.addNestedPass<func::FuncOp>(
-        createCPUMaterializeEncodingPass(executableTarget));
+    if (executableTarget.getBackend() == "llvm-cpu") {
+      passManager.addNestedPass<func::FuncOp>(
+          createCPUMaterializeUpperBoundTileSizePass(executableTargets));
+      passManager.addNestedPass<func::FuncOp>(
+          createCPUMaterializeEncodingPass(executableTarget));
+    } else {
+      passManager.addNestedPass<func::FuncOp>(
+          createMaterializeEncodingIntoNopPass());
+      passManager.addNestedPass<func::FuncOp>(createCanonicalizerPass());
+    }
 
     if (failed(runPipeline(passManager, moduleOp))) {
       return signalPassFailure();
diff --git a/compiler/src/iree/compiler/GlobalOptimization/test/materialize_homogeneous_encodings.mlir b/compiler/src/iree/compiler/GlobalOptimization/test/materialize_homogeneous_encodings.mlir
index 88f13fe..bcbc917 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/test/materialize_homogeneous_encodings.mlir
+++ b/compiler/src/iree/compiler/GlobalOptimization/test/materialize_homogeneous_encodings.mlir
@@ -51,7 +51,7 @@
   }
 }
 
-// vulkan does not implement buildMaterializeEncodingsPassPipeline method.
+// vulkan uses default materialization patterns which unsets the encodings.
 // CHECK-LABEL: func.func @lhs_encoding
-// CHECK:         iree_linalg_ext.upper_bound_tile_size
-// CHECK:         iree_linalg_ext.set_encoding
+// CHECK-SAME:    %[[ARG0:[a-zA-Z0-9]+]]
+// CHECK:         return %[[ARG0]]