Move runtime libraries from iree/tools/ into runtime/. (#9084)

Progress on https://github.com/google/iree/issues/8955, follow-up to https://github.com/google/iree/pull/9077.

This moves runtime library code from `iree/tools/utils` to `runtime/src/iree/tools/utils/`. The 'utils' name is still unfortunate (preferably each file would have a better place), but we can address that further down the line.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0a033d4..ea40f03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -634,6 +634,7 @@
   add_subdirectory(compiler)
 endif()
 
+# tools/ can depend on compiler/ and runtime/
 add_subdirectory(iree/tools)
 
 if(IREE_BUILD_TRACY)
@@ -690,7 +691,7 @@
 add_subdirectory(build_tools/benchmarks)
 
 #-------------------------------------------------------------------------------
-# Transitional directories.
+# Transitional directories
 #-------------------------------------------------------------------------------
 
 # The runtime uses tools and targets from elsewhere in the tree in a way
@@ -698,6 +699,8 @@
 # many things into top-level APIs). This should resolve once we finish
 # relayering everything.
 add_subdirectory(runtime)
+
+# samples/ can depend on anything, so we include it last
 if(IREE_BUILD_SAMPLES)
   add_subdirectory(samples)
 endif()
diff --git a/compiler/src/iree/compiler/ConstEval/BUILD b/compiler/src/iree/compiler/ConstEval/BUILD
index 40bfa3d..a1d437d 100644
--- a/compiler/src/iree/compiler/ConstEval/BUILD
+++ b/compiler/src/iree/compiler/ConstEval/BUILD
@@ -74,10 +74,10 @@
     ],
     deps = [
         "//compiler/src/iree/compiler/Dialect/VM/Target/Bytecode",
-        "//iree/tools/utils:vm_util",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/vmvx/registration",
         "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/tools/utils:vm_util",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:bytecode_module",
         "//runtime/src/iree/vm:cc",
diff --git a/iree/tools/BUILD b/iree/tools/BUILD
index e3e0e22..64c8267 100644
--- a/iree/tools/BUILD
+++ b/iree/tools/BUILD
@@ -17,7 +17,6 @@
     name = "iree-benchmark-module",
     srcs = ["iree-benchmark-module-main.cc"],
     deps = [
-        "//iree/tools/utils:vm_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
@@ -26,6 +25,7 @@
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
         "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/tools/utils:vm_util",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:bytecode_module",
         "//runtime/src/iree/vm:cc",
@@ -37,8 +37,6 @@
     name = "iree-benchmark-trace",
     srcs = ["iree-benchmark-trace-main.c"],
     deps = [
-        "//iree/tools/utils:trace_replay",
-        "//iree/tools/utils:yaml_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:atomic_slist",
@@ -47,6 +45,8 @@
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
         "//runtime/src/iree/testing:benchmark",
+        "//runtime/src/iree/tools/utils:trace_replay",
+        "//runtime/src/iree/tools/utils:yaml_util",
         "//runtime/src/iree/vm",
         "@com_github_yaml_libyaml//:yaml",
     ],
@@ -57,7 +57,6 @@
     testonly = True,
     srcs = ["iree-check-module-main.cc"],
     deps = [
-        "//iree/tools/utils:vm_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
@@ -70,6 +69,7 @@
         "//runtime/src/iree/modules/check",
         "//runtime/src/iree/modules/hal",
         "//runtime/src/iree/testing:gtest",
+        "//runtime/src/iree/tools/utils:vm_util",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:bytecode_module",
     ],
@@ -129,7 +129,6 @@
         "//compiler/src/iree/compiler/Tools:init_passes_and_dialects",
         "//compiler/src/iree/compiler/Tools:init_targets",
         "//compiler/src/iree/compiler/Translation:IREEVM",
-        "//iree/tools/utils:vm_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:logging",
@@ -138,6 +137,7 @@
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
         "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/tools/utils:vm_util",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:bytecode_module",
         "//runtime/src/iree/vm:cc",
@@ -155,7 +155,6 @@
     name = "iree-run-module",
     srcs = ["iree-run-module-main.cc"],
     deps = [
-        "//iree/tools/utils:vm_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
@@ -164,6 +163,7 @@
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
         "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/tools/utils:vm_util",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:bytecode_module",
         "//runtime/src/iree/vm:cc",
@@ -174,14 +174,14 @@
     name = "iree-run-trace",
     srcs = ["iree-run-trace-main.c"],
     deps = [
-        "//iree/tools/utils:trace_replay",
-        "//iree/tools/utils:yaml_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_path",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
+        "//runtime/src/iree/tools/utils:trace_replay",
+        "//runtime/src/iree/tools/utils:yaml_util",
         "//runtime/src/iree/vm",
         "@com_github_yaml_libyaml//:yaml",
     ],
@@ -191,9 +191,6 @@
     name = "iree-e2e-matmul-test",
     srcs = ["iree-e2e-matmul-test.c"],
     deps = [
-        "//iree/tools/utils:cpu_features",
-        "//iree/tools/utils:trace_replay",
-        "//iree/tools/utils:yaml_util",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base:tracing",
@@ -202,6 +199,9 @@
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers",
         "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/tools/utils:cpu_features",
+        "//runtime/src/iree/tools/utils:trace_replay",
+        "//runtime/src/iree/tools/utils:yaml_util",
         "//runtime/src/iree/vm",
         "@com_github_yaml_libyaml//:yaml",
     ],
diff --git a/iree/tools/CMakeLists.txt b/iree/tools/CMakeLists.txt
index b06a94b..d44da6d 100644
--- a/iree/tools/CMakeLists.txt
+++ b/iree/tools/CMakeLists.txt
@@ -6,8 +6,8 @@
 
 # Doesn't use bazel_to_cmake because of various special logic throughout.
 
-# TODO(#6353)Tools has thread dependency in gtest and benchmark; they should
-# be separated into the runtime tools and compiler tools.
+# TODO(#6353): Tools has thread dependencies in gtest, benchmark, yaml, etc.
+# This should be split between runtime/compiler with optional threading support.
 if(NOT IREE_ENABLE_THREADING)
   return()
 endif()
@@ -28,7 +28,6 @@
 
 add_subdirectory(android)
 add_subdirectory(test)
-add_subdirectory(utils)
 
 iree_cc_binary(
   NAME
diff --git a/runtime/src/iree/CMakeLists.txt b/runtime/src/iree/CMakeLists.txt
index 3b1f024..1e70c9d 100644
--- a/runtime/src/iree/CMakeLists.txt
+++ b/runtime/src/iree/CMakeLists.txt
@@ -4,12 +4,4 @@
 # See https://llvm.org/LICENSE.txt for license information.
 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-add_subdirectory(base)
-add_subdirectory(builtins)
-add_subdirectory(hal)
-add_subdirectory(modules)
-add_subdirectory(runtime)
-add_subdirectory(schemas)
-add_subdirectory(task)
-add_subdirectory(testing)
-add_subdirectory(vm)
+iree_add_all_subdirs()
diff --git a/runtime/src/iree/tools/BUILD b/runtime/src/iree/tools/BUILD
new file mode 100644
index 0000000..cadf491
--- /dev/null
+++ b/runtime/src/iree/tools/BUILD
@@ -0,0 +1,11 @@
+# Copyright 2022 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
+
+package(
+    default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
+    licenses = ["notice"],  # Apache 2.0
+)
diff --git a/runtime/src/iree/tools/CMakeLists.txt b/runtime/src/iree/tools/CMakeLists.txt
new file mode 100644
index 0000000..395824e
--- /dev/null
+++ b/runtime/src/iree/tools/CMakeLists.txt
@@ -0,0 +1,13 @@
+################################################################################
+# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
+# runtime/src/iree/tools/BUILD                                                 #
+#                                                                              #
+# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
+# CMake-only content.                                                          #
+#                                                                              #
+# To disable autogeneration for this file entirely, delete this header.        #
+################################################################################
+
+iree_add_all_subdirs()
+
+### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/iree/tools/utils/BUILD b/runtime/src/iree/tools/utils/BUILD
similarity index 91%
rename from iree/tools/utils/BUILD
rename to runtime/src/iree/tools/utils/BUILD
index 2229e41..21c9640 100644
--- a/iree/tools/utils/BUILD
+++ b/runtime/src/iree/tools/utils/BUILD
@@ -13,20 +13,12 @@
 )
 
 cc_library(
-    name = "trace_replay",
-    srcs = ["trace_replay.c"],
-    hdrs = ["trace_replay.h"],
+    name = "cpu_features",
+    srcs = ["cpu_features.c"],
+    hdrs = ["cpu_features.h"],
     deps = [
-        ":yaml_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
-        "//runtime/src/iree/base/internal:file_io",
-        "//runtime/src/iree/base/internal:file_path",
-        "//runtime/src/iree/hal",
-        "//runtime/src/iree/modules/hal",
-        "//runtime/src/iree/vm",
-        "//runtime/src/iree/vm:bytecode_module",
-        "@com_github_yaml_libyaml//:yaml",
+        "//runtime/src/iree/base:target_platform",
     ],
 )
 
@@ -79,6 +71,32 @@
     inline = True,
 )
 
+iree_cmake_extra_content(
+    content = """
+# libyaml does not build cleanly on bare-metal systems
+if(IREE_ENABLE_THREADING)
+""",
+    inline = True,
+)
+
+cc_library(
+    name = "trace_replay",
+    srcs = ["trace_replay.c"],
+    hdrs = ["trace_replay.h"],
+    deps = [
+        ":yaml_util",
+        "//runtime/src/iree/base",
+        "//runtime/src/iree/base:tracing",
+        "//runtime/src/iree/base/internal:file_io",
+        "//runtime/src/iree/base/internal:file_path",
+        "//runtime/src/iree/hal",
+        "//runtime/src/iree/modules/hal",
+        "//runtime/src/iree/vm",
+        "//runtime/src/iree/vm:bytecode_module",
+        "@com_github_yaml_libyaml//:yaml",
+    ],
+)
+
 cc_library(
     name = "yaml_util",
     srcs = ["yaml_util.c"],
@@ -89,12 +107,9 @@
     ],
 )
 
-cc_library(
-    name = "cpu_features",
-    srcs = ["cpu_features.c"],
-    hdrs = ["cpu_features.h"],
-    deps = [
-        "//runtime/src/iree/base",
-        "//runtime/src/iree/base:target_platform",
-    ],
+iree_cmake_extra_content(
+    content = """
+endif()
+""",
+    inline = True,
 )
diff --git a/iree/tools/utils/CMakeLists.txt b/runtime/src/iree/tools/utils/CMakeLists.txt
similarity index 93%
rename from iree/tools/utils/CMakeLists.txt
rename to runtime/src/iree/tools/utils/CMakeLists.txt
index 045280e..8753d04 100644
--- a/iree/tools/utils/CMakeLists.txt
+++ b/runtime/src/iree/tools/utils/CMakeLists.txt
@@ -1,6 +1,6 @@
 ################################################################################
 # Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/tools/utils/BUILD                                                       #
+# runtime/src/iree/tools/utils/BUILD                                           #
 #                                                                              #
 # Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
 # CMake-only content.                                                          #
@@ -12,22 +12,14 @@
 
 iree_cc_library(
   NAME
-    trace_replay
+    cpu_features
   HDRS
-    "trace_replay.h"
+    "cpu_features.h"
   SRCS
-    "trace_replay.c"
+    "cpu_features.c"
   DEPS
-    ::yaml_util
     iree::base
-    iree::base::internal::file_io
-    iree::base::internal::file_path
-    iree::base::tracing
-    iree::hal
-    iree::modules::hal
-    iree::vm
-    iree::vm::bytecode_module
-    yaml
+    iree::base::target_platform
   PUBLIC
 )
 
@@ -73,6 +65,30 @@
 
 endif()
 
+# libyaml does not build cleanly on bare-metal systems
+if(IREE_ENABLE_THREADING)
+
+iree_cc_library(
+  NAME
+    trace_replay
+  HDRS
+    "trace_replay.h"
+  SRCS
+    "trace_replay.c"
+  DEPS
+    ::yaml_util
+    iree::base
+    iree::base::internal::file_io
+    iree::base::internal::file_path
+    iree::base::tracing
+    iree::hal
+    iree::modules::hal
+    iree::vm
+    iree::vm::bytecode_module
+    yaml
+  PUBLIC
+)
+
 iree_cc_library(
   NAME
     yaml_util
@@ -86,18 +102,7 @@
   PUBLIC
 )
 
-iree_cc_library(
-  NAME
-    cpu_features
-  HDRS
-    "cpu_features.h"
-  SRCS
-    "cpu_features.c"
-  DEPS
-    iree::base
-    iree::base::target_platform
-  PUBLIC
-)
+endif()
 
 ### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
 
diff --git a/iree/tools/utils/cpu_features.c b/runtime/src/iree/tools/utils/cpu_features.c
similarity index 100%
rename from iree/tools/utils/cpu_features.c
rename to runtime/src/iree/tools/utils/cpu_features.c
diff --git a/iree/tools/utils/cpu_features.h b/runtime/src/iree/tools/utils/cpu_features.h
similarity index 100%
rename from iree/tools/utils/cpu_features.h
rename to runtime/src/iree/tools/utils/cpu_features.h
diff --git a/iree/tools/utils/image_util.c b/runtime/src/iree/tools/utils/image_util.c
similarity index 97%
rename from iree/tools/utils/image_util.c
rename to runtime/src/iree/tools/utils/image_util.c
index adb83db..617425e 100644
--- a/iree/tools/utils/image_util.c
+++ b/runtime/src/iree/tools/utils/image_util.c
@@ -84,9 +84,9 @@
       break;
     }
     default:
-      return iree_make_status(IREE_STATUS_INVALID_ARGUMENT,
-                              "Input buffer shape rank %lu not supported",
-                              shape_rank);
+      return iree_make_status(
+          IREE_STATUS_INVALID_ARGUMENT,
+          "Input buffer shape rank %" PRIhsz " not supported", shape_rank);
   }
   // Drop the alpha channel if present.
   int req_ch = (img_dims[2] >= 3) ? 3 : 0;
