Dynamically choose micro-kernel depending on active core

Bazel option xnn_enable_hmp=false disables these optimizations

PiperOrigin-RevId: 303209003
diff --git a/BUILD.bazel b/BUILD.bazel
index 9bc3ce1..74e8953 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -1871,11 +1871,15 @@
     copts = xnnpack_std_copts() + LOGGING_COPTS + [
         # Wrappers for multi-pass microkernels use VLAs for temporary buffers.
         "-Wno-vla",
-    ],
+    ] + select({
+        ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+        "//conditions:default": [],
+    }),
     deps = [
         "@FP16",
         "@FXdiv",
         "@clog",
+        "@cpuinfo",
         "@pthreadpool",
     ],
 )
@@ -1902,6 +1906,9 @@
     ] + select({
         ":debug_build": [],
         "//conditions:default": xnnpack_min_size_copts(),
+    }) + select({
+        ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+        "//conditions:default": [],
     }),
     wasm_srcs = ["src/wasm-stubs.c"],
     wasmsimd_srcs = ["src/wasm-stubs.c"],
@@ -1928,6 +1935,9 @@
     ] + select({
         ":debug_build": [],
         "//conditions:default": xnnpack_min_size_copts(),
+    }) + select({
+        ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+        "//conditions:default": [],
     }),
     includes = ["include"],
     linkstatic = True,
@@ -1957,6 +1967,9 @@
     ] + select({
         ":debug_build": [],
         "//conditions:default": xnnpack_min_size_copts(),
+    }) + select({
+        ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+        "//conditions:default": [],
     }),
     defines = [
         "XNN_NO_Q8_OPERATORS",
@@ -3238,6 +3251,12 @@
     define_values = {"xnn_enable_assembly": "false"},
 )
 
+# Disables usage of HMP-aware optimizations.
+config_setting(
+    name = "xnn_enable_hmp_explicit_false",
+    define_values = {"xnn_enable_hmp": "false"},
+)
+
 # Builds with -c dbg
 config_setting(
     name = "debug_build",