[LLVMExternalProjects] Drop the IREE LinalgTransformDialect (#15067)

The LinalgTransformDialect has become a maintenance burden without any
users. This drops the dialect and cleans up some surrounding linalg ext
code that has since been upstreamed.

- Transform ops equivalent to lower_to_llvm now exist upstream
- The linalg ext variant of the TransformDialectInterpreter pass has
since been moved to IREE core

take_first, emit_remark, and the matcher infra + ops are still load
bearing and transitioning to upstream is left as TODO.
diff --git a/compiler/src/iree/compiler/API/api_exports.c b/compiler/src/iree/compiler/API/api_exports.c
index 114d7ca..b27c81f 100644
--- a/compiler/src/iree/compiler/API/api_exports.c
+++ b/compiler/src/iree/compiler/API/api_exports.c
@@ -347,7 +347,6 @@
 extern void mlirFunctionTypeGetTypeID();
 extern void mlirGetDialectHandle__iree_input__();
 extern void mlirGetDialectHandle__iree_linalg_ext__();
-extern void mlirGetDialectHandle__iree_linalg_transform__();
 extern void mlirGetDialectHandle__transform__();
 extern void mlirIREELinalgTransformRegisterPasses();
 extern void mlirIREETransformRegisterPasses();
@@ -997,7 +996,6 @@
   x += (uintptr_t)&mlirFunctionTypeGetTypeID;
   x += (uintptr_t)&mlirGetDialectHandle__iree_input__;
   x += (uintptr_t)&mlirGetDialectHandle__iree_linalg_ext__;
-  x += (uintptr_t)&mlirGetDialectHandle__iree_linalg_transform__;
   x += (uintptr_t)&mlirGetDialectHandle__transform__;
   x += (uintptr_t)&mlirIREELinalgTransformRegisterPasses;
   x += (uintptr_t)&mlirIREETransformRegisterPasses;
diff --git a/compiler/src/iree/compiler/API/api_exports.def b/compiler/src/iree/compiler/API/api_exports.def
index b07a8a4..e016464 100644
--- a/compiler/src/iree/compiler/API/api_exports.def
+++ b/compiler/src/iree/compiler/API/api_exports.def
@@ -339,7 +339,6 @@
   mlirFunctionTypeGetTypeID
   mlirGetDialectHandle__iree_input__
   mlirGetDialectHandle__iree_linalg_ext__
-  mlirGetDialectHandle__iree_linalg_transform__
   mlirGetDialectHandle__transform__
   mlirIREELinalgTransformRegisterPasses
   mlirIREETransformRegisterPasses
diff --git a/compiler/src/iree/compiler/API/api_exports.ld b/compiler/src/iree/compiler/API/api_exports.ld
index f02718f..8f1cdb4 100644
--- a/compiler/src/iree/compiler/API/api_exports.ld
+++ b/compiler/src/iree/compiler/API/api_exports.ld
@@ -340,7 +340,6 @@
     mlirFunctionTypeGetTypeID;
     mlirGetDialectHandle__iree_input__;
     mlirGetDialectHandle__iree_linalg_ext__;
-    mlirGetDialectHandle__iree_linalg_transform__;
     mlirGetDialectHandle__transform__;
     mlirIREELinalgTransformRegisterPasses;
     mlirIREETransformRegisterPasses;
diff --git a/compiler/src/iree/compiler/API/api_exports.macos.lst b/compiler/src/iree/compiler/API/api_exports.macos.lst
index 14283da..dc13969 100644
--- a/compiler/src/iree/compiler/API/api_exports.macos.lst
+++ b/compiler/src/iree/compiler/API/api_exports.macos.lst
@@ -338,7 +338,6 @@
 _mlirFunctionTypeGetTypeID
 _mlirGetDialectHandle__iree_input__
 _mlirGetDialectHandle__iree_linalg_ext__
-_mlirGetDialectHandle__iree_linalg_transform__
 _mlirGetDialectHandle__transform__
 _mlirIREELinalgTransformRegisterPasses
 _mlirIREETransformRegisterPasses
diff --git a/compiler/src/iree/compiler/API/generate_exports.py b/compiler/src/iree/compiler/API/generate_exports.py
index 1f05458..5f151e8 100755
--- a/compiler/src/iree/compiler/API/generate_exports.py
+++ b/compiler/src/iree/compiler/API/generate_exports.py
@@ -72,7 +72,6 @@
     "mlirRegisterLinalgPasses",
     "mlirGetDialectHandle__iree_input__",
     "mlirGetDialectHandle__iree_linalg_ext__",
-    "mlirGetDialectHandle__iree_linalg_transform__",
     "mlirGetDialectHandle__transform__",
 ]
 
diff --git a/compiler/src/iree/compiler/Codegen/Common/TransformDialectInterpreterPass.cpp b/compiler/src/iree/compiler/Codegen/Common/TransformDialectInterpreterPass.cpp
index e172d06..dea6786 100644
--- a/compiler/src/iree/compiler/Codegen/Common/TransformDialectInterpreterPass.cpp
+++ b/compiler/src/iree/compiler/Codegen/Common/TransformDialectInterpreterPass.cpp
@@ -6,7 +6,6 @@
 
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/TransformOps/LinalgExtTransformOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h"
 #include "iree/compiler/Codegen/Common/PassDetail.h"
 #include "iree/compiler/Codegen/Common/TransformExtensions/CommonExtensions.h"
@@ -74,7 +73,6 @@
                     func::FuncDialect,
                     gpu::GPUDialect,
                     linalg::LinalgDialect,
-                    linalg::transform::LinalgTransformDialect,
                     LLVM::LLVMDialect,
                     pdl::PDLDialect,
                     pdl_interp::PDLInterpDialect,
@@ -82,8 +80,8 @@
                     tensor::TensorDialect,
                     transform::TransformDialect,
                     vector::VectorDialect
-        // clang-format on
-        >();
+                    // clang-format on
+                    >();
 
     // TODO: these should be registered by the extension instead, but there is
     // no support for it in core currently.
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.cpp b/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.cpp
index 935412c..e8979b6 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.cpp
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.cpp
@@ -5,7 +5,6 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree/compiler/Codegen/Common/TileSizeSelection.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenAttrs.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenDialect.h"
@@ -51,7 +50,6 @@
                     IREE::LinalgExt::IREELinalgExtDialect,
                     bufferization::BufferizationDialect,
                     linalg::LinalgDialect,
-                    linalg::transform::LinalgTransformDialect,
                     LLVM::LLVMDialect,
                     pdl::PDLDialect,
                     pdl_interp::PDLInterpDialect,
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPULowerExecutableTarget.cpp b/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPULowerExecutableTarget.cpp
index 931e081..ad59a5a 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPULowerExecutableTarget.cpp
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPULowerExecutableTarget.cpp
@@ -5,7 +5,6 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenAttrs.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenDialect.h"
 #include "iree/compiler/Codegen/LLVMGPU/KernelConfig.h"
@@ -47,7 +46,6 @@
                 IREE::HAL::HALDialect,
                 IREE::LinalgExt::IREELinalgExtDialect,
                 linalg::LinalgDialect,
-                linalg::transform::LinalgTransformDialect,
                 gpu::GPUDialect,
                 nvgpu::NVGPUDialect,
                 pdl::PDLDialect,
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Target/LLVMCPU/LLVMCPUTarget.cpp b/compiler/src/iree/compiler/Dialect/HAL/Target/LLVMCPU/LLVMCPUTarget.cpp
index 4527ba5..90a6f45 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Target/LLVMCPU/LLVMCPUTarget.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Target/LLVMCPU/LLVMCPUTarget.cpp
@@ -10,7 +10,6 @@
 #include <unordered_set>
 
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenDialect.h"
 #include "iree/compiler/Codegen/LLVMCPU/Passes.h"
 #include "iree/compiler/Codegen/Utils/Utils.h"
@@ -179,7 +178,6 @@
     // clang-format off
     registry.insert<IREE::Codegen::IREECodegenDialect,
                     IREE::LinalgExt::IREELinalgExtDialect,
-                    linalg::transform::LinalgTransformDialect,
                     mlir::transform::TransformDialect,
                     pdl::PDLDialect,
                     pdl_interp::PDLInterpDialect,
diff --git a/compiler/src/iree/compiler/Tools/init_iree_dialects.h b/compiler/src/iree/compiler/Tools/init_iree_dialects.h
index 4dda2a2..8cf0cda 100644
--- a/compiler/src/iree/compiler/Tools/init_iree_dialects.h
+++ b/compiler/src/iree/compiler/Tools/init_iree_dialects.h
@@ -15,7 +15,6 @@
 #include "iree-dialects/Dialect/Input/InputDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/Passes/Passes.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree-dialects/Dialect/LinalgTransform/Passes.h"
 #include "iree/compiler/Codegen/Dialect/IREECodegenDialect.h"
 #include "iree/compiler/Codegen/Interfaces/Interfaces.h"
@@ -43,7 +42,6 @@
                   IREE::HAL::Inline::HALInlineDialect,
                   IREE::HAL::Loader::HALLoaderDialect,
                   IREE::LinalgExt::IREELinalgExtDialect,
-                  mlir::linalg::transform::LinalgTransformDialect,
                   IREE::Stream::StreamDialect,
                   IREE::Util::UtilDialect,
                   IREE::VM::VMDialect,
diff --git a/docs/website/generate_extra_files.sh b/docs/website/generate_extra_files.sh
index 3c4fc12..d01f0fe 100755
--- a/docs/website/generate_extra_files.sh
+++ b/docs/website/generate_extra_files.sh
@@ -48,7 +48,6 @@
 # Delete any dialect docs we don't want to publish (yet?).
 rm "${BUILD_DOCS_PROCESSED_DIR}/SimpleIODialect.md" # Sample dialect, just ignore
 rm "${BUILD_DOCS_PROCESSED_DIR}/StructuredTransformOpsExt.md" # Dialect extensions
