Moving iree_e2e_test_value_t out of tooling/, no clue why it was there.
diff --git a/runtime/src/iree/tooling/trace_replay.h b/runtime/src/iree/tooling/trace_replay.h
index caa157e..db2de14 100644
--- a/runtime/src/iree/tooling/trace_replay.h
+++ b/runtime/src/iree/tooling/trace_replay.h
@@ -89,133 +89,6 @@
                                            yaml_node_t* event_node,
                                            iree_vm_list_t** out_output_list);
 
-// Defines the type of a primitive value.
-typedef enum iree_e2e_test_value_type_e {
-  // Not a value type.
-  IREE_E2E_TEST_VALUE_TYPE_NONE = 0,
-  // int8_t.
-  IREE_E2E_TEST_VALUE_TYPE_I8 = 1,
-  // int16_t.
-  IREE_E2E_TEST_VALUE_TYPE_I16 = 2,
-  // int32_t.
-  IREE_E2E_TEST_VALUE_TYPE_I32 = 3,
-  // int64_t.
-  IREE_E2E_TEST_VALUE_TYPE_I64 = 4,
-  // halft_t.
-  IREE_E2E_TEST_VALUE_TYPE_F16 = 5,
-  // float.
-  IREE_E2E_TEST_VALUE_TYPE_F32 = 6,
-  // double.
-  IREE_E2E_TEST_VALUE_TYPE_F64 = 7,
-} iree_e2e_test_value_type_t;
-
-// Maximum size, in bytes, of any value type we can represent.
-#define IREE_E2E_TEST_VALUE_STORAGE_SIZE 8
-
-// A variant value type.
-typedef struct iree_e2e_test_value_t {
-  iree_e2e_test_value_type_t type;
-  union {
-    int8_t i8;
-    int16_t i16;
-    int32_t i32;
-    int64_t i64;
-    float f32;
-    uint16_t f16_u16;
-    double f64;
-
-    uint8_t value_storage[IREE_E2E_TEST_VALUE_STORAGE_SIZE];  // max size of all
-                                                              // value types
-  };
-} iree_e2e_test_value_t;
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_none() {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_NONE;
-  return result;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_i8(int8_t value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_I8;
-  result.i8 = value;
-  return result;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_i16(
-    int16_t value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_I16;
-  result.i16 = value;
-  return result;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_i32(
-    int32_t value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_I32;
-  result.i32 = value;
-  return result;
-}
-
-// TODO(#5542): check the value type before accessing the union.
-static inline int32_t iree_e2e_test_value_get_i32(
-    iree_e2e_test_value_t* value) {
-  return value->i32;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_i64(
-    int64_t value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_I64;
-  result.i64 = value;
-  return result;
-}
-
-// TODO(#5542): check the value type before accessing the union.
-static inline int64_t iree_e2e_test_value_get_i64(
-    iree_e2e_test_value_t* value) {
-  return value->i64;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_f16(
-    uint16_t value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_F16;
-  result.f16_u16 = value;
-  return result;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_f32(float value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_F32;
-  result.f32 = value;
-  return result;
-}
-
-// TODO(#5542): check the value type before accessing the union.
-static inline float iree_e2e_test_value_get_f32(iree_e2e_test_value_t* value) {
-  return value->f32;
-}
-
-// TODO(#5542): check the value type before accessing the union.
-static inline uint16_t iree_e2e_test_value_get_f16(
-    iree_e2e_test_value_t* value) {
-  return value->f16_u16;
-}
-
-static inline iree_e2e_test_value_t iree_e2e_test_value_make_f64(double value) {
-  iree_e2e_test_value_t result;
-  result.type = IREE_E2E_TEST_VALUE_TYPE_F64;
-  result.f64 = value;
-  return result;
-}
-
-// TODO(#5542): check the value type before accessing the union.
-static inline double iree_e2e_test_value_get_f64(iree_e2e_test_value_t* value) {
-  return value->f64;
-}
-
 #ifdef __cplusplus
 }  // extern "C"
 #endif  // __cplusplus
diff --git a/tools/iree-e2e-matmul-test.c b/tools/iree-e2e-matmul-test.c
index 217d4e6..e77a89c 100644
--- a/tools/iree-e2e-matmul-test.c
+++ b/tools/iree-e2e-matmul-test.c
@@ -27,6 +27,132 @@
 
 static const char* emoji(bool good) { return good ? "🦄" : "🐞"; }
 
+// Defines the type of a primitive value.
+typedef enum iree_e2e_test_value_type_e {
+  // Not a value type.
+  IREE_E2E_TEST_VALUE_TYPE_NONE = 0,
+  // int8_t.
+  IREE_E2E_TEST_VALUE_TYPE_I8 = 1,
+  // int16_t.
+  IREE_E2E_TEST_VALUE_TYPE_I16 = 2,
+  // int32_t.
+  IREE_E2E_TEST_VALUE_TYPE_I32 = 3,
+  // int64_t.
+  IREE_E2E_TEST_VALUE_TYPE_I64 = 4,
+  // halft_t.
+  IREE_E2E_TEST_VALUE_TYPE_F16 = 5,
+  // float.
+  IREE_E2E_TEST_VALUE_TYPE_F32 = 6,
+  // double.
+  IREE_E2E_TEST_VALUE_TYPE_F64 = 7,
+} iree_e2e_test_value_type_t;
+
+// Maximum size, in bytes, of any value type we can represent.
+#define IREE_E2E_TEST_VALUE_STORAGE_SIZE 8
+
+// A variant value type.
+typedef struct iree_e2e_test_value_t {
+  iree_e2e_test_value_type_t type;
+  union {
+    int8_t i8;
+    int16_t i16;
+    int32_t i32;
+    int64_t i64;
+    float f32;
+    uint16_t f16_u16;
+    double f64;
+    uint8_t value_storage[IREE_E2E_TEST_VALUE_STORAGE_SIZE];  // max size of all
+                                                              // value types
+  };
+} iree_e2e_test_value_t;
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_none() {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_NONE;
+  return result;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_i8(int8_t value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_I8;
+  result.i8 = value;
+  return result;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_i16(
+    int16_t value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_I16;
+  result.i16 = value;
+  return result;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_i32(
+    int32_t value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_I32;
+  result.i32 = value;
+  return result;
+}
+
+// TODO(#5542): check the value type before accessing the union.
+static inline int32_t iree_e2e_test_value_get_i32(
+    iree_e2e_test_value_t* value) {
+  return value->i32;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_i64(
+    int64_t value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_I64;
+  result.i64 = value;
+  return result;
+}
+
+// TODO(#5542): check the value type before accessing the union.
+static inline int64_t iree_e2e_test_value_get_i64(
+    iree_e2e_test_value_t* value) {
+  return value->i64;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_f16(
+    uint16_t value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_F16;
+  result.f16_u16 = value;
+  return result;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_f32(float value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_F32;
+  result.f32 = value;
+  return result;
+}
+
+// TODO(#5542): check the value type before accessing the union.
+static inline float iree_e2e_test_value_get_f32(iree_e2e_test_value_t* value) {
+  return value->f32;
+}
+
+// TODO(#5542): check the value type before accessing the union.
+static inline uint16_t iree_e2e_test_value_get_f16(
+    iree_e2e_test_value_t* value) {
+  return value->f16_u16;
+}
+
+static inline iree_e2e_test_value_t iree_e2e_test_value_make_f64(double value) {
+  iree_e2e_test_value_t result;
+  result.type = IREE_E2E_TEST_VALUE_TYPE_F64;
+  result.f64 = value;
+  return result;
+}
+
+// TODO(#5542): check the value type before accessing the union.
+static inline double iree_e2e_test_value_get_f64(iree_e2e_test_value_t* value) {
+  return value->f64;
+}
+
 /*****************************************************************************
  *
  * Part 1: