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",