-rm "${BUILD_DOCS_PROCESSED_DIR}/LinalgTransformOps.md" # Small dialect, unknown state
 
 # Trim "Dialect" suffix from file names, e.g. FlowDialect.md -> Flow.md.
 for f in ${BUILD_DOCS_PROCESSED_DIR}/*Dialect.md; do
@@ -58,7 +57,6 @@
 # Rename iree-dialect files.
 mv "${BUILD_DOCS_PROCESSED_DIR}/InputOps.md" "${BUILD_DOCS_PROCESSED_DIR}/IREEInput.md"
 mv "${BUILD_DOCS_PROCESSED_DIR}/LinalgExtOps.md" "${BUILD_DOCS_PROCESSED_DIR}/IREELinalgExt.md"
-# mv "${BUILD_DOCS_PROCESSED_DIR}/LinalgTransformOps.md" "${BUILD_DOCS_PROCESSED_DIR}/IREELinalgTransform.md"
 # mv "${BUILD_DOCS_PROCESSED_DIR}/StructuredTransformOpsExt.md" "${BUILD_DOCS_PROCESSED_DIR}/IREEStructuredTransformExt.md"
 
 # Postprocess the dialect docs (e.g. making tweaks to the markdown source).
diff --git a/llvm-external-projects/iree-dialects/BUILD.bazel b/llvm-external-projects/iree-dialects/BUILD.bazel
index a2945ed..8b8c2d1 100644
--- a/llvm-external-projects/iree-dialects/BUILD.bazel
+++ b/llvm-external-projects/iree-dialects/BUILD.bazel
@@ -495,41 +495,6 @@
 ################################################################################
 
 gentbl_cc_library(
-    name = "IREELinalgTransformIncGen",
-    strip_include_prefix = "include",
-    tbl_outs = [
-        (
-            [
-                "--dialect=iree_linalg_transform",
-                "--gen-dialect-decls",
-            ],
-            "include/iree-dialects/Dialect/LinalgTransform/LinalgTransformDialect.h.inc",
-        ),
-        (
-            [
-                "--dialect=iree_linalg_transform",
-                "--gen-dialect-defs",
-            ],
-            "include/iree-dialects/Dialect/LinalgTransform/LinalgTransformDialect.cpp.inc",
-        ),
-        (
-            ["--gen-op-decls"],
-            "include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h.inc",
-        ),
-        (
-            ["--gen-op-defs"],
-            "include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.cpp.inc",
-        ),
-    ],
-    tblgen = "@llvm-project//mlir:mlir-tblgen",
-    td_file = "include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.td",
-    deps = [
-        ":TdFiles",
-        "@llvm-project//mlir:ControlFlowInterfacesTdFiles",
-    ],
-)
-
-gentbl_cc_library(
     name = "IREELinalgTransformStructuredIncGen",
     strip_include_prefix = "include",
     tbl_outs = [
@@ -564,7 +529,6 @@
         ":IREELinalgExtDialect",
         ":IREELinalgExtPasses",
         ":IREELinalgExtTransforms",
-        ":IREELinalgTransformIncGen",
         ":IREELinalgTransformStructuredIncGen",
         "@llvm-project//llvm:Support",
 
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h b/llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h
index 2ababb1..0051ee3 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h
@@ -31,8 +31,6 @@
 // LinalgTransform
 //===--------------------------------------------------------------------===//
 
-MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(LinalgTransform, iree_linalg_transform);
-
 /// Register all passes for LinalgTransform.
 MLIR_CAPI_EXPORTED void mlirIREELinalgTransformRegisterPasses();
 
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/CMakeLists.txt b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/CMakeLists.txt
index 144e245..c0ebeb4 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/CMakeLists.txt
@@ -1,13 +1,3 @@
-function(_add_dialect)
-  set(LLVM_TARGET_DEFINITIONS LinalgTransformOps.td)
-  mlir_tablegen(LinalgTransformOps.h.inc -gen-op-decls)
-  mlir_tablegen(LinalgTransformOps.cpp.inc -gen-op-defs)
-  mlir_tablegen(LinalgTransformDialect.h.inc --gen-dialect-decls --dialect=iree_linalg_transform)
-  mlir_tablegen(LinalgTransformDialect.cpp.inc --gen-dialect-defs --dialect=iree_linalg_transform)
-  add_public_tablegen_target(IREELinalgTransformIncGen)
-  add_dependencies(mlir-headers IREELinalgTransformIncGen)
-endfunction()
-
 function(_add_transform_dialect_extension)
   set(LLVM_TARGET_DEFINITIONS StructuredTransformOpsExt.td)
   mlir_tablegen(StructuredTransformOpsExt.h.inc -gen-op-decls)
@@ -16,20 +6,6 @@
   add_dependencies(mlir-headers IREELinalgTransformExtIncGen)
 endfunction()
 
-function(_add_transform_doc)
-  set(LLVM_TARGET_DEFINITIONS LinalgTransformOps.td)
-  mlir_tablegen(LinalgTransformOps.md -gen-dialect-doc)
-  set(GEN_DOC_FILE ${IREE_DIALECTS_BINARY_DIR}/docs/Dialects/LinalgTransformOps.md)
-  add_custom_command(
-          OUTPUT ${GEN_DOC_FILE}
-          COMMAND ${CMAKE_COMMAND} -E copy
-                  ${CMAKE_CURRENT_BINARY_DIR}/LinalgTransformOps.md
-                  ${GEN_DOC_FILE}
-          DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/LinalgTransformOps.md)
-  add_custom_target(LinalgTransformOpsDocGen DEPENDS ${GEN_DOC_FILE})
-  add_dependencies(iree-dialects-doc LinalgTransformOpsDocGen)
-endfunction()
-
 function(_add_structured_transform_doc)
   set(LLVM_TARGET_DEFINITIONS StructuredTransformOpsExt.td)
   mlir_tablegen(StructuredTransformOpsExt.md -gen-dialect-doc)
@@ -44,7 +20,5 @@
   add_dependencies(iree-dialects-doc StructuredTransformOpsExtDocGen)
 endfunction()
 
-_add_dialect()
 _add_transform_dialect_extension()
-_add_transform_doc()
 _add_structured_transform_doc()
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h
deleted file mode 100644
index 487e2e0..0000000
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#ifndef MLIR_DIALECT_LINALG_IR_LINALGTRANSFORMOPS_H
-#define MLIR_DIALECT_LINALG_IR_LINALGTRANSFORMOPS_H
-
-#include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtOps.h"
-#include "mlir/Dialect/Func/IR/FuncOps.h"
-#include "mlir/Dialect/Linalg/IR/Linalg.h"
-#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
-#include "mlir/IR/BuiltinAttributes.h"
-#include "mlir/IR/OpDefinition.h"
-
-namespace mlir {
-namespace scf {
-class ForOp;
-} // namespace scf
-} // namespace mlir
-
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformDialect.h.inc"
-
-#define GET_OP_CLASSES
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h.inc"
-
-#endif // MLIR_DIALECT_LINALG_IR_LINALGTRANSFORMOPS_H
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.td b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.td
deleted file mode 100644
index a349690..0000000
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.td
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#ifndef LINALG_TRANSFORM_OPS
-#define LINALG_TRANSFORM_OPS
-
-include "mlir/IR/OpBase.td"
-include "mlir/IR/OpAsmInterface.td"
-include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
-include "mlir/Interfaces/ControlFlowInterfaces.td"
-
-def Linalg_Transform_Dialect : Dialect {
-  let name = "iree_linalg_transform";
-  let cppNamespace = "::mlir::linalg::transform";
-  let dependentDialects = [
-    "linalg::LinalgDialect",
-  ];
-}
-
-// Operations with this trait must provide the following methods:
-//   - `Value target()` - returns the operation handle targeted by this
-//     transformation, if available;
-//   - `Optional<SymbolRefAttr> matcher()` - returns the name of the PDL matcher
-//     that selects the ops targeted by this transformation, if provided.
-class Linalg_Transform_Operation<string name, list<Trait> props = []>
-    : Op<Linalg_Transform_Dialect, name, props> {
-  let cppNamespace = "::mlir::linalg::transform";
-}
-
-class Transform_Op<string name, list<Trait> props = []>
-    : Linalg_Transform_Operation<name, !listconcat(props, [
-      DeclareOpInterfaceMethods<TransformOpInterface, ["apply"]>])>;
-
-//===----------------------------------------------------------------------===//
-
-def ScopeOp : Linalg_Transform_Operation<"util.scope",
-    [IsolatedFromAbove, DeclareOpInterfaceMethods<RegionBranchOpInterface>]> {
-  let description = [{An operation to restrict transformation scopes.}];
-
-  let regions = (region AnyRegion:$body);
-  let arguments = (ins Variadic<AnyType>:$ins);
-  let results = (outs Variadic<AnyType>:$outs);
-  let assemblyFormat = [{ `(` operands `)` attr-dict-with-keyword $body
-                          `:` functional-type(operands, results) }];
-}
-
-def ForwardOp : Linalg_Transform_Operation<"util.forward",
-                                           [Terminator, HasParent<"ScopeOp">]> {
-  let description = [{Terminator for a scope operation, indicating the results
-                      that should be forwarded out of the scope.}];
-
-  let arguments = (ins Variadic<AnyType>:$ins);
-  let assemblyFormat = "operands attr-dict `:` type(operands)";
-}
-
-//===----------------------------------------------------------------------===//
-
-def ExpertOp : Linalg_Transform_Operation<"expert"> {
-  let description = [{A "transformation expert" that can be lowered to a
-  sequence of transformations. The details of the lowering depend on the name
-  and are expressed declaratively.}];
-
-  let arguments = (ins TransformHandleTypeInterface:$target,
-                   StrAttr:$expertName);
-  let results = (outs TransformHandleTypeInterface:$transformed);
-
-  let assemblyFormat = "`apply` $expertName `to` $target attr-dict `:` functional-type(operands, results)";
-}
-
-#endif // LINALG_TRANSFORM_OPS
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/Passes.h b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/Passes.h
index 47bdbcf..b94f416 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/Passes.h
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/Passes.h
@@ -12,7 +12,6 @@
 namespace transform {
 
 void registerTransformDialectInterpreterPass();
-void registerLinalgTransformExpertExpansionPass();
 void registerDropSchedulePass();
 
 } // namespace transform
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/ScopedTransform.h b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/ScopedTransform.h
deleted file mode 100644
index a0594fe..0000000
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/ScopedTransform.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#ifndef IREE_LLVM_SANDBOX_DIALECTS_LINALGTRANSFORM_SCOPEDTRANSFORM_H
-#define IREE_LLVM_SANDBOX_DIALECTS_LINALGTRANSFORM_SCOPEDTRANSFORM_H
-
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
-
-namespace mlir {
-namespace linalg {
-namespace transform {
-ScopeOp wrapInScope(Operation *op);
-FailureOr<SmallVector<Operation *>> unwrapScope(ScopeOp scope);
-
-template <typename TransformT>
-auto scoped(Operation *target, TransformT &&transform) {
-  auto scope = wrapInScope(target);
-  Operation &op = *scope.getBody().front().begin();
-  auto result = transform(scope, &op);
-  if (failed(unwrapScope(scope)) || failed(result))
-    return decltype(result)(failure());
-  return result;
-}
-} // namespace transform
-} // namespace linalg
-} // namespace mlir
-
-#endif // IREE_LLVM_SANDBOX_DIALECTS_LINALGTRANSFORM_SCOPEDTRANSFORM_H
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h
index f5e63f2..64ed1ca 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h
@@ -19,9 +19,6 @@
 namespace linalg {
 class LinalgOp;
 } // namespace linalg
-namespace pdl {
-class FoOperationTyperOp;
-} // namespace pdl
 namespace scf {
 class ForOp;
 } // namespace scf
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.td b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.td
index 9d54633..b2940bc 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.td
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.td
@@ -15,36 +15,6 @@
 include "mlir/IR/OpAsmInterface.td"
 include "mlir/IR/OpBase.td"
 
-def LowerToLLVMOp : Op<Transform_Dialect, "lower_to_llvm",
-    [FunctionalStyleTransformOpTrait,
-     MemoryEffectsOpInterface,
-     DeclareOpInterfaceMethods<TransformOpInterface>,
-     ReportTrackingListenerFailuresOpTrait]> {
-  let description = [{
-    Indicates that the entire targeted module should be converted
-    to the LLVM dialect. This is expected to be the last transformation in
-    a sequence.
-
-    #### Return modes
-
-    This operation consumes the `target` handle and produces the `transformed`
-    handle.
-  }];
-
-  let arguments =
-    (ins TransformHandleTypeInterface:$target,
-     DefaultValuedAttr<BoolAttr, "false">:$reassociate_fp_reductions,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_index_optimizations,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_arm_neon,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_arm_sve,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_amx,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_x86vector,
-     DefaultValuedAttr<BoolAttr, "false">:$enable_async);
-  let results = (outs TransformHandleTypeInterface:$transformed);
-  let assemblyFormat = "$target attr-dict `:` functional-type($target, results)";
-  let cppNamespace = "mlir::transform_ext";
-}
-
 def RegisterMatchCallbacksOp :
     Op<Transform_Dialect, "iree.register_match_callbacks",
       [DeclareOpInterfaceMethods<MemoryEffectsOpInterface>,
diff --git a/llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp b/llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp
index 576e626..bdc886b 100644
--- a/llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp
+++ b/llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp
@@ -9,7 +9,6 @@
 #include "iree-dialects/Dialect/Input/InputDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/TransformOps/LinalgExtTransformOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree-dialects/Dialect/LinalgTransform/Passes.h"
 #include "iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h"
 #include "mlir/CAPI/IR.h"
@@ -44,15 +43,11 @@
 // IREELinalgTransform
 //===--------------------------------------------------------------------===//
 
-MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(
-    IREELinalgTransform, iree_linalg_transform,
-    mlir::linalg::transform::LinalgTransformDialect)
-
 void mlirIREELinalgTransformRegisterPasses() {
   mlir::linalg::transform::registerTransformDialectInterpreterPass();
-  mlir::linalg::transform::registerLinalgTransformExpertExpansionPass();
   mlir::linalg::transform::registerDropSchedulePass();
 }
+
 //===--------------------------------------------------------------------===//
 // TransformDialect
 //===--------------------------------------------------------------------===//
@@ -60,9 +55,8 @@
 void ireeRegisterTransformExtensions(MlirContext context) {
   MLIRContext *ctx = unwrap(context);
   DialectRegistry registry;
-  registry.addExtensions<
-      mlir::iree_compiler::IREE::LinalgExt::LinalgExtTransformOpsExtension,
-      mlir::transform_ext::StructuredTransformOpsExtension>();
+  registry
+      .addExtensions<mlir::transform_ext::StructuredTransformOpsExtension>();
   ctx->appendDialectRegistry(registry);
 }
 
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/CMakeLists.txt b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/CMakeLists.txt
index 8261fd5..9d99c95 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/CMakeLists.txt
@@ -1,6 +1,4 @@
 add_mlir_library(IREELinalgTransformDialect
-  LinalgTransformOps.cpp
-  ScopedTransform.cpp
   StructuredTransformOpsExt.cpp
 
   DEPENDS
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
deleted file mode 100644
index f6e6e33..0000000
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
-
-#include <algorithm>
-
-#include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtOps.h"
-#include "iree-dialects/Dialect/LinalgExt/Transforms/Transforms.h"
-#include "iree-dialects/Dialect/LinalgTransform/ScopedTransform.h"
-#include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
-#include "mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h"
-#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
-#include "mlir/Conversion/LinalgToStandard/LinalgToStandard.h"
-#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
-#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
-#include "mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h"
-#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
-#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
-#include "mlir/Dialect/Async/Passes.h"
-#include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
-#include "mlir/Dialect/Bufferization/Transforms/Bufferize.h"
-#include "mlir/Dialect/Bufferization/Transforms/OneShotAnalysis.h"
-#include "mlir/Dialect/Bufferization/Transforms/OneShotModuleBufferize.h"
-#include "mlir/Dialect/Func/IR/FuncOps.h"
-#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
-#include "mlir/Dialect/Linalg/Passes.h"
-#include "mlir/Dialect/Linalg/Transforms/Hoisting.h"
-#include "mlir/Dialect/Linalg/Transforms/Transforms.h"
-#include "mlir/Dialect/SCF/Transforms/Transforms.h"
-#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
-#include "mlir/Dialect/Utils/StaticValueUtils.h"
-#include "mlir/IR/Builders.h"
-#include "mlir/IR/Diagnostics.h"
-#include "mlir/IR/OpImplementation.h"
-#include "mlir/IR/SymbolTable.h"
-#include "mlir/Parser/Parser.h"
-#include "mlir/Pass/PassManager.h"
-#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
-#include "mlir/Transforms/InliningUtils.h"
-#include "mlir/Transforms/Passes.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/ScopeExit.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/Support/Debug.h"
-#include "llvm/Support/FormatVariadic.h"
-
-#define DEBUG_TYPE "linalg-transform-dialect"
-#define DBGS() (llvm::dbgs() << "[" DEBUG_TYPE << "]: ")
-
-using namespace mlir;
-using namespace mlir::iree_compiler::IREE;
-
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformDialect.cpp.inc"
-
-void linalg::transform::LinalgTransformDialect::initialize() {
-  addOperations<
-#define GET_OP_LIST
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.cpp.inc"
-      >();
-}
-
-//===---------------------------------------------------------------------===//
-// ScopeOp
-//===---------------------------------------------------------------------===//
-
-void linalg::transform::ScopeOp::getSuccessorRegions(
-    RegionBranchPoint point, SmallVectorImpl<RegionSuccessor> &regions) {
-  if (!point.isParent())
-    regions.emplace_back(getResults());
-  else
-    regions.emplace_back(&getBody());
-}
-
-#define GET_OP_CLASSES
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.cpp.inc"
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/ScopedTransform.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/ScopedTransform.cpp
deleted file mode 100644
index 74f4327..0000000
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/ScopedTransform.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#include "iree-dialects/Dialect/LinalgTransform/ScopedTransform.h"
-
-#include "mlir/Transforms/InliningUtils.h"
-
-using namespace mlir;
-
-namespace {
-struct Rewriter : public PatternRewriter {
-  Rewriter(MLIRContext *ctx) : PatternRewriter(ctx) {}
-};
-} // namespace
-
-linalg::transform::ScopeOp linalg::transform::wrapInScope(Operation *op) {
-  Rewriter rewriter(op->getContext());
-  rewriter.setInsertionPoint(op);
-
-  auto scope = rewriter.create<linalg::transform::ScopeOp>(
-      op->getLoc(), op->getResultTypes(), op->getOperands());
-  Region &body = scope.getBody();
-  rewriter.setInsertionPointToStart(&body.emplaceBlock());
-  IRMapping bv;
-  SmallVector<Location> locs(op->getOperandTypes().size(), op->getLoc());
-  bv.map(op->getOperands(), body.addArguments(op->getOperandTypes(), locs));
-
-  Operation *cloneInScope = rewriter.clone(*op, bv);
-  rewriter.create<ForwardOp>(op->getLoc(), cloneInScope->getResults());
-
-  rewriter.replaceOp(op, scope.getResults());
-  return scope;
-}
-
-namespace {
-/// Instruct the inliner to inline everything. Scopes have no semantic meaning
-/// so moving operations in and out of them, regardless of whether their
-/// dialects have implemented an inliner interface, is valid.
-struct ScopeInliner : public InlinerInterface {
-  using InlinerInterface::InlinerInterface;
-
-  bool isLegalToInline(Operation *call, Operation *callable,
-                       bool wouldBeCloned) const override {
-    return true;
-  }
-  bool isLegalToInline(Region *dest, Region *src, bool wouldBeCloned,
-                       IRMapping &valueMapping) const override {
-    return true;
-  }
-  bool isLegalToInline(Operation *op, Region *dest, bool wouldBeCloned,
-                       IRMapping &valueMapping) const override {
-    return true;
-  }
-
-  /// Don't recursively analyze operations, because they can all be "inlined".
-  bool shouldAnalyzeRecursively(Operation *op) const override { return false; }
-
-  /// Replace uses of the results with the `forward` op's operands.
-  void handleTerminator(Operation *op,
-                        ArrayRef<Value> valuesToRepl) const override {
-    assert(isa<linalg::transform::ForwardOp>(op));
-    for (auto value : llvm::zip(op->getOperands(), valuesToRepl))
-      std::get<1>(value).replaceAllUsesWith(std::get<0>(value));
-  }
-};
-} // namespace
-
-FailureOr<SmallVector<Operation *>>
-linalg::transform::unwrapScope(linalg::transform::ScopeOp scope) {
-  ScopeInliner interface(scope->getContext());
-  SmallVector<Operation *> ops;
-  scope.getBody().walk([&](Operation *op) { ops.push_back(op); });
-  if (failed(inlineRegion(interface, &scope.getBody(), scope,
-                          scope.getOperands(), scope.getResults(),
-                          /*inlineLoc=*/{},
-                          /*shouldCloneInlinedRegion=*/false)))
-    return failure();
-  Rewriter(scope->getContext()).eraseOp(scope);
-  return ops;
-}
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/StructuredTransformOpsExt.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/StructuredTransformOpsExt.cpp
index e5d14f0..75b309b 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/StructuredTransformOpsExt.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/StructuredTransformOpsExt.cpp
@@ -7,8 +7,6 @@
 #include "iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h"
 
 #include "iree-dialects/Dialect/LinalgExt/Passes/Passes.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/ScopedTransform.h"
 #include "iree-dialects/Transforms/ListenerCSE.h"
 #include "iree-dialects/Transforms/TransformMatchers.h"
 #include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