diff --git a/iree/tools/utils/image_util.h b/runtime/src/iree/tools/utils/image_util.h
similarity index 100%
rename from iree/tools/utils/image_util.h
rename to runtime/src/iree/tools/utils/image_util.h
diff --git a/iree/tools/utils/trace_replay.c b/runtime/src/iree/tools/utils/trace_replay.c
similarity index 100%
rename from iree/tools/utils/trace_replay.c
rename to runtime/src/iree/tools/utils/trace_replay.c
diff --git a/iree/tools/utils/trace_replay.h b/runtime/src/iree/tools/utils/trace_replay.h
similarity index 100%
rename from iree/tools/utils/trace_replay.h
rename to runtime/src/iree/tools/utils/trace_replay.h
diff --git a/iree/tools/utils/vm_util.cc b/runtime/src/iree/tools/utils/vm_util.cc
similarity index 100%
rename from iree/tools/utils/vm_util.cc
rename to runtime/src/iree/tools/utils/vm_util.cc
diff --git a/iree/tools/utils/vm_util.h b/runtime/src/iree/tools/utils/vm_util.h
similarity index 100%
rename from iree/tools/utils/vm_util.h
rename to runtime/src/iree/tools/utils/vm_util.h
diff --git a/iree/tools/utils/vm_util_test.cc b/runtime/src/iree/tools/utils/vm_util_test.cc
similarity index 100%
rename from iree/tools/utils/vm_util_test.cc
rename to runtime/src/iree/tools/utils/vm_util_test.cc
diff --git a/iree/tools/utils/yaml_util.c b/runtime/src/iree/tools/utils/yaml_util.c
similarity index 100%
rename from iree/tools/utils/yaml_util.c
rename to runtime/src/iree/tools/utils/yaml_util.c
diff --git a/iree/tools/utils/yaml_util.h b/runtime/src/iree/tools/utils/yaml_util.h
similarity index 100%
rename from iree/tools/utils/yaml_util.h
rename to runtime/src/iree/tools/utils/yaml_util.h