Add test_mode targets with stricter checks when running unit tests
For now test_mode targets only enable assertions in optimized builds
PiperOrigin-RevId: 312998799
diff --git a/BUILD.bazel b/BUILD.bazel
index 33ca079..8815c42 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -36,7 +36,7 @@
]
MICROKERNEL_TEST_DEPS = [
- ":ukernels",
+ ":ukernels_test_mode",
":enable_assembly",
"@cpuinfo",
"@FP16",
@@ -44,7 +44,7 @@
]
OPERATOR_TEST_DEPS = [
- ":XNNPACK",
+ ":XNNPACK_test_mode",
"@pthreadpool",
"@FP16",
]
@@ -1813,6 +1813,25 @@
)
xnnpack_cc_library(
+ name = "scalar_ukernels_test_mode",
+ srcs = SCALAR_UKERNELS,
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = ["-marm"],
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":tables",
+ "@FP16",
+ "@FXdiv",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "wasm_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -1827,6 +1846,24 @@
)
xnnpack_cc_library(
+ name = "wasm_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ wasm_srcs = WASM_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@FXdiv",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "psimd_fastmath_ukernels",
hdrs = INTERNAL_HDRS,
aarch32_copts = [
@@ -1850,6 +1887,33 @@
)
xnnpack_cc_library(
+ name = "psimd_fastmath_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = [
+ "-marm",
+ "-mfpu=neon",
+ ],
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-msse2"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ optimized_copts = [
+ "-O3",
+ "-ffast-math",
+ ],
+ psimd_srcs = PSIMD_FASTMATH_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@psimd",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "psimd_accmath_ukernels",
hdrs = INTERNAL_HDRS,
aarch32_copts = [
@@ -1872,6 +1936,32 @@
)
xnnpack_cc_library(
+ name = "psimd_accmath_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = [
+ "-marm",
+ "-mfpu=neon",
+ ],
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-msse2"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ optimized_copts = [
+ "-O3",
+ ],
+ psimd_srcs = PSIMD_ACCMATH_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@psimd",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "neon_ukernels",
hdrs = INTERNAL_HDRS,
aarch32_copts = [
@@ -1891,6 +1981,29 @@
)
xnnpack_cc_library(
+ name = "neon_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = [
+ "-marm",
+ "-march=armv7-a",
+ "-mfpu=neon",
+ ],
+ aarch32_srcs = NEON_UKERNELS,
+ aarch64_srcs = NEON_UKERNELS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "neonfma_ukernels",
hdrs = INTERNAL_HDRS,
aarch32_copts = [
@@ -1910,6 +2023,29 @@
)
xnnpack_cc_library(
+ name = "neonfma_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = [
+ "-marm",
+ "-march=armv7-a",
+ "-mfpu=neon-vfpv4",
+ ],
+ aarch32_srcs = NEONFMA_UKERNELS,
+ aarch64_srcs = NEONFMA_UKERNELS + AARCH64_NEONFMA_UKERNELS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "neonv8_ukernels",
hdrs = INTERNAL_HDRS,
aarch32_copts = [
@@ -1929,6 +2065,29 @@
)
xnnpack_cc_library(
+ name = "neonv8_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch32_copts = [
+ "-marm",
+ "-march=armv8-a",
+ "-mfpu=neon-fp-armv8",
+ ],
+ aarch32_srcs = NEONV8_UKERNELS,
+ aarch64_srcs = NEONV8_UKERNELS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "neonfp16arith_ukernels",
hdrs = INTERNAL_HDRS,
aarch64_copts = ["-march=armv8.2-a+fp16"],
@@ -1943,6 +2102,24 @@
)
xnnpack_cc_library(
+ name = "neonfp16arith_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ aarch64_copts = ["-march=armv8.2-a+fp16"],
+ aarch64_srcs = AARCH64_NEONFP16ARITH_UKERNELS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "sse2_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -1958,6 +2135,25 @@
)
xnnpack_cc_library(
+ name = "sse2_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-msse2"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:SSE2"],
+ x86_srcs = SSE_UKERNELS + SSE2_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "ssse3_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -1973,6 +2169,25 @@
)
xnnpack_cc_library(
+ name = "ssse3_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-mssse3"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:SSE2"],
+ x86_srcs = SSSE3_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "sse41_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -1988,6 +2203,25 @@
)
xnnpack_cc_library(
+ name = "sse41_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-msse4.1"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:SSE2"],
+ x86_srcs = SSE41_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "avx_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -2004,6 +2238,26 @@
)
xnnpack_cc_library(
+ name = "avx_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-mavx"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:AVX"],
+ msvc_x86_64_copts = ["/arch:AVX"],
+ x86_srcs = AVX_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "fma3_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -2020,6 +2274,26 @@
)
xnnpack_cc_library(
+ name = "fma3_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-mfma"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:AVX"],
+ msvc_x86_64_copts = ["/arch:AVX"],
+ x86_srcs = FMA3_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "avx2_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -2039,6 +2313,29 @@
)
xnnpack_cc_library(
+ name = "avx2_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = [
+ "-mfma",
+ "-mavx2",
+ ],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:AVX2"],
+ msvc_x86_64_copts = ["/arch:AVX2"],
+ x86_srcs = AVX2_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "avx512f_ukernels",
hdrs = INTERNAL_HDRS,
gcc_copts = xnnpack_gcc_std_copts(),
@@ -2057,6 +2354,28 @@
)
xnnpack_cc_library(
+ name = "avx512f_ukernels_test_mode",
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ gcc_x86_copts = ["-mavx512f"],
+ mingw_copts = ["-fno-asynchronous-unwind-tables"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ msvc_x86_32_copts = ["/arch:AVX512"],
+ msvc_x86_64_copts = ["/arch:AVX512"],
+ msys_copts = ["-fno-asynchronous-unwind-tables"],
+ x86_srcs = AVX512F_UKERNELS,
+ deps = [
+ ":tables",
+ "@FP16",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "asm_ukernels",
hdrs = ["src/xnnpack/assembly.h"],
aarch32_srcs = AARCH32_ASM_UKERNELS,
@@ -2079,13 +2398,19 @@
":neonfp16arith_ukernels",
":asm_ukernels",
],
- generic_deps = [":scalar_ukernels"],
+ generic_deps = [
+ ":scalar_ukernels",
+ ],
psimd_deps = [
":psimd_fastmath_ukernels",
":psimd_accmath_ukernels",
],
- wasm_deps = [":wasm_ukernels"],
- wasmsimd_deps = [":wasm_ukernels"],
+ wasm_deps = [
+ ":wasm_ukernels",
+ ],
+ wasmsimd_deps = [
+ ":wasm_ukernels",
+ ],
x86_deps = [
":sse2_ukernels",
":ssse3_ukernels",
@@ -2097,6 +2422,45 @@
],
)
+xnnpack_aggregate_library(
+ name = "ukernels_test_mode",
+ aarch32_deps = [
+ ":neon_ukernels_test_mode",
+ ":neonfma_ukernels_test_mode",
+ ":neonv8_ukernels_test_mode",
+ ":asm_ukernels",
+ ],
+ aarch64_deps = [
+ ":neon_ukernels_test_mode",
+ ":neonfma_ukernels_test_mode",
+ ":neonv8_ukernels_test_mode",
+ ":neonfp16arith_ukernels_test_mode",
+ ":asm_ukernels",
+ ],
+ generic_deps = [
+ ":scalar_ukernels_test_mode",
+ ],
+ psimd_deps = [
+ ":psimd_fastmath_ukernels_test_mode",
+ ":psimd_accmath_ukernels_test_mode",
+ ],
+ wasm_deps = [
+ ":wasm_ukernels_test_mode",
+ ],
+ wasmsimd_deps = [
+ ":wasm_ukernels_test_mode",
+ ],
+ x86_deps = [
+ ":sse2_ukernels_test_mode",
+ ":ssse3_ukernels_test_mode",
+ ":sse41_ukernels_test_mode",
+ ":avx_ukernels_test_mode",
+ ":fma3_ukernels_test_mode",
+ ":avx2_ukernels_test_mode",
+ ":avx512f_ukernels_test_mode",
+ ],
+)
+
xnnpack_cc_library(
name = "im2col",
srcs = ["src/im2col.c"],
@@ -2122,6 +2486,23 @@
)
xnnpack_cc_library(
+ name = "indirection_test_mode",
+ srcs = ["src/indirection.c"],
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ "@FP16",
+ "@FXdiv",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "operator_run",
srcs = ["src/operator-run.c"],
hdrs = INTERNAL_HDRS + LOGGING_HDRS,
@@ -2140,6 +2521,27 @@
)
xnnpack_cc_library(
+ name = "operator_run_test_mode",
+ srcs = ["src/operator-run.c"],
+ hdrs = INTERNAL_HDRS + LOGGING_HDRS,
+ copts = LOGGING_COPTS + [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ] + select({
+ ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+ "//conditions:default": [],
+ }),
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ "@FP16",
+ "@FXdiv",
+ "@clog",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "memory_planner",
srcs = ["src/memory-planner.c"],
hdrs = INTERNAL_HDRS,
@@ -2155,6 +2557,26 @@
],
)
+xnnpack_cc_library(
+ name = "memory_planner_test_mode",
+ srcs = ["src/memory-planner.c"],
+ hdrs = INTERNAL_HDRS,
+ copts = [
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ],
+ defines = select({
+ ":xnn_enable_memopt_explicit_true": ["XNN_ENABLE_MEMOPT=1"],
+ ":xnn_enable_memopt_explicit_false": ["XNN_ENABLE_MEMOPT=0"],
+ "//conditions:default": ["XNN_ENABLE_MEMOPT=1"],
+ }),
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ "@pthreadpool",
+ ],
+)
+
cc_library(
name = "enable_assembly",
defines = select({
@@ -2193,6 +2615,36 @@
)
xnnpack_cc_library(
+ name = "operators_test_mode",
+ srcs = OPERATOR_SRCS + [
+ "src/memory.c",
+ "src/operator-delete.c",
+ ],
+ hdrs = INTERNAL_HDRS + LOGGING_HDRS,
+ copts = LOGGING_COPTS + [
+ "-Isrc",
+ "-Iinclude",
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ] + select({
+ ":debug_build": [],
+ "//conditions:default": xnnpack_min_size_copts(),
+ }) + select({
+ ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+ "//conditions:default": [],
+ }),
+ gcc_copts = xnnpack_gcc_std_copts(),
+ msvc_copts = xnnpack_msvc_std_copts(),
+ deps = [
+ ":indirection_test_mode",
+ "@FP16",
+ "@FXdiv",
+ "@clog",
+ "@pthreadpool",
+ ],
+)
+
+xnnpack_cc_library(
name = "XNNPACK",
srcs = [
"src/init.c",
@@ -2231,6 +2683,46 @@
)
xnnpack_cc_library(
+ name = "XNNPACK_test_mode",
+ srcs = [
+ "src/init.c",
+ "src/runtime.c",
+ "src/subgraph.c",
+ "src/tensor.c",
+ ],
+ hdrs = ["include/xnnpack.h"],
+ copts = LOGGING_COPTS + [
+ "-Isrc",
+ "-Iinclude",
+ "-UNDEBUG",
+ "-DXNN_TEST_MODE=1",
+ ] + select({
+ ":debug_build": [],
+ "//conditions:default": xnnpack_min_size_copts(),
+ }) + select({
+ ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
+ "//conditions:default": [],
+ }),
+ gcc_copts = xnnpack_gcc_std_copts(),
+ includes = ["include"],
+ msvc_copts = xnnpack_msvc_std_copts(),
+ visibility = xnnpack_visibility(),
+ deps = [
+ ":enable_assembly",
+ ":memory_planner_test_mode",
+ ":ukernels_test_mode",
+ ":operator_run_test_mode",
+ ":operators_test_mode",
+ "@clog",
+ "@FP16",
+ "@pthreadpool",
+ ] + select({
+ ":emscripten": [],
+ "//conditions:default": ["@cpuinfo"],
+ }),
+)
+
+xnnpack_cc_library(
name = "xnnpack_operators_nhwc_f32",
srcs = [
"src/init.c",