@@ -369,112 +367,6 @@
     status.attachNote(v.getLoc()) << "replacement value";
 }
 
-//===----------------------------------------------------------------------===//
-// TODO: WILL MIGRATE
-//===----------------------------------------------------------------------===//
-
-using namespace mlir::linalg;
-
-//===---------------------------------------------------------------------===//
-// LowerToLLVMOp
-//===---------------------------------------------------------------------===//
-
-DiagnosedSilenceableFailure transform_ext::LowerToLLVMOp::apply(
-    mlir::transform::TransformRewriter &rewriter,
-    mlir::transform::TransformResults &result,
-    mlir::transform::TransformState &state) {
-  auto payloadOps = state.getPayloadOps(getTarget());
-  if (!llvm::hasSingleElement(payloadOps) ||
-      !isa<ModuleOp>(*payloadOps.begin()))
-    return emitSilenceableError() << "expected single module target";
-  ModuleOp moduleOp = cast<ModuleOp>(*payloadOps.begin());
-
-  //===------------------------------------------------------------------===//
-  // BEGIN: Copied from upstream, this needs to be retired once we have a
-  // proper upstream transform op.
-  //===------------------------------------------------------------------===//
-
-  // TODO: it is feasible to scope lowering at arbitrary level and introduce
-  // unrealized casts, but there needs to be the final module-wise cleanup in
-  // the end. Keep module-level for now.
-  PassManager pm(getContext());
-
-  auto enableOpaquePointers = [](auto options) {
-    options.useOpaquePointers = true;
-    return options;
-  };
-
-  // Blanket-convert any remaining high-level vector ops to loops if any remain.
-  pm.addNestedPass<func::FuncOp>(createConvertVectorToSCFPass());
-  // Blanket-convert any remaining linalg ops to loops if any remain.
-  pm.addNestedPass<func::FuncOp>(createConvertLinalgToLoopsPass());
-  if (getEnableAsync()) {
-    pm.addPass(createAsyncToAsyncRuntimePass());
-    pm.addPass(createAsyncRuntimeRefCountingPass());
-    pm.addPass(createAsyncRuntimeRefCountingOptPass());
-  }
-  pm.addPass(createCanonicalizerPass());
-  // Blanket-convert any remaining affine ops if any remain.
-  pm.addPass(createLowerAffinePass());
-  // Convert SCF to CF (always needed).
-  pm.addPass(createConvertSCFToCFPass());
-  // Sprinkle some cleanups.
-  pm.addPass(createCanonicalizerPass());
-  pm.addPass(createCSEPass());
-  {
-    auto options = ConvertVectorToLLVMPassOptions();
-    options.reassociateFPReductions = getReassociateFpReductions();
-    options.force32BitVectorIndices = getEnableIndexOptimizations();
-    options.armNeon = getEnableArmNeon();
-    options.armSVE = getEnableArmSve();
-    options.amx = getEnableAmx();
-    options.x86Vector = getEnableX86vector();
-    options.useOpaquePointers = true;
-    pm.addPass(createConvertVectorToLLVMPass(options));
-  }
-  // Convert Math to LLVM (always needed).
-  pm.addNestedPass<func::FuncOp>(createConvertMathToLLVMPass());
-  // Expand complicated MemRef operations before lowering them.
-  pm.addPass(memref::createExpandStridedMetadataPass());
-  // The expansion may create affine expressions. Get rid of them.
-  pm.addPass(createLowerAffinePass());
-  // Convert MemRef to LLVM (always needed).
-  pm.addPass(createFinalizeMemRefToLLVMConversionPass(
-      enableOpaquePointers(FinalizeMemRefToLLVMConversionPassOptions{})));
-  if (getEnableAsync())
-    pm.addPass(createConvertAsyncToLLVMPass());
-  // Convert Func to LLVM (always needed).
-  pm.addPass(createConvertFuncToLLVMPass(
-      enableOpaquePointers(ConvertFuncToLLVMPassOptions{})));
-  // Convert Index to LLVM (always needed).
-  pm.addPass(createConvertIndexToLLVMPass());
-  // Convert remaining unrealized_casts (always needed).
-  pm.addPass(createReconcileUnrealizedCastsPass());
-
-  if (failed(pm.run(moduleOp)))
-    return DiagnosedSilenceableFailure::definiteFailure();
-
-  //===------------------------------------------------------------------===//
-  // END: Copied from upstream, this needs to be retired once we have a
-  // proper upstream transform op.
-  //===------------------------------------------------------------------===//
-
-  // Make all arguments noalias for now.
-  // FIXME: this is a terrible hack!
-  moduleOp->walk([](LLVM::LLVMFuncOp funcOp) {
-    for (int64_t i = 0; i < funcOp.getNumArguments(); ++i) {
-      if (!funcOp.getFunctionType()
-               .getParamType(i)
-               .isa<LLVM::LLVMPointerType>())
-        continue;
-      funcOp.setArgAttr(i, "llvm.noalias", UnitAttr::get(funcOp.getContext()));
-    }
-  });
-
-  result.set(getTransformed().cast<OpResult>(), payloadOps);
-  return DiagnosedSilenceableFailure::success();
-}
-
 //===---------------------------------------------------------------------===//
 // MatchCallbackOp
 //===---------------------------------------------------------------------===//
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/CMakeLists.txt b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/CMakeLists.txt
index 9c27d11..1a75d03 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/CMakeLists.txt
@@ -1,5 +1,4 @@
 add_mlir_library(IREELinalgTransformDialectPasses
-  ExpertExpansion.cpp
   TransformInterpreter.cpp
 
   DEPENDS
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/ExpertExpansion.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/ExpertExpansion.cpp
deleted file mode 100644
index 66b6b0c..0000000
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/ExpertExpansion.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/Passes.h"
-#include "iree-dialects/Dialect/LinalgTransform/SimplePatternRewriter.h"
-#include "mlir/Dialect/PDL/IR/PDLOps.h"
-#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"
-#include "mlir/IR/BuiltinOps.h"
-#include "mlir/IR/Diagnostics.h"
-#include "mlir/IR/PatternMatch.h"
-#include "mlir/Pass/Pass.h"
-#include "mlir/Pass/PassRegistry.h"
-#include "mlir/Rewrite/FrozenRewritePatternSet.h"
-#include "mlir/Rewrite/PatternApplicator.h"
-#include "llvm/Support/Debug.h"
-
-#define DEBUG_TYPE "expert-expansion"
-#define DBGS() (llvm::dbgs() << "[" DEBUG_TYPE "]")
-
-using namespace mlir;
-
-/// Expands the linalg::transform::ExpertOp instances in the `module` into lists
-/// of transformations as described by the `expansions` module that contains
-/// PDL.
-static void expandStrategyOps(ModuleOp module, ModuleOp expansions) {
-  mlir::OwningOpRef<mlir::ModuleOp> clonedExpansions(
-      cast<ModuleOp>(expansions->clone()));
-  RewritePatternSet patterns(std::move(clonedExpansions));
-  FrozenRewritePatternSet frozen(std::move(patterns));
-  PatternApplicator applicator(frozen);
-  applicator.applyDefaultCostModel();
-
-  module.walk([&](linalg::transform::ExpertOp expertOp) {
-    SimplePatternRewriter rewriter(expertOp);
-    if (failed(applicator.matchAndRewrite(expertOp, rewriter))) {
-      LLVM_DEBUG(DBGS() << "failed to rewrite strategy \""
-                        << expertOp.getExpertName() << "\"\n");
-    }
-  });
-}
-
-namespace {
-struct ExpertExpansion : public PassWrapper<ExpertExpansion, Pass> {
-  MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ExpertExpansion)
-
-  Pass::Option<std::string> strategyModuleName{
-      *this, "strategy-module-name", llvm::cl::init("strategies"),
-      llvm::cl::desc(
-          "Name of the nested module containing expert strategies.")};
-
-  explicit ExpertExpansion(StringRef name = "strategies")
-      : PassWrapper<ExpertExpansion, Pass>() {
-    strategyModuleName = name.str();
-  }
-
-  ExpertExpansion(const ExpertExpansion &other)
-      : PassWrapper<ExpertExpansion, Pass>(other) {
-    strategyModuleName = other.strategyModuleName.getValue();
-  }
-
-  StringRef getArgument() const final {
-    return "linalg-transform-expert-expansion";
-  }
-
-  void getDependentDialects(DialectRegistry &registry) const override {
-    registry.insert<pdl::PDLDialect, pdl_interp::PDLInterpDialect>();
-  }
-
-  StringRef getDescription() const final {
-    return "Expands transformation experts into individual transformations";
-  }
-
-  bool canScheduleOn(RegisteredOperationName opName) const override {
-    return true;
-  }
-
-  void runOnOperation() override {
-    auto module = dyn_cast<ModuleOp>(getOperation());
-    if (!module)
-      return signalPassFailure();
-
-    ModuleOp strategyModule = nullptr;
-    for (auto nestedModule : module.getOps<ModuleOp>()) {
-      std::optional<StringRef> name = nestedModule.getSymName();
-      if (!name)
-        continue;
-
-      if (*name == strategyModuleName) {
-        if (!strategyModule) {
-          strategyModule = nestedModule;
-          continue;
-        }
-        InFlightDiagnostic diag = nestedModule->emitError()
-                                  << "more than one strategy module provided";
-        diag.attachNote(strategyModule->getLoc()) << "previous strategy module";
-        return signalPassFailure();
-      }
-    }
-
-    if (!strategyModule) {
-      module->emitError() << "expected a nested strategy module";
-      return signalPassFailure();
-    }
-
-    expandStrategyOps(module, strategyModule);
-    strategyModule->erase();
-  }
-};
-} // namespace
-
-void mlir::linalg::transform::registerLinalgTransformExpertExpansionPass() {
-  PassRegistration<ExpertExpansion>(
-      []() { return std::make_unique<ExpertExpansion>(); });
-}
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
index 141ba9b..26c4777 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
@@ -6,7 +6,6 @@
 
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree-dialects/Dialect/LinalgTransform/Passes.h"
 #include "mlir/Dialect/Affine/IR/AffineOps.h"
 #include "mlir/Dialect/Arith/IR/Arith.h"
