Support specifying the version of WAsm SIMD instructions

Support --define xnn_wasmsimd_version variable to specify the target Chrome
version for WAsm SIMD microkernels:
- xnn_wasmsimd_version=m87 (default) targets Chrome M87 instructions
- xnn_wasmsimd_version=m88 targets Chrome M88 instructions (enables Integer Dot
Product microkernels for quantized GEMM/IGEMM)
- xnn_wasmsimd_version=m91 targets Chrome M91 instructions, and additionally
enables floating-point rounding instructions

PiperOrigin-RevId: 394769869
diff --git a/BUILD.bazel b/BUILD.bazel
index 02b66b8..c01fc68 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -7349,6 +7349,19 @@
             "XNN_NO_QU8_OPERATORS",
             "XNN_NO_U8_OPERATORS",
         ],
+    }) + select({
+        ":xnn_wasmsimd_version_m87": [
+            "XNN_WASMSIMD_VERSION=87",
+        ],
+        ":xnn_wasmsimd_version_m88": [
+            "XNN_WASMSIMD_VERSION=88",
+        ],
+        ":xnn_wasmsimd_version_m91": [
+            "XNN_WASMSIMD_VERSION=91",
+        ],
+        "//conditions:default": [
+            "XNN_WASMSIMD_VERSION=87",
+        ],
     }),
     gcc_copts = xnnpack_gcc_std_copts(),
     includes = ["include"],
@@ -10334,6 +10347,24 @@
     define_values = {"xnn_enable_qu8": "false"},
 )
 
+# Target Chrome M87 instructions in WAsm SIMD build
+config_setting(
+    name = "xnn_wasmsimd_version_m87",
+    define_values = {"xnn_wasmsimd_version": "m87"},
+)
+
+# Target Chrome M88 instructions in WAsm SIMD build
+config_setting(
+    name = "xnn_wasmsimd_version_m88",
+    define_values = {"xnn_wasmsimd_version": "m88"},
+)
+
+# Target Chrome M91 instructions in WAsm SIMD build
+config_setting(
+    name = "xnn_wasmsimd_version_m91",
+    define_values = {"xnn_wasmsimd_version": "m91"},
+)
+
 # Builds with -c dbg
 config_setting(
     name = "debug_build",