@@ -60,15 +59,14 @@
                     bufferization::BufferizationDialect,
                     func::FuncDialect,
                     linalg::LinalgDialect,
-                    linalg::transform::LinalgTransformDialect,
                     LLVM::LLVMDialect,
                     pdl::PDLDialect,
                     pdl_interp::PDLInterpDialect,
                     scf::SCFDialect,
                     tensor::TensorDialect,
                     vector::VectorDialect
-        // clang-format on
-        >();
+                    // clang-format on
+                    >();
 
     // TODO: these should be registered by the extension instead, but there is
     // no support for it in core currently.
diff --git a/llvm-external-projects/iree-dialects/python/CMakeLists.txt b/llvm-external-projects/iree-dialects/python/CMakeLists.txt
index ad42597..8169057 100644
--- a/llvm-external-projects/iree-dialects/python/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/python/CMakeLists.txt
@@ -31,15 +31,6 @@
   DIALECT_NAME iree_linalg_ext
 )
 
-declare_mlir_dialect_python_bindings(
-  ADD_TO_PARENT IREEDialectsPythonSources.Dialects
-  ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/iree/compiler"
-  TD_FILE dialects/LinalgTransformBinding.td
-  SOURCES dialects/iree_linalg_transform.py
-          dialects/_iree_linalg_transform_ops_ext.py
-  DIALECT_NAME iree_linalg_transform
-  )
-
 declare_mlir_dialect_extension_python_bindings(
   ADD_TO_PARENT IREEDialectsPythonSources.Dialects
   ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/iree/compiler"
diff --git a/llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp b/llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp
index 1a85609..3a55179 100644
--- a/llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp
+++ b/llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp
@@ -51,23 +51,6 @@
       py::arg("context") = py::none(), py::arg("load") = true);
 
   //===--------------------------------------------------------------------===//
-  // LinalgTransform
-  //===--------------------------------------------------------------------===//
-  auto iree_linalg_transform_m = m.def_submodule("iree_linalg_transform");
-  mlirIREELinalgTransformRegisterPasses();
-  iree_linalg_transform_m.def(
-      "register_dialect",
-      [](MlirContext context, bool load) {
-        MlirDialectHandle handle =
-            mlirGetDialectHandle__iree_linalg_transform__();
-        mlirDialectHandleRegisterDialect(handle, context);
-        if (load) {
-          mlirDialectHandleLoadDialect(handle, context);
-        }
-      },
-      py::arg("context") = py::none(), py::arg("load") = true);
-
-  //===--------------------------------------------------------------------===//
   // TransformDialect
   //===--------------------------------------------------------------------===//
   auto transform_m = m.def_submodule("transform");
diff --git a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/LinalgTransformBinding.td b/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/LinalgTransformBinding.td
deleted file mode 100644
index f606e8c..0000000
--- a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/LinalgTransformBinding.td
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#ifndef PYTHON_BINDINGS_IREE_LINALGTRANSFORM_BINDING
-#define PYTHON_BINDINGS_IREE_LINALGTRANSFORM_BINDING
-
-include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.td"
-
-#endif // PYTHON_BINDINGS_IREE_LINALGTRANSFORM_BINDING
diff --git a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/_iree_linalg_transform_ops_ext.py b/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/_iree_linalg_transform_ops_ext.py
deleted file mode 100644
index 2dc4516..0000000
--- a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/_iree_linalg_transform_ops_ext.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright 2021 The IREE Authors
-#
-# Licensed under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-# Disable PyType, it does not seem to like the specialization pattern used in
-# MLIR.
-# pytype: skip-file
-try:
-    from .. import ir
-    from ..dialects import pdl
-    from ._ods_common import (
-        extend_opview_class as _ods_extend_opview_class,
-        segmented_accessor as _ods_segmented_accessor,
-        equally_sized_accessor as _ods_equally_sized_accessor,
-        get_default_loc_context as _ods_get_default_loc_context,
-        get_op_result_or_value as _get_op_result_or_value,
-        get_op_results_or_values as _get_op_results_or_values,
-    )
-    from typing import Optional, Sequence, Union
-except ImportError as e:
-    raise RuntimeError("Error loading imports from extension module") from e
-BoolArg = Optional[Union[bool, ir.BoolAttr]]
-IntArg = Optional[Union[int, ir.IntegerAttr]]
-IntListArg = Optional[Union[Sequence[int], ir.ArrayAttr]]
-IntListListArg = Optional[
-    Union[Sequence[Union[Sequence[int], ir.ArrayAttr]], ir.ArrayAttr]
-]
-StringArg = Optional[Union[str, ir.StringAttr]]
-StringListArg = Optional[Union[Sequence[str], ir.ArrayAttr]]
-
-
-def _defaulted_ensure(f):
-    def inner(value, default=None):
-        assert value is not None or default is not None
-        return f(default if value is None else value)
-
-    return inner
-
-
-@_defaulted_ensure
-def _ensure_int_array_attr(value: IntListArg):
-    i64 = ir.IntegerType.get_signless(64)
-    if isinstance(value, Sequence):
-        return ir.ArrayAttr.get([ir.IntegerAttr.get(i64, i) for i in value])
-    return value
-
-
-@_defaulted_ensure
-def _ensure_string_array_attr(value: StringListArg):
-    if isinstance(value, Sequence):
-        return ir.ArrayAttr.get([ir.StringAttr.get(str(i)) for i in value])
-    return value
-
-
-@_defaulted_ensure
-def _ensure_array_of_array_attr(value: IntListListArg):
-    if isinstance(value, Sequence):
-        return ir.ArrayAttr.get([_ensure_int_array_attr(inner) for inner in value])
-    return value
-
-
-@_defaulted_ensure
-def _ensure_int_attr(value: IntArg):
-    if isinstance(value, int):
-        return ir.IntegerAttr.get(ir.IntegerType.get_signless(64), value)
-    return value
-
-
-@_defaulted_ensure
-def _ensure_bool_attr(value: BoolArg):
-    if isinstance(value, bool):
-        return ir.BoolAttr.get(value)
-    return value
-
-
-@_defaulted_ensure
-def _ensure_string_attr(value: StringArg):
-    if isinstance(value, str):
-        return ir.StringAttr.get(value)
-    return value
-
-
-def _count_expected_loops(tile_sizes: ir.ArrayAttr) -> int:
-    # Number of loops = number of tile sizes != 0
-    zero = _ensure_int_attr(0)
-    return len(list(tile_sizes)) - list(tile_sizes).count(zero)
-
-
-##===----------------------------------------------------------------------===##
-## LinalgExt specific transforms
-##===----------------------------------------------------------------------===##
-
-
-class TileToLinalgExtTileOp:
-    """Specialization for the TileToLinalgExtTileOp class."""
-
-    def __init__(
-        self,
-        target: Union[ir.Value, ir.Operation, ir.OpView],
-        *,
-        sizes: IntListArg = None,
-        loc=None,
-        ip=None
-    ):
-        sizes = _ensure_int_array_attr(sizes, [])
-        operation_type = pdl.OperationType.get()
-        super().__init__(operation_type, target, sizes, loc=loc, ip=ip)
-
-
-class FuseIntoContainingOp:
-    """Specialization for the FuseIntoContainingOp class."""
-
-    def __init__(
-        self,
-        producerOp: Union[ir.Value, ir.Operation, ir.OpView],
-        *,
-        containingOp: Union[ir.Value, ir.Operation, ir.OpView],
-        loc=None,
-        ip=None
-    ):
-        super().__init__([], producerOp, containingOp, loc=loc, ip=ip)
diff --git a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_linalg_transform.py b/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_linalg_transform.py
deleted file mode 100644
index 8bb7799..0000000
--- a/llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_linalg_transform.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2021 The IREE Authors
-#
-# Licensed under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-from ._iree_linalg_transform_ops_gen import *
-from .._mlir_libs._ireeDialects.iree_linalg_transform import *
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir
deleted file mode 100644
index 950351b..0000000
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: iree-dialects-opt --transform-dialect-interpreter --split-input-file --verify-diagnostics --allow-unregistered-dialect %s
-
-module {
-  func.func public @no_outlining() {
-    // expected-note @below {{target op}}
-    "some.operation"() ({}, {}) : () -> ()
-    return
-  }
-
-  transform.with_pdl_patterns {
-  ^bb0(%arg0: !pdl.operation):
-    pdl.pattern @some_operation : benefit(1) {
-      %0 = operation "some.operation"
-      rewrite %0 with "transform.dialect"
-    }
-
-    transform.sequence %arg0: !pdl.operation failures(propagate) {
-    ^bb1(%arg1: !pdl.operation):
-      %0 = pdl_match @some_operation in %arg1 : (!pdl.operation) -> !pdl.operation
-      // Make sure we don't crash on wrong operation type.
-      // expected-error@below {{failed to outline}}
-      transform.loop.outline %0 {func_name = "outlined"} : (!pdl.operation) -> (!pdl.operation, !pdl.operation)
-    }
-  }
-}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/roundtrip.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/roundtrip.mlir
deleted file mode 100644
index e0ba197..0000000
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/roundtrip.mlir
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: iree-dialects-opt %s | FileCheck %s
-
-// CHECK: transform.sequence
-transform.sequence failures(propagate) {
-^bb0(%arg0: !pdl.operation):
-  // CHECK: %[[OPS:.*]] = pdl_match @match1 in %{{.*}}
-  %0 = pdl_match @match1 in %arg0 : (!pdl.operation) -> !pdl.operation
-  // CHECK: %[[TILED:.*]], %{{.*}}:3 = transform.structured.tile_using_for %[[OPS]][4, 4, 4]
-  %1, %loops1:3 = transform.structured.tile_using_for %0 [4, 4, 4]
-      : (!pdl.operation) -> (!pdl.operation, !pdl.operation, !pdl.operation, !pdl.operation)
-  // CHECK: %[[TILED2:.*]], %{{.*}}:3 = transform.structured.tile_using_for %[[TILED]]
-  %2, %loops2:3  = transform.structured.tile_using_for %1 [2, 2, 2]
-      : (!pdl.operation) -> (!pdl.operation, !pdl.operation, !pdl.operation, !pdl.operation)
-  // CHECK: %[[PADDED:.*]], %{{.*}}, %{{.*}} = transform.structured.pad %[[TILED2]] {pack_paddings = [1, 1, 0]}
-  %3, %pad, %copy_back = transform.structured.pad %2 {pack_paddings = [1, 1, 0]} : (!pdl.operation) -> (!pdl.operation, !pdl.operation, !pdl.operation)
-  // CHECK: %{{.*}} = transform.structured.vectorize_children_and_apply_patterns %[[PADDED]] {vectorize_padding}
-  %4 = transform.structured.vectorize_children_and_apply_patterns %3 { vectorize_padding } : (!pdl.operation) -> !pdl.operation
-  // CHECK: %[[OPS2:.*]] = pdl_match @{{.*}}
-  %5 = pdl_match @match2 in %arg0 : (!pdl.operation) -> !pdl.operation
-  // CHECK: transform.structured.vectorize_children_and_apply_patterns %[[OPS2]]
-  transform.structured.vectorize_children_and_apply_patterns %5 : (!pdl.operation) -> !pdl.operation
-  // CHECK: %[[FUNC:.*]] = transform.structured.match ops{["func.func"]} in %arg0
-  // CHECK: apply_patterns.vector.lower_contraction
-  %6 = transform.structured.match ops{["func.func"]} in %arg0 : (!pdl.operation) -> !pdl.operation
-  transform.apply_patterns to %6 {
-      transform.apply_patterns.vector.lower_contraction lowering_strategy = "outerproduct"
-  } : !pdl.operation
-  // CHECK: lower_to_llvm
-  lower_to_llvm %arg0 : (!pdl.operation) -> !pdl.operation
-}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/scoped.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/scoped.mlir
deleted file mode 100644
index 7e66f09..0000000
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/scoped.mlir
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: iree-dialects-opt --test-wrap-scope='opname=arith.addi' %s | FileCheck %s --check-prefix WRAP
-// RUN: iree-dialects-opt --test-unwrap-scope %s | FileCheck %s --check-prefix UNWRAP
-
-// WRAP-LABEL: @test_wrap
-// WRAP-SAME: (%[[ARG0:.*]]: i32) -> i32
-func.func @test_wrap(%arg0: i32) -> i32 {
-  // WRAP: %[[V:.*]] = iree_linalg_transform.util.scope(%[[ARG0]], %[[ARG0]]) {
-  // WRAP-NEXT: ^[[B:.*]](%[[ARG1:.*]]: i32, %[[ARG2:.*]]: i32):
-  // WRAP-NEXT: %[[ADD:.*]] = arith.addi %[[ARG2]], %[[ARG2]]
-  // WRAP-NEXT: iree_linalg_transform.util.forward %[[ADD]]
-  // WRAP-NEXT: } : (i32, i32) -> i32
-  %0 = arith.addi %arg0, %arg0 : i32
-  // WRAP: return %[[V]]
-  return %0 : i32
-}
-
-// UNWRAP-LABEL: @test_unwrap
-// UNWRAP-SAME: (%[[ARG0:.*]]: i32) -> (i32, i32)
-func.func @test_unwrap(%arg0: i32) -> (i32, i32) {
-  // UNWRAP: %[[V0:.*]] = arith.addi %[[ARG0]], %[[ARG0]]
-  // UNWRAP-NEXT: %[[V1:.*]] = arith.addi %[[V0]], %[[ARG0]]
-  %0:2 = iree_linalg_transform.util.scope(%arg0) {
-  ^bb0(%arg1: i32):
-    %1 = arith.addi %arg1, %arg1 : i32
-    %2 = arith.addi %1, %arg1 : i32
-    iree_linalg_transform.util.forward %1, %2 : i32, i32
-  } : (i32) -> (i32, i32)
-  // UNWRAP-NEXT: return %[[V0]], %[[V1]]
-  return %0#0, %0#1 : i32, i32
-}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir
deleted file mode 100644
index 2d4c96b..0000000
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: iree-dialects-opt --transform-dialect-interpreter %s | FileCheck %s
-
-// CHECK-LABEL: func @matmul_tensors
-// CHECK-NOT: linalg
-// CHECK: llvm
-func.func @matmul_tensors(
-  %arg0: tensor<128x128xf32>, %arg1: tensor<128x128xf32>, %arg2: tensor<128x128xf32> { linalg.inplaceable = true})
-    -> tensor<128x128xf32> {
-  %0 = linalg.matmul  ins(%arg0, %arg1: tensor<128x128xf32>, tensor<128x128xf32>)
-                     outs(%arg2: tensor<128x128xf32>)
-    -> tensor<128x128xf32>
-
-  return %0 : tensor<128x128xf32>
-}
-
-
-transform.sequence failures(propagate) {
-^bb1(%module_op: !transform.any_op):
-  %0 = transform.structured.match ops{["linalg.matmul"]} in %module_op : (!transform.any_op) -> !transform.any_op
-  %1, %loops:3 = transform.structured.tile_using_for %0 [4, 4, 4]
-      : (!transform.any_op) -> (!transform.any_op, !transform.any_op, !transform.any_op, !transform.any_op)
-  %2 = get_parent_op %1 {isolated_from_above} : (!transform.any_op) -> !transform.any_op
-  transform.structured.vectorize_children_and_apply_patterns %2 { vectorize_padding } : (!transform.any_op) -> !transform.any_op
-  %module_op1 = transform.bufferization.one_shot_bufferize layout{IdentityLayoutMap} %module_op
-    {bufferize_function_boundaries = true} : (!transform.any_op) -> !transform.any_op
-
-  %func = transform.structured.match ops{["func.func"]} in %module_op1
-    : (!transform.any_op) -> !transform.any_op
-  transform.apply_patterns to %func {
-      transform.apply_patterns.vector.lower_contraction lowering_strategy = "outerproduct"
-  } : !transform.any_op
-  transform.apply_patterns to %func {
-      transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_1d"
-  } : !transform.any_op
-
-  lower_to_llvm %module_op1 : (!transform.any_op) -> !transform.any_op
-}
diff --git a/llvm-external-projects/iree-dialects/test/lib/CMakeLists.txt b/llvm-external-projects/iree-dialects/test/lib/CMakeLists.txt
index 557daa8..e31af32 100644
--- a/llvm-external-projects/iree-dialects/test/lib/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/test/lib/CMakeLists.txt
@@ -1,2 +1 @@
-add_subdirectory(Dialect)
 add_subdirectory(Transforms)
diff --git a/llvm-external-projects/iree-dialects/test/lib/Dialect/CMakeLists.txt b/llvm-external-projects/iree-dialects/test/lib/Dialect/CMakeLists.txt
deleted file mode 100644
index 1da2860..0000000
--- a/llvm-external-projects/iree-dialects/test/lib/Dialect/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_subdirectory(LinalgTransform)
diff --git a/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/CMakeLists.txt b/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/CMakeLists.txt
deleted file mode 100644
index 261b91d..0000000
--- a/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-add_mlir_library(IREELinalgTransformTestPasses
-  TestScopedTransform.cpp
-
-  EXCLUDE_FROM_LIBMLIR
-
-  DEPENDS
-  mlir-headers
-
-  LINK_LIBS PUBLIC
-  IREELinalgTransformDialectPasses
-  MLIRPass
-  )
diff --git a/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/TestScopedTransform.cpp b/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/TestScopedTransform.cpp
deleted file mode 100644
index 8d46c1a..0000000
--- a/llvm-external-projects/iree-dialects/test/lib/Dialect/LinalgTransform/TestScopedTransform.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2021 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#include "iree-dialects/Dialect/LinalgTransform/ScopedTransform.h"
-#include "mlir/Pass/Pass.h"
-
-using namespace mlir;
-using namespace mlir::linalg;
-
-namespace {
-struct TestWrapScopePass : public PassWrapper<TestWrapScopePass, Pass> {
-  MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestWrapScopePass)
-
-  TestWrapScopePass() = default;
-  TestWrapScopePass(const TestWrapScopePass &other) : PassWrapper(other) {}
-
-  StringRef getArgument() const final { return "test-wrap-scope"; }
-  StringRef getDescription() const final { return "Test wrap scope pass."; }
-  bool canScheduleOn(RegisteredOperationName opName) const override {
-    return true;
-  }
-
-  void getDependentDialects(DialectRegistry &registry) const override {
-    registry.insert<linalg::transform::LinalgTransformDialect>();
-  }
-
-  void runOnOperation() override {
-    getOperation()->walk([&](Operation *op) {
-      if (op->getName().getStringRef() != opToWrap)
-        return;
-      linalg::transform::wrapInScope(op);
-    });
-  }
-
-  Pass::Option<std::string> opToWrap{*this, "opname",
-                                     llvm::cl::desc("Op to wrap")};
-};
-
-struct TestUnwrapScopePass : public PassWrapper<TestUnwrapScopePass, Pass> {
-  MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestUnwrapScopePass)
-  StringRef getArgument() const final { return "test-unwrap-scope"; }
-  StringRef getDescription() const final { return "Test unwrap scope pass."; }
-  bool canScheduleOn(RegisteredOperationName opName) const override {
-    return true;
-  }
-
-  void runOnOperation() override {
-    getOperation()->walk(
-        [](linalg::transform::ScopeOp scope) { (void)unwrapScope(scope); });
-  }
-};
-} // namespace
-
-namespace mlir {
-namespace test_ext {
-void registerTestLinalgTransformWrapScope() {
-  PassRegistration<TestWrapScopePass>();
-  PassRegistration<TestUnwrapScopePass>();
-}
-} // namespace test_ext
-} // namespace mlir
diff --git a/llvm-external-projects/iree-dialects/test/python/smoketest.py b/llvm-external-projects/iree-dialects/test/python/smoketest.py
index fe1abb7..dae437c 100644
--- a/llvm-external-projects/iree-dialects/test/python/smoketest.py
+++ b/llvm-external-projects/iree-dialects/test/python/smoketest.py
@@ -3,9 +3,7 @@
 import iree.compiler.ir
 from iree.compiler.dialects import iree_input as iree_d
 from iree.compiler.dialects import iree_linalg_ext
-from iree.compiler.dialects import iree_linalg_transform
 
 with iree.compiler.ir.Context() as ctx:
     iree_d.register_dialect()
     iree_linalg_ext.register_dialect()
-    iree_linalg_transform.register_dialect()
diff --git a/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt b/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt
index fe4625d..548b60e 100644
--- a/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt
+++ b/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt
@@ -7,7 +7,6 @@
   IREELinalgExtTransforms
   IREELinalgTransformDialect
   IREELinalgTransformDialectPasses
-  IREELinalgTransformTestPasses
   IREETransformsTestPasses
   # Core dialects.
   MLIRAffineDialect
diff --git a/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/iree-dialects-opt.cpp b/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/iree-dialects-opt.cpp
index 692f0c5..b7e73f3 100644
--- a/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/iree-dialects-opt.cpp
+++ b/llvm-external-projects/iree-dialects/tools/iree-dialects-opt/iree-dialects-opt.cpp
@@ -8,7 +8,6 @@
 #include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtDialect.h"
 #include "iree-dialects/Dialect/LinalgExt/Passes/Passes.h"
 #include "iree-dialects/Dialect/LinalgExt/TransformOps/LinalgExtTransformOps.h"
-#include "iree-dialects/Dialect/LinalgTransform/LinalgTransformOps.h"
 #include "iree-dialects/Dialect/LinalgTransform/Passes.h"
 #include "iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h"
 #include "mlir/Dialect/Affine/IR/AffineOps.h"
@@ -46,7 +45,6 @@
 namespace mlir {
 namespace test_ext {
 /// Test passes, do not deserve an include.
-void registerTestLinalgTransformWrapScope();
 void registerTestListenerPasses();
 } // namespace test_ext
 } // namespace mlir
@@ -61,7 +59,6 @@
       // Local dialects
       mlir::iree_compiler::IREE::Input::IREEInputDialect,
       mlir::iree_compiler::IREE::LinalgExt::IREELinalgExtDialect,
-      mlir::linalg::transform::LinalgTransformDialect,
       // Upstream dialects
       mlir::async::AsyncDialect,
       mlir::arith::ArithDialect,
@@ -86,10 +83,8 @@
   // Local dialect passes.
   mlir::iree_compiler::IREE::LinalgExt::registerPasses();
   mlir::linalg::transform::registerTransformDialectInterpreterPass();
-  mlir::linalg::transform::registerLinalgTransformExpertExpansionPass();
   mlir::linalg::transform::registerDropSchedulePass();
   // Local test passes.
-  mlir::test_ext::registerTestLinalgTransformWrapScope();
   mlir::test_ext::registerTestListenerPasses();
 
   // External models.