Split microkernel lists in BUILD file into production and non-production

Make the exported targets depend only on filenames for production microkernels
to reduce the dependency tree

PiperOrigin-RevId: 387245725
diff --git a/BUILD.bazel b/BUILD.bazel
index f86bddc..0794374 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -21,7 +21,7 @@
 ]
 
 MICROKERNEL_BENCHMARK_DEPS = [
-    ":ukernels",
+    ":bench_microkernels",
     ":bench_utils",
     ":enable_assembly",
     "@cpuinfo",
@@ -31,13 +31,13 @@
 
 ACCURACY_EVAL_DEPS = [
     ":XNNPACK",
-    ":ukernels",
+    ":bench_microkernels",
     "@FP16",
     "@pthreadpool",
 ]
 
 MICROKERNEL_TEST_DEPS = [
-    ":ukernels_test_mode",
+    ":test_microkernels",
     ":enable_assembly",
     "@cpuinfo",
     "@FP16",
@@ -122,7 +122,187 @@
     "src/tables/exp2minus-k-over-2048.c",
 ]
 
-SCALAR_MICROKERNEL_SRCS = [
+PROD_SCALAR_MICROKERNEL_SRCS = [
+    "src/f32-argmaxpool/4x-scalar-c1.c",
+    "src/f32-argmaxpool/9p8x-scalar-c1.c",
+    "src/f32-argmaxpool/9x-scalar-c1.c",
+    "src/f32-avgpool/9p8x-minmax-scalar-c1.c",
+    "src/f32-avgpool/9x-minmax-scalar-c1.c",
+    "src/f32-conv-hwc/3x3s2p0p1c3x4-scalar-1x1.c",
+    "src/f32-conv-hwc/3x3s2p1c3x4-scalar-1x1.c",
+    "src/f32-conv-hwc2chw/3x3s2p1c3x4-scalar-1x1.c",
+    "src/f32-dwconv/gen/up1x4-minmax-scalar-acc2.c",
+    "src/f32-dwconv/gen/up1x4-scalar-acc2.c",
+    "src/f32-dwconv/gen/up1x9-minmax-scalar-acc2.c",
+    "src/f32-dwconv/gen/up1x9-scalar-acc2.c",
+    "src/f32-dwconv/gen/up1x25-minmax-scalar-acc2.c",
+    "src/f32-dwconv/gen/up1x25-scalar-acc2.c",
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-scalar-2x1-acc2.c",
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-scalar-4x1.c",
+    "src/f32-dwconv2d-chw/gen/3x3s2p1-minmax-scalar-1x1-acc2.c",
+    "src/f32-dwconv2d-chw/gen/3x3s2p1-minmax-scalar-2x1-acc2.c",
+    "src/f32-dwconv2d-chw/gen/5x5p2-minmax-scalar-1x1-acc5.c",
+    "src/f32-dwconv2d-chw/gen/5x5p2-minmax-scalar-2x1-acc2.c",
+    "src/f32-dwconv2d-chw/gen/5x5s2p2-minmax-scalar-1x1-acc5.c",
+    "src/f32-dwconv2d-chw/gen/5x5s2p2-minmax-scalar-2x1-acc2.c",
+    "src/f32-gavgpool-cw/scalar-x1.c",
+    "src/f32-gavgpool/7p7x-minmax-scalar-c1.c",
+    "src/f32-gavgpool/7x-minmax-scalar-c1.c",
+    "src/f32-gemm/gen/1x4-minmax-scalar.c",
+    "src/f32-gemm/gen/1x4-relu-scalar.c",
+    "src/f32-gemm/gen/1x4-scalar.c",
+    "src/f32-gemm/gen/2x4-minmax-scalar.c",
+    "src/f32-gemm/gen/2x4-relu-scalar.c",
+    "src/f32-gemm/gen/2x4-scalar.c",
+    "src/f32-gemm/gen/4x2-minmax-scalar.c",
+    "src/f32-gemm/gen/4x2-relu-scalar.c",
+    "src/f32-gemm/gen/4x2-scalar.c",
+    "src/f32-gemm/gen/4x4-minmax-scalar.c",
+    "src/f32-gemm/gen/4x4-relu-scalar.c",
+    "src/f32-gemm/gen/4x4-scalar.c",
+    "src/f32-ibilinear-chw/gen/scalar-p4.c",
+    "src/f32-ibilinear/gen/scalar-c2.c",
+    "src/f32-igemm/gen/1x4-minmax-scalar.c",
+    "src/f32-igemm/gen/1x4-relu-scalar.c",
+    "src/f32-igemm/gen/1x4-scalar.c",
+    "src/f32-igemm/gen/2x4-minmax-scalar.c",
+    "src/f32-igemm/gen/2x4-relu-scalar.c",
+    "src/f32-igemm/gen/2x4-scalar.c",
+    "src/f32-igemm/gen/4x2-minmax-scalar.c",
+    "src/f32-igemm/gen/4x2-relu-scalar.c",
+    "src/f32-igemm/gen/4x2-scalar.c",
+    "src/f32-igemm/gen/4x4-minmax-scalar.c",
+    "src/f32-igemm/gen/4x4-relu-scalar.c",
+    "src/f32-igemm/gen/4x4-scalar.c",
+    "src/f32-maxpool/9p8x-minmax-scalar-c1.c",
+    "src/f32-pavgpool/9p8x-minmax-scalar-c1.c",
+    "src/f32-pavgpool/9x-minmax-scalar-c1.c",
+    "src/f32-prelu/gen/scalar-2x4.c",
+    "src/f32-raddstoreexpminusmax/gen/scalar-p5-x4-acc2.c",
+    "src/f32-rmax/scalar.c",
+    "src/f32-spmm/gen/8x1-minmax-scalar.c",
+    "src/f32-spmm/gen/8x2-minmax-scalar.c",
+    "src/f32-spmm/gen/8x4-minmax-scalar.c",
+    "src/f32-vbinary/gen/vadd-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vaddc-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vdiv-minmax-scalar-x2.c",
+    "src/f32-vbinary/gen/vdiv-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vdivc-minmax-scalar-x2.c",
+    "src/f32-vbinary/gen/vdivc-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vmaxc-scalar-x8.c",
+    "src/f32-vbinary/gen/vmin-scalar-x8.c",
+    "src/f32-vbinary/gen/vminc-scalar-x8.c",
+    "src/f32-vbinary/gen/vmul-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vmulc-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-scalar-x2.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vrsubc-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vsqrdiff-scalar-x8.c",
+    "src/f32-vbinary/gen/vsqrdiffc-scalar-x8.c",
+    "src/f32-vbinary/gen/vsub-minmax-scalar-x8.c",
+    "src/f32-vbinary/gen/vsubc-minmax-scalar-x8.c",
+    "src/f32-vclamp/gen/vclamp-scalar-x4.c",
+    "src/f32-velu/gen/velu-scalar-rr2-lut16-p3-x2.c",
+    "src/f32-velu/gen/velu-scalar-rr2-lut16-p3-x4.c",
+    "src/f32-vhswish/gen/vhswish-scalar-x4.c",
+    "src/f32-vlrelu/gen/vlrelu-scalar-x4.c",
+    "src/f32-vmulcaddc/gen/c1-minmax-scalar-2x.c",
+    "src/f32-vrelu/gen/vrelu-scalar-x8.c",
+    "src/f32-vrnd/gen/vrndd-scalar-libm-x1.c",
+    "src/f32-vrnd/gen/vrndd-scalar-libm-x4.c",
+    "src/f32-vrnd/gen/vrndne-scalar-libm-x1.c",
+    "src/f32-vrnd/gen/vrndne-scalar-libm-x4.c",
+    "src/f32-vrnd/gen/vrndu-scalar-libm-x1.c",
+    "src/f32-vrnd/gen/vrndu-scalar-libm-x4.c",
+    "src/f32-vrnd/gen/vrndz-scalar-libm-x1.c",
+    "src/f32-vrnd/gen/vrndz-scalar-libm-x4.c",
+    "src/f32-vsigmoid/gen/vsigmoid-scalar-lut64-p2-div-x2.c",
+    "src/f32-vsqrt/gen/scalar-sqrt-x1.c",
+    "src/f32-vunary/gen/vabs-scalar-x4.c",
+    "src/f32-vunary/gen/vneg-scalar-x4.c",
+    "src/f32-vunary/gen/vsqr-scalar-x4.c",
+    "src/params-init.c",
+    "src/qc8-dwconv/gen/up2x9-minmax-fp32-scalar-magic.c",
+    "src/qc8-dwconv/gen/up2x25-minmax-fp32-scalar-magic.c",
+    "src/qc8-gemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qc8-gemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qc8-gemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qc8-gemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qc8-igemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qc8-igemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qc8-igemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qc8-igemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qs8-dwconv/gen/up2x9-minmax-fp32-scalar-magic.c",
+    "src/qs8-dwconv/gen/up2x25-minmax-fp32-scalar-magic.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-scalar-c1.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-scalar-c4.c",
+    "src/qs8-gavgpool/gen/7x-minmax-scalar-c1.c",
+    "src/qs8-gavgpool/gen/7x-minmax-scalar-c4.c",
+    "src/qs8-gemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qs8-gemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qs8-gemm/gen/1x4-minmax-rndnu-scalar.c",
+    "src/qs8-gemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qs8-gemm/gen/3x4-minmax-rndnu-scalar.c",
+    "src/qs8-gemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qs8-igemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qs8-igemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qs8-igemm/gen/1x4-minmax-rndnu-scalar.c",
+    "src/qs8-igemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qs8-igemm/gen/3x4-minmax-rndnu-scalar.c",
+    "src/qs8-igemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qs8-vadd/gen/minmax-scalar-x4.c",
+    "src/qs8-vaddc/gen/minmax-scalar-x4.c",
+    "src/qu8-avgpool/9p8x-minmax-scalar-c1.c",
+    "src/qu8-avgpool/9x-minmax-scalar-c1.c",
+    "src/qu8-dwconv/gen/up1x9-minmax-fp32-scalar-lrint.c",
+    "src/qu8-dwconv/gen/up1x9-minmax-fp32-scalar-magic.c",
+    "src/qu8-dwconv/gen/up1x25-minmax-fp32-scalar-lrint.c",
+    "src/qu8-dwconv/gen/up1x25-minmax-fp32-scalar-magic.c",
+    "src/qu8-dwconv/gen/up2x9-minmax-fp32-scalar-lrint.c",
+    "src/qu8-dwconv/gen/up2x9-minmax-fp32-scalar-magic.c",
+    "src/qu8-dwconv/gen/up2x25-minmax-fp32-scalar-lrint.c",
+    "src/qu8-dwconv/gen/up2x25-minmax-fp32-scalar-magic.c",
+    "src/qu8-gavgpool/7p7x-minmax-scalar-c1.c",
+    "src/qu8-gavgpool/7x-minmax-scalar-c1.c",
+    "src/qu8-gemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qu8-gemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qu8-gemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qu8-gemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qu8-igemm/gen/1x2-minmax-fp32-scalar-magic.c",
+    "src/qu8-igemm/gen/1x4-minmax-fp32-scalar-magic.c",
+    "src/qu8-igemm/gen/2x2-minmax-fp32-scalar-magic.c",
+    "src/qu8-igemm/gen/4x4-minmax-fp32-scalar-magic.c",
+    "src/qu8-vadd/gen/minmax-scalar-x1.c",
+    "src/qu8-vadd/gen/minmax-scalar-x4.c",
+    "src/qu8-vaddc/gen/minmax-scalar-x1.c",
+    "src/qu8-vaddc/gen/minmax-scalar-x4.c",
+    "src/u8-lut32norm/scalar.c",
+    "src/u8-maxpool/9p8x-minmax-scalar-c1.c",
+    "src/u8-rmax/scalar.c",
+    "src/u8-vclamp/scalar-x4.c",
+    "src/x8-lut/scalar.c",
+    "src/x8-zip/x2-scalar.c",
+    "src/x8-zip/x3-scalar.c",
+    "src/x8-zip/x4-scalar.c",
+    "src/x8-zip/xm-scalar.c",
+    "src/x32-depthtospace2d-chw2hwc/scalar.c",
+    "src/x32-fill/scalar-float.c",
+    "src/x32-fill/scalar-int.c",
+    "src/x32-packx/x2-scalar.c",
+    "src/x32-packx/x3-scalar.c",
+    "src/x32-packx/x4-scalar.c",
+    "src/x32-pad/scalar-float.c",
+    "src/x32-pad/scalar-int.c",
+    "src/x32-unpool/scalar.c",
+    "src/x32-zip/x2-scalar.c",
+    "src/x32-zip/x3-scalar.c",
+    "src/x32-zip/x4-scalar.c",
+    "src/x32-zip/xm-scalar.c",
+    "src/xx-copy/memcpy.c",
+]
+
+ALL_SCALAR_MICROKERNEL_SRCS = [
     "src/f32-argmaxpool/4x-scalar-c1.c",
     "src/f32-argmaxpool/9p8x-scalar-c1.c",
     "src/f32-argmaxpool/9x-scalar-c1.c",
@@ -722,7 +902,7 @@
     "src/xx-copy/memcpy.c",
 ]
 
-WASM_MICROKERNEL_SRCS = [
+ALL_WASM_MICROKERNEL_SRCS = [
     "src/f32-avgpool/9p8x-minmax-wasm-c1.c",
     "src/f32-avgpool/9x-minmax-wasm-c1.c",
     "src/f32-dwconv/gen/up1x4-minmax-wasm-acc2.c",
@@ -909,7 +1089,7 @@
     "src/f32-vrelu/gen/vrelu-wasm-x8.c",
 ]
 
-WASMSIMD_MICROKERNEL_SRCS = [
+ALL_WASMSIMD_MICROKERNEL_SRCS = [
     "src/f32-argmaxpool/4x-wasmsimd-c4.c",
     "src/f32-argmaxpool/9p8x-wasmsimd-c4.c",
     "src/f32-argmaxpool/9x-wasmsimd-c4.c",
@@ -1659,7 +1839,116 @@
 ]
 
 # ISA-specific micro-kernels
-NEON_MICROKERNEL_SRCS = [
+PROD_NEON_MICROKERNEL_SRCS = [
+    "src/f32-argmaxpool/4x-neon-c4.c",
+    "src/f32-argmaxpool/9p8x-neon-c4.c",
+    "src/f32-argmaxpool/9x-neon-c4.c",
+    "src/f32-avgpool/9p8x-minmax-neon-c4.c",
+    "src/f32-avgpool/9x-minmax-neon-c4.c",
+    "src/f32-conv-hwc2chw/3x3s2p1c3x4-neon-2x2.c",
+    "src/f32-dwconv/gen/up4x4-minmax-neon.c",
+    "src/f32-dwconv/gen/up4x9-minmax-neon.c",
+    "src/f32-dwconv/gen/up4x25-minmax-neon-acc2.c",
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-neon-2x4.c",
+    "src/f32-dwconv2d-chw/gen/3x3s2p1-minmax-neon-1x4.c",
+    "src/f32-dwconv2d-chw/gen/5x5p2-minmax-neon-1x4.c",
+    "src/f32-dwconv2d-chw/gen/5x5s2p2-minmax-neon-1x4.c",
+    "src/f32-gavgpool-cw/neon-x4.c",
+    "src/f32-gavgpool/7p7x-minmax-neon-c4.c",
+    "src/f32-gavgpool/7x-minmax-neon-c4.c",
+    "src/f32-gemm/gen/1x8-minmax-neon-lane-ld64.c",
+    "src/f32-gemm/gen/4x2-minmax-neon-lane-ld64.c",
+    "src/f32-gemm/gen/4x8-minmax-neon-lane-ld64.c",
+    "src/f32-ibilinear-chw/gen/neon-p8.c",
+    "src/f32-ibilinear/gen/neon-c8.c",
+    "src/f32-igemm/gen/1x8-minmax-neon-lane-ld64.c",
+    "src/f32-igemm/gen/4x2-minmax-neon-lane-ld64.c",
+    "src/f32-igemm/gen/4x8-minmax-neon-lane-ld64.c",
+    "src/f32-maxpool/9p8x-minmax-neon-c4.c",
+    "src/f32-pavgpool/9p8x-minmax-neon-c4.c",
+    "src/f32-pavgpool/9x-minmax-neon-c4.c",
+    "src/f32-prelu/gen/neon-2x8.c",
+    "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x8.c",
+    "src/f32-rmax/neon.c",
+    "src/f32-spmm/gen/32x1-minmax-neon.c",
+    "src/f32-vbinary/gen/vadd-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vaddc-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vmax-neon-x8.c",
+    "src/f32-vbinary/gen/vmaxc-neon-x8.c",
+    "src/f32-vbinary/gen/vmin-neon-x8.c",
+    "src/f32-vbinary/gen/vminc-neon-x8.c",
+    "src/f32-vbinary/gen/vmul-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vmulc-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vrsubc-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vsqrdiff-neon-x8.c",
+    "src/f32-vbinary/gen/vsqrdiffc-neon-x8.c",
+    "src/f32-vbinary/gen/vsub-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vsubc-minmax-neon-x8.c",
+    "src/f32-vclamp/gen/vclamp-neon-x8.c",
+    "src/f32-velu/gen/velu-neon-rr2-lut16-p3-x8.c",
+    "src/f32-vhswish/gen/vhswish-neon-x16.c",
+    "src/f32-vlrelu/gen/vlrelu-neon-x8.c",
+    "src/f32-vmulcaddc/gen/c4-minmax-neon-2x.c",
+    "src/f32-vrnd/gen/vrndd-neon-x8.c",
+    "src/f32-vrnd/gen/vrndne-neon-x8.c",
+    "src/f32-vrnd/gen/vrndu-neon-x8.c",
+    "src/f32-vrnd/gen/vrndz-neon-x8.c",
+    "src/f32-vsigmoid/gen/vsigmoid-neon-rr2-lut64-p2-nr2recps-x8.c",
+    "src/f32-vunary/gen/vabs-neon-x8.c",
+    "src/f32-vunary/gen/vneg-neon-x8.c",
+    "src/f32-vunary/gen/vsqr-neon-x8.c",
+    "src/qc8-dwconv/gen/up8x9-minmax-fp32-neon-mla8-ld64.c",
+    "src/qc8-dwconv/gen/up8x25-minmax-fp32-neon-mla8-ld64.c",
+    "src/qc8-gemm/gen/1x8c2-minmax-fp32-neon-mlal-padal-dup.c",
+    "src/qc8-gemm/gen/2x8c2-minmax-fp32-neon-mlal-padal-dup.c",
+    "src/qc8-igemm/gen/1x8c2-minmax-fp32-neon-mlal-padal-dup.c",
+    "src/qc8-igemm/gen/2x8c2-minmax-fp32-neon-mlal-padal-dup.c",
+    "src/qs8-dwconv/gen/up8x9-minmax-rndnu-neon-mla8-ld64.c",
+    "src/qs8-dwconv/gen/up8x25-minmax-rndnu-neon-mla8-ld64.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-neon-c8-acc2.c",
+    "src/qs8-gavgpool/gen/7x-minmax-neon-c8-acc2.c",
+    "src/qs8-gemm/gen/1x8c2-minmax-rndnu-neon-mlal-padal-dup.c",
+    "src/qs8-gemm/gen/1x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qs8-gemm/gen/2x8c2-minmax-rndnu-neon-mlal-padal-dup.c",
+    "src/qs8-igemm/gen/1x8c2-minmax-rndnu-neon-mlal-padal-dup.c",
+    "src/qs8-igemm/gen/1x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qs8-igemm/gen/2x8c2-minmax-rndnu-neon-mlal-padal-dup.c",
+    "src/qs8-vadd/gen/minmax-neon-ld64-x8.c",
+    "src/qs8-vaddc/gen/minmax-neon-ld64-x8.c",
+    "src/qu8-avgpool/9p8x-minmax-neon-c8.c",
+    "src/qu8-avgpool/9x-minmax-neon-c8.c",
+    "src/qu8-dwconv/gen/up8x9-minmax-rndnu-neon-mul16.c",
+    "src/qu8-dwconv/gen/up8x25-minmax-rndnu-neon-mul16.c",
+    "src/qu8-gavgpool/7p7x-minmax-neon-c8.c",
+    "src/qu8-gavgpool/7x-minmax-neon-c8.c",
+    "src/qu8-gemm/gen/1x8-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-gemm/gen/1x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-gemm/gen/4x8-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-gemm/gen/4x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-igemm/gen/1x8-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-igemm/gen/1x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-igemm/gen/4x8-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-igemm/gen/4x16-minmax-rndnu-neon-mlal-lane.c",
+    "src/qu8-vadd/gen/minmax-neon-ld64-x8.c",
+    "src/qu8-vaddc/gen/minmax-neon-ld64-x8.c",
+    "src/u8-maxpool/9p8x-minmax-neon-c16.c",
+    "src/u8-rmax/neon.c",
+    "src/u8-vclamp/neon-x64.c",
+    "src/x8-zip/x2-neon.c",
+    "src/x8-zip/x3-neon.c",
+    "src/x8-zip/x4-neon.c",
+    "src/x8-zip/xm-neon.c",
+    "src/x32-fill/neon.c",
+    "src/x32-packx/x4-neon-st4.c",
+    "src/x32-pad/neon.c",
+    "src/x32-unpool/neon.c",
+    "src/x32-zip/x2-neon.c",
+    "src/x32-zip/x3-neon.c",
+    "src/x32-zip/x4-neon.c",
+    "src/x32-zip/xm-neon.c",
+]
+
+ALL_NEON_MICROKERNEL_SRCS = [
     "src/f32-argmaxpool/4x-neon-c4.c",
     "src/f32-argmaxpool/9p8x-neon-c4.c",
     "src/f32-argmaxpool/9x-neon-c4.c",
@@ -2246,7 +2535,26 @@
     "src/x32-zip/xm-neon.c",
 ]
 
-NEONFMA_MICROKERNEL_SRCS = [
+PROD_NEONFMA_MICROKERNEL_SRCS = [
+    "src/f32-dwconv/gen/up4x9-minmax-neonfma.c",
+    "src/f32-dwconv/gen/up4x25-minmax-neonfma-acc2.c",
+    "src/f32-dwconv/gen/up8x4-minmax-neonfma.c",
+    "src/f32-dwconv/gen/up8x9-minmax-neonfma.c",
+    "src/f32-gemm/gen/1x8s4-minmax-neonfma.c",
+    "src/f32-gemm/gen/6x8s4-minmax-neonfma.c",
+    "src/f32-ibilinear-chw/gen/neonfma-p8.c",
+    "src/f32-ibilinear/gen/neonfma-c8.c",
+    "src/f32-igemm/gen/1x8s4-minmax-neonfma.c",
+    "src/f32-igemm/gen/6x8s4-minmax-neonfma.c",
+    "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x16.c",
+    "src/f32-spmm/gen/32x1-minmax-neonfma-pipelined.c",
+    "src/f32-velu/gen/velu-neonfma-rr1-lut16-p3-x16.c",
+    "src/f32-velu/gen/velu-neonfma-rr1-p6-x8.c",
+    "src/f32-vmulcaddc/gen/c4-minmax-neonfma-2x.c",
+    "src/f32-vsigmoid/gen/vsigmoid-neonfma-rr1-lut64-p2-nr2recps-x16.c",
+]
+
+ALL_NEONFMA_MICROKERNEL_SRCS = [
     "src/f32-dwconv/gen/up4x4-minmax-neonfma-acc2.c",
     "src/f32-dwconv/gen/up4x4-minmax-neonfma.c",
     "src/f32-dwconv/gen/up4x9-minmax-neonfma-acc2.c",
@@ -2449,7 +2757,27 @@
     "src/math/sqrt-neonfma-nr3fma.c",
 ]
 
-AARCH64_NEONFMA_MICROKERNEL_SRCS = [
+PROD_AARCH64_NEONFMA_MICROKERNEL_SRCS = [
+    "src/f32-conv-hwc2chw/3x3s2p1c3x4-neonfma-2x2.c",
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-neonfma-3x4.c",
+    "src/f32-dwconv2d-chw/gen/3x3s2p1-minmax-neonfma-2x4-acc2.c",
+    "src/f32-dwconv2d-chw/gen/5x5p2-minmax-neonfma-4x4.c",
+    "src/f32-dwconv2d-chw/gen/5x5s2p2-minmax-neonfma-1x4-acc2.c",
+    "src/f32-gemm/gen/1x8-minmax-neonfma-lane-ld64.c",
+    "src/f32-gemm/gen/4x2-minmax-neonfma-lane-ld64.c",
+    "src/f32-gemm/gen/6x8-minmax-neonfma-lane-ld64.c",
+    "src/f32-igemm/gen/1x8-minmax-neonfma-lane-ld64.c",
+    "src/f32-igemm/gen/4x2-minmax-neonfma-lane-ld64.c",
+    "src/f32-igemm/gen/6x8-minmax-neonfma-lane-ld64.c",
+    "src/f32-spmm/gen/32x2-minmax-neonfma.c",
+    "src/f32-spmm/gen/32x4-minmax-neonfma.c",
+    "src/f32-vbinary/gen/vdiv-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vdivc-minmax-neon-x8.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-neon-x8.c",
+    "src/f32-vsqrt/gen/neon-sqrt-x4.c",
+]
+
+ALL_AARCH64_NEONFMA_MICROKERNEL_SRCS = [
     "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neonfma-2x1.c",
     "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neonfma-2x2.c",
     "src/f32-conv-hwc/gen/3x3s2p0p1c3x8-neonfma-2x1.c",
@@ -2564,7 +2892,28 @@
     "src/math/sigmoid-neonfma-rr2-p5-div.c",
 ]
 
-NEONV8_MICROKERNEL_SRCS = [
+PROD_NEONV8_MICROKERNEL_SRCS = [
+    "src/f32-vrnd/gen/vrndd-neonv8-x8.c",
+    "src/f32-vrnd/gen/vrndne-neonv8-x8.c",
+    "src/f32-vrnd/gen/vrndu-neonv8-x8.c",
+    "src/f32-vrnd/gen/vrndz-neonv8-x8.c",
+    "src/qc8-dwconv/gen/up8x9-minmax-fp32-neonv8-mla8-ld64.c",
+    "src/qc8-dwconv/gen/up8x25-minmax-fp32-neonv8-mla8-ld64.c",
+    "src/qc8-gemm/gen/1x8c2-minmax-fp32-neonv8-mlal-padal-dup.c",
+    "src/qc8-gemm/gen/1x8c8-minmax-fp32-neonv8-mlal-padal.c",
+    "src/qc8-gemm/gen/1x16-minmax-fp32-neonv8-mlal-lane.c",
+    "src/qc8-gemm/gen/2x8c2-minmax-fp32-neonv8-mlal-padal-dup.c",
+    "src/qc8-gemm/gen/2x8c8-minmax-fp32-neonv8-mlal-padal.c",
+    "src/qc8-gemm/gen/4x16-minmax-fp32-neonv8-mlal-lane.c",
+    "src/qc8-igemm/gen/1x8c2-minmax-fp32-neonv8-mlal-padal-dup.c",
+    "src/qc8-igemm/gen/1x8c8-minmax-fp32-neonv8-mlal-padal.c",
+    "src/qc8-igemm/gen/1x16-minmax-fp32-neonv8-mlal-lane.c",
+    "src/qc8-igemm/gen/2x8c2-minmax-fp32-neonv8-mlal-padal-dup.c",
+    "src/qc8-igemm/gen/2x8c8-minmax-fp32-neonv8-mlal-padal.c",
+    "src/qc8-igemm/gen/4x16-minmax-fp32-neonv8-mlal-lane.c",
+]
+
+ALL_NEONV8_MICROKERNEL_SRCS = [
     "src/f32-vrnd/gen/vrndd-neonv8-x4.c",
     "src/f32-vrnd/gen/vrndd-neonv8-x8.c",
     "src/f32-vrnd/gen/vrndne-neonv8-x4.c",
@@ -2643,7 +2992,25 @@
     "src/qu8-igemm/gen/4x16-minmax-fp32-neonv8-mlal-lane.c",
 ]
 
-AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS = [
+PROD_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS = [
+    "src/f16-dwconv/gen/up8x25-minmax-neonfp16arith-acc2.c",
+    "src/f16-dwconv/gen/up16x4-minmax-neonfp16arith.c",
+    "src/f16-dwconv/gen/up16x9-minmax-neonfp16arith.c",
+    "src/f16-gavgpool/7p7x-minmax-neonfp16arith-c8.c",
+    "src/f16-gavgpool/7x-minmax-neonfp16arith-c8.c",
+    "src/f16-gemm/gen/1x16-minmax-neonfp16arith-ld64.c",
+    "src/f16-gemm/gen/6x16-minmax-neonfp16arith-ld64.c",
+    "src/f16-igemm/gen/1x16-minmax-neonfp16arith-ld64.c",
+    "src/f16-igemm/gen/6x16-minmax-neonfp16arith-ld64.c",
+    "src/f16-vbinary/gen/vadd-minmax-neonfp16arith-x16.c",
+    "src/f16-vbinary/gen/vaddc-minmax-neonfp16arith-x16.c",
+    "src/f16-vbinary/gen/vmul-minmax-neonfp16arith-x16.c",
+    "src/f16-vbinary/gen/vmulc-minmax-neonfp16arith-x16.c",
+    "src/f16-vhswish/gen/vhswish-neonfp16arith-x16.c",
+    "src/f16-vmulcaddc/gen/c8-minmax-neonfp16arith-2x.c",
+]
+
+ALL_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS = [
     "src/f16-dwconv/gen/up8x4-minmax-neonfp16arith-acc2.c",
     "src/f16-dwconv/gen/up8x4-minmax-neonfp16arith.c",
     "src/f16-dwconv/gen/up8x9-minmax-neonfp16arith-acc2.c",
@@ -2730,7 +3097,26 @@
     "src/f16-vrelu/gen/vrelu-neonfp16arith-x16.c",
 ]
 
-NEONDOT_MICROKERNEL_SRCS = [
+PROD_NEONDOT_MICROKERNEL_SRCS = [
+    "src/qc8-gemm/gen/1x8c4-minmax-fp32-neondot.c",
+    "src/qc8-gemm/gen/1x16c4-minmax-fp32-neondot.c",
+    "src/qc8-gemm/gen/4x8c4-minmax-fp32-neondot.c",
+    "src/qc8-gemm/gen/4x16c4-minmax-fp32-neondot.c",
+    "src/qc8-igemm/gen/1x8c4-minmax-fp32-neondot.c",
+    "src/qc8-igemm/gen/1x16c4-minmax-fp32-neondot.c",
+    "src/qc8-igemm/gen/4x8c4-minmax-fp32-neondot.c",
+    "src/qc8-igemm/gen/4x16c4-minmax-fp32-neondot.c",
+    "src/qs8-gemm/gen/1x8c4-minmax-rndnu-neondot.c",
+    "src/qs8-gemm/gen/1x16c4-minmax-rndnu-neondot.c",
+    "src/qs8-gemm/gen/4x8c4-minmax-rndnu-neondot.c",
+    "src/qs8-gemm/gen/4x16c4-minmax-rndnu-neondot.c",
+    "src/qs8-igemm/gen/1x8c4-minmax-rndnu-neondot.c",
+    "src/qs8-igemm/gen/1x16c4-minmax-rndnu-neondot.c",
+    "src/qs8-igemm/gen/4x8c4-minmax-rndnu-neondot.c",
+    "src/qs8-igemm/gen/4x16c4-minmax-rndnu-neondot.c",
+]
+
+ALL_NEONDOT_MICROKERNEL_SRCS = [
     "src/qc8-gemm/gen/1x8c4-minmax-fp32-neondot.c",
     "src/qc8-gemm/gen/1x16c4-minmax-fp32-neondot.c",
     "src/qc8-gemm/gen/4x8c4-minmax-fp32-neondot.c",
@@ -2789,7 +3175,63 @@
     "src/qs8-igemm/gen/8x16c4-minmax-gemmlowp-neondot.c",
 ]
 
-SSE_MICROKERNEL_SRCS = [
+PROD_SSE_MICROKERNEL_SRCS = [
+    "src/f32-avgpool/9p8x-minmax-sse-c4.c",
+    "src/f32-avgpool/9x-minmax-sse-c4.c",
+    "src/f32-conv-hwc2chw/3x3s2p1c3x4-sse-2x2.c",
+    "src/f32-dwconv/gen/up8x4-minmax-sse.c",
+    "src/f32-dwconv/gen/up8x9-minmax-sse.c",
+    "src/f32-dwconv/gen/up8x25-minmax-sse.c",
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-sse-2x4-acc2.c",
+    "src/f32-dwconv2d-chw/gen/3x3s2p1-minmax-sse-1x4-acc3.c",
+    "src/f32-dwconv2d-chw/gen/5x5p2-minmax-sse-4x4.c",
+    "src/f32-dwconv2d-chw/gen/5x5s2p2-minmax-sse-2x4.c",
+    "src/f32-gavgpool-cw/sse-x4.c",
+    "src/f32-gavgpool/7p7x-minmax-sse-c4.c",
+    "src/f32-gavgpool/7x-minmax-sse-c4.c",
+    "src/f32-gemm/gen/1x8-minmax-sse-load1.c",
+    "src/f32-gemm/gen/4x2c4-minmax-sse.c",
+    "src/f32-gemm/gen/4x8-minmax-sse-load1.c",
+    "src/f32-ibilinear-chw/gen/sse-p8.c",
+    "src/f32-ibilinear/gen/sse-c8.c",
+    "src/f32-igemm/gen/1x8-minmax-sse-load1.c",
+    "src/f32-igemm/gen/4x2c4-minmax-sse.c",
+    "src/f32-igemm/gen/4x8-minmax-sse-load1.c",
+    "src/f32-maxpool/9p8x-minmax-sse-c4.c",
+    "src/f32-pavgpool/9p8x-minmax-sse-c4.c",
+    "src/f32-pavgpool/9x-minmax-sse-c4.c",
+    "src/f32-rmax/sse.c",
+    "src/f32-spmm/gen/32x1-minmax-sse.c",
+    "src/f32-vbinary/gen/vadd-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vaddc-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vdiv-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vdivc-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vmax-sse-x8.c",
+    "src/f32-vbinary/gen/vmaxc-sse-x8.c",
+    "src/f32-vbinary/gen/vmin-sse-x8.c",
+    "src/f32-vbinary/gen/vminc-sse-x8.c",
+    "src/f32-vbinary/gen/vmul-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vmulc-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vrsubc-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vsqrdiff-sse-x8.c",
+    "src/f32-vbinary/gen/vsqrdiffc-sse-x8.c",
+    "src/f32-vbinary/gen/vsub-minmax-sse-x8.c",
+    "src/f32-vbinary/gen/vsubc-minmax-sse-x8.c",
+    "src/f32-vclamp/gen/vclamp-sse-x8.c",
+    "src/f32-vhswish/gen/vhswish-sse-x8.c",
+    "src/f32-vlrelu/gen/vlrelu-sse-x8.c",
+    "src/f32-vmulcaddc/gen/c4-minmax-sse-2x.c",
+    "src/f32-vsqrt/gen/sse-sqrt-x4.c",
+    "src/f32-vunary/gen/vabs-sse-x8.c",
+    "src/f32-vunary/gen/vneg-sse-x8.c",
+    "src/f32-vunary/gen/vsqr-sse-x8.c",
+    "src/x32-fill/sse.c",
+    "src/x32-packx/x4-sse.c",
+    "src/x32-pad/sse.c",
+]
+
+ALL_SSE_MICROKERNEL_SRCS = [
     "src/f32-avgpool/9p8x-minmax-sse-c4.c",
     "src/f32-avgpool/9x-minmax-sse-c4.c",
     "src/f32-conv-hwc2chw/3x3s2p1c3x4-sse-1x1.c",
@@ -2965,7 +3407,62 @@
     "src/x32-pad/sse.c",
 ]
 
-SSE2_MICROKERNEL_SRCS = [
+PROD_SSE2_MICROKERNEL_SRCS = [
+    "src/f32-argmaxpool/4x-sse2-c4.c",
+    "src/f32-argmaxpool/9p8x-sse2-c4.c",
+    "src/f32-argmaxpool/9x-sse2-c4.c",
+    "src/f32-prelu/gen/sse2-2x8.c",
+    "src/f32-raddstoreexpminusmax/gen/sse2-p5-x20-acc2.c",
+    "src/f32-velu/gen/velu-sse2-rr2-lut16-p3-x12.c",
+    "src/f32-vlrelu/gen/vlrelu-sse2-x8.c",
+    "src/f32-vrnd/gen/vrndd-sse2-x8.c",
+    "src/f32-vrnd/gen/vrndne-sse2-x8.c",
+    "src/f32-vrnd/gen/vrndu-sse2-x8.c",
+    "src/f32-vrnd/gen/vrndz-sse2-x8.c",
+    "src/f32-vsigmoid/gen/vsigmoid-sse2-lut64-p2-div-x8.c",
+    "src/qc8-dwconv/gen/up8x9-minmax-fp32-sse2-mul16.c",
+    "src/qc8-dwconv/gen/up8x25-minmax-fp32-sse2-mul16.c",
+    "src/qc8-gemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qc8-gemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qc8-igemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qc8-igemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qs8-dwconv/gen/up8x9-minmax-fp32-sse2-mul16-add16.c",
+    "src/qs8-dwconv/gen/up8x25-minmax-fp32-sse2-mul16-add16.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-sse2-c8-acc2.c",
+    "src/qs8-gavgpool/gen/7x-minmax-sse2-c8-acc2.c",
+    "src/qs8-gemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qs8-gemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qs8-igemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qs8-igemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qs8-vadd/gen/minmax-sse2-mul16-ld64-x8.c",
+    "src/qs8-vaddc/gen/minmax-sse2-mul16-ld64-x8.c",
+    "src/qu8-avgpool/9p8x-minmax-sse2-c8.c",
+    "src/qu8-avgpool/9x-minmax-sse2-c8.c",
+    "src/qu8-dwconv/gen/up8x9-minmax-fp32-sse2-mul16.c",
+    "src/qu8-dwconv/gen/up8x25-minmax-fp32-sse2-mul16.c",
+    "src/qu8-gavgpool/7p7x-minmax-sse2-c8.c",
+    "src/qu8-gavgpool/7x-minmax-sse2-c8.c",
+    "src/qu8-gemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qu8-gemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qu8-igemm/gen/1x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qu8-igemm/gen/3x4c8-minmax-fp32-sse2-ld64.c",
+    "src/qu8-vadd/gen/minmax-sse2-mul16-ld64-x8.c",
+    "src/qu8-vaddc/gen/minmax-sse2-mul16-ld64-x8.c",
+    "src/u8-maxpool/9p8x-minmax-sse2-c16.c",
+    "src/u8-rmax/sse2.c",
+    "src/u8-vclamp/sse2-x64.c",
+    "src/x8-zip/x2-sse2.c",
+    "src/x8-zip/x3-sse2.c",
+    "src/x8-zip/x4-sse2.c",
+    "src/x8-zip/xm-sse2.c",
+    "src/x32-unpool/sse2.c",
+    "src/x32-zip/x2-sse2.c",
+    "src/x32-zip/x3-sse2.c",
+    "src/x32-zip/x4-sse2.c",
+    "src/x32-zip/xm-sse2.c",
+]
+
+ALL_SSE2_MICROKERNEL_SRCS = [
     "src/f32-argmaxpool/4x-sse2-c4.c",
     "src/f32-argmaxpool/9p8x-sse2-c4.c",
     "src/f32-argmaxpool/9x-sse2-c4.c",
@@ -3215,7 +3712,13 @@
     "src/x32-zip/xm-sse2.c",
 ]
 
-SSSE3_MICROKERNEL_SRCS = [
+PROD_SSSE3_MICROKERNEL_SRCS = [
+    "src/f32-dwconv2d-chw/gen/3x3p1-minmax-ssse3-2x4-acc2.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-ssse3-c8-acc2.c",
+    "src/qs8-gavgpool/gen/7x-minmax-ssse3-c8-acc2.c",
+]
+
+ALL_SSSE3_MICROKERNEL_SRCS = [
     "src/f32-dwconv2d-chw/gen/3x3p1-minmax-ssse3-1x4-acc2.c",
     "src/f32-dwconv2d-chw/gen/3x3p1-minmax-ssse3-1x4-acc3.c",
     "src/f32-dwconv2d-chw/gen/3x3p1-minmax-ssse3-1x4-acc4.c",
@@ -3271,7 +3774,41 @@
     "src/qu8-requantization/rndna-ssse3.c",
 ]
 
-SSE41_MICROKERNEL_SRCS = [
+PROD_SSE41_MICROKERNEL_SRCS = [
+    "src/f32-prelu/gen/sse41-2x8.c",
+    "src/f32-vlrelu/gen/vlrelu-sse41-x8.c",
+    "src/f32-vrnd/gen/vrndd-sse41-x8.c",
+    "src/f32-vrnd/gen/vrndne-sse41-x8.c",
+    "src/f32-vrnd/gen/vrndu-sse41-x8.c",
+    "src/f32-vrnd/gen/vrndz-sse41-x8.c",
+    "src/f32-vsigmoid/gen/vsigmoid-sse41-lut64-p2-div-x8.c",
+    "src/qc8-dwconv/gen/up8x9-minmax-fp32-sse41-mul16.c",
+    "src/qc8-dwconv/gen/up8x25-minmax-fp32-sse41-mul16.c",
+    "src/qc8-gemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qc8-gemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qc8-igemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qc8-igemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qs8-dwconv/gen/up8x9-minmax-fp32-sse41-mul16-add16.c",
+    "src/qs8-dwconv/gen/up8x25-minmax-fp32-sse41-mul16-add16.c",
+    "src/qs8-gavgpool/gen/7p7x-minmax-sse41-c8-acc2.c",
+    "src/qs8-gavgpool/gen/7x-minmax-sse41-c8-acc2.c",
+    "src/qs8-gemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qs8-gemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qs8-igemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qs8-igemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qs8-vadd/gen/minmax-sse41-mul16-ld64-x8.c",
+    "src/qs8-vaddc/gen/minmax-sse41-mul16-ld64-x8.c",
+    "src/qu8-dwconv/gen/up8x9-minmax-fp32-sse41-mul16.c",
+    "src/qu8-dwconv/gen/up8x25-minmax-fp32-sse41-mul16.c",
+    "src/qu8-gemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qu8-gemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qu8-igemm/gen/1x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qu8-igemm/gen/3x4c8-minmax-fp32-sse41-ld64.c",
+    "src/qu8-vadd/gen/minmax-sse41-mul16-ld64-x8.c",
+    "src/qu8-vaddc/gen/minmax-sse41-mul16-ld64-x8.c",
+]
+
+ALL_SSE41_MICROKERNEL_SRCS = [
     "src/f32-prelu/gen/sse41-2x4.c",
     "src/f32-prelu/gen/sse41-2x8.c",
     "src/f32-velu/gen/velu-sse41-rr2-lut16-p3-x4.c",
@@ -3502,7 +4039,69 @@
     "src/qu8-vaddc/gen/minmax-sse41-mul32-ld32-x16.c",
 ]
 
-AVX_MICROKERNEL_SRCS = [
+PROD_AVX_MICROKERNEL_SRCS = [
+    "src/f32-dwconv/gen/up8x25-minmax-avx.c",
+    "src/f32-dwconv/gen/up16x4-minmax-avx.c",
+    "src/f32-dwconv/gen/up16x9-minmax-avx.c",
+    "src/f32-gemm/gen/1x16-minmax-avx-broadcast.c",
+    "src/f32-gemm/gen/5x16-minmax-avx-broadcast.c",
+    "src/f32-igemm/gen/1x16-minmax-avx-broadcast.c",
+    "src/f32-igemm/gen/5x16-minmax-avx-broadcast.c",
+    "src/f32-prelu/gen/avx-2x16.c",
+    "src/f32-vbinary/gen/vadd-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vaddc-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vdiv-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vdivc-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vmax-avx-x16.c",
+    "src/f32-vbinary/gen/vmaxc-avx-x16.c",
+    "src/f32-vbinary/gen/vmin-avx-x16.c",
+    "src/f32-vbinary/gen/vminc-avx-x16.c",
+    "src/f32-vbinary/gen/vmul-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vmulc-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vrsubc-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vsqrdiff-avx-x16.c",
+    "src/f32-vbinary/gen/vsqrdiffc-avx-x16.c",
+    "src/f32-vbinary/gen/vsub-minmax-avx-x16.c",
+    "src/f32-vbinary/gen/vsubc-minmax-avx-x16.c",
+    "src/f32-vclamp/gen/vclamp-avx-x16.c",
+    "src/f32-velu/gen/velu-avx-rr2-lut4-p4-perm-x32.c",
+    "src/f32-vhswish/gen/vhswish-avx-x16.c",
+    "src/f32-vlrelu/gen/vlrelu-avx-x16.c",
+    "src/f32-vrnd/gen/vrndd-avx-x16.c",
+    "src/f32-vrnd/gen/vrndne-avx-x16.c",
+    "src/f32-vrnd/gen/vrndu-avx-x16.c",
+    "src/f32-vrnd/gen/vrndz-avx-x16.c",
+    "src/f32-vsigmoid/gen/vsigmoid-avx-rr2-p5-nr2-x40.c",
+    "src/f32-vsqrt/gen/avx-sqrt-x8.c",
+    "src/f32-vunary/gen/vabs-avx-x16.c",
+    "src/f32-vunary/gen/vneg-avx-x16.c",
+    "src/f32-vunary/gen/vsqr-avx-x16.c",
+    "src/qc8-dwconv/gen/up16x9-minmax-fp32-avx-mul32.c",
+    "src/qc8-dwconv/gen/up16x25-minmax-fp32-avx-mul32.c",
+    "src/qc8-gemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qc8-gemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qc8-igemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qc8-igemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qs8-dwconv/gen/up16x9-minmax-fp32-avx-mul16-add16.c",
+    "src/qs8-dwconv/gen/up16x25-minmax-fp32-avx-mul16-add16.c",
+    "src/qs8-gemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qs8-gemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qs8-igemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qs8-igemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qs8-vadd/gen/minmax-avx-mul32-ld32-x8.c",
+    "src/qs8-vaddc/gen/minmax-avx-mul32-ld32-x8.c",
+    "src/qu8-dwconv/gen/up16x9-minmax-fp32-avx-mul16.c",
+    "src/qu8-dwconv/gen/up16x25-minmax-fp32-avx-mul16.c",
+    "src/qu8-gemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qu8-gemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qu8-igemm/gen/1x4c8-minmax-fp32-avx-ld128.c",
+    "src/qu8-igemm/gen/2x4c8-minmax-fp32-avx-ld128.c",
+    "src/qu8-vadd/gen/minmax-avx-mul32-ld32-x8.c",
+    "src/qu8-vaddc/gen/minmax-avx-mul32-ld32-x8.c",
+]
+
+ALL_AVX_MICROKERNEL_SRCS = [
     "src/f32-dwconv/gen/up8x4-minmax-avx-acc2.c",
     "src/f32-dwconv/gen/up8x4-minmax-avx.c",
     "src/f32-dwconv/gen/up8x9-minmax-avx-acc2.c",
@@ -3817,7 +4416,32 @@
     "src/qu8-vaddc/gen/minmax-avx-mul32-ld32-x16.c",
 ]
 
-XOP_MICROKERNEL_SRCS = [
+PROD_XOP_MICROKERNEL_SRCS = [
+    "src/qc8-dwconv/gen/up16x9-minmax-fp32-xop-mul32.c",
+    "src/qc8-dwconv/gen/up16x25-minmax-fp32-xop-mul32.c",
+    "src/qc8-gemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qc8-gemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qc8-igemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qc8-igemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qs8-dwconv/gen/up16x9-minmax-fp32-xop-mul16-add16.c",
+    "src/qs8-dwconv/gen/up16x25-minmax-fp32-xop-mul16-add16.c",
+    "src/qs8-gemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qs8-gemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qs8-igemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qs8-igemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qs8-vadd/gen/minmax-xop-mul32-ld32-x8.c",
+    "src/qs8-vaddc/gen/minmax-xop-mul32-ld32-x8.c",
+    "src/qu8-dwconv/gen/up16x9-minmax-fp32-xop-mul32.c",
+    "src/qu8-dwconv/gen/up16x25-minmax-fp32-xop-mul32.c",
+    "src/qu8-gemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qu8-gemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qu8-igemm/gen/1x4c8-minmax-fp32-xop-ld64.c",
+    "src/qu8-igemm/gen/2x4c8-minmax-fp32-xop-ld64.c",
+    "src/qu8-vadd/gen/minmax-xop-mul32-ld32-x8.c",
+    "src/qu8-vaddc/gen/minmax-xop-mul32-ld32-x8.c",
+]
+
+ALL_XOP_MICROKERNEL_SRCS = [
     "src/qc8-dwconv/gen/up8x9-minmax-fp32-xop-mul16-add16.c",
     "src/qc8-dwconv/gen/up8x9-minmax-fp32-xop-mul32.c",
     "src/qc8-dwconv/gen/up8x25-minmax-fp32-xop-mul16-add16.c",
@@ -3953,7 +4577,31 @@
     "src/qu8-vaddc/gen/minmax-xop-mul32-ld32-x16.c",
 ]
 
-FMA3_MICROKERNEL_SRCS = [
+PROD_FMA3_MICROKERNEL_SRCS = [
+    "src/f32-dwconv/gen/up8x4-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up8x4-minmax-fma3.c",
+    "src/f32-dwconv/gen/up8x9-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up8x9-minmax-fma3.c",
+    "src/f32-dwconv/gen/up8x25-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up8x25-minmax-fma3.c",
+    "src/f32-dwconv/gen/up16x4-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up16x4-minmax-fma3.c",
+    "src/f32-dwconv/gen/up16x9-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up16x9-minmax-fma3.c",
+    "src/f32-dwconv/gen/up16x25-minmax-fma3-acc2.c",
+    "src/f32-dwconv/gen/up16x25-minmax-fma3.c",
+    "src/f32-gemm/gen/1x16-minmax-fma3-broadcast.c",
+    "src/f32-gemm/gen/1x16s4-minmax-fma3-broadcast.c",
+    "src/f32-gemm/gen/4x16s4-minmax-fma3-broadcast.c",
+    "src/f32-gemm/gen/5x16-minmax-fma3-broadcast.c",
+    "src/f32-igemm/gen/1x16-minmax-fma3-broadcast.c",
+    "src/f32-igemm/gen/1x16s4-minmax-fma3-broadcast.c",
+    "src/f32-igemm/gen/4x16s4-minmax-fma3-broadcast.c",
+    "src/f32-igemm/gen/5x16-minmax-fma3-broadcast.c",
+    "src/f32-vhswish/gen/vhswish-fma3-x16.c",
+]
+
+ALL_FMA3_MICROKERNEL_SRCS = [
     "src/f32-dwconv/gen/up8x4-minmax-fma3-acc2.c",
     "src/f32-dwconv/gen/up8x4-minmax-fma3.c",
     "src/f32-dwconv/gen/up8x9-minmax-fma3-acc2.c",
@@ -4023,7 +4671,34 @@
     "src/math/sqrt-fma3-nr2fma.c",
 ]
 
-AVX2_MICROKERNEL_SRCS = [
+PROD_AVX2_MICROKERNEL_SRCS = [
+    "src/f32-velu/gen/velu-avx2-rr1-lut4-p4-perm-x56.c",
+    "src/f32-vsigmoid/gen/vsigmoid-avx2-rr1-p5-div-x40.c",
+    "src/qc8-dwconv/gen/up16x9-minmax-fp32-avx2-mul32.c",
+    "src/qc8-dwconv/gen/up16x25-minmax-fp32-avx2-mul32.c",
+    "src/qc8-gemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qc8-gemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qc8-igemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qc8-igemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qs8-dwconv/gen/up16x9-minmax-fp32-avx2-mul32.c",
+    "src/qs8-dwconv/gen/up16x25-minmax-fp32-avx2-mul32.c",
+    "src/qs8-gemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qs8-gemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qs8-igemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qs8-igemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qs8-vadd/gen/minmax-avx2-mul32-ld64-x16.c",
+    "src/qs8-vaddc/gen/minmax-avx2-mul32-ld64-x16.c",
+    "src/qu8-dwconv/gen/up16x9-minmax-fp32-avx2-mul32.c",
+    "src/qu8-dwconv/gen/up16x25-minmax-fp32-avx2-mul32.c",
+    "src/qu8-gemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qu8-gemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qu8-igemm/gen/1x8c8-minmax-fp32-avx2.c",
+    "src/qu8-igemm/gen/3x8c8-minmax-fp32-avx2.c",
+    "src/qu8-vadd/gen/minmax-avx2-mul32-ld64-x16.c",
+    "src/qu8-vaddc/gen/minmax-avx2-mul32-ld64-x16.c",
+]
+
+ALL_AVX2_MICROKERNEL_SRCS = [
     "src/f32-raddexpminusmax/gen/avx2-p5-x64-acc2.c",
     "src/f32-raddexpminusmax/gen/avx2-p5-x64-acc4.c",
     "src/f32-raddexpminusmax/gen/avx2-p5-x64.c",
@@ -4266,7 +4941,46 @@
     "src/qu8-vaddc/gen/minmax-avx2-mul32-ld64-x16.c",
 ]
 
-AVX512F_MICROKERNEL_SRCS = [
+PROD_AVX512F_MICROKERNEL_SRCS = [
+    "src/f32-dwconv/gen/up16x4-minmax-avx512f.c",
+    "src/f32-dwconv/gen/up16x9-minmax-avx512f.c",
+    "src/f32-dwconv/gen/up16x25-minmax-avx512f.c",
+    "src/f32-gemm/gen/1x16-minmax-avx512f-broadcast.c",
+    "src/f32-gemm/gen/7x16-minmax-avx512f-broadcast.c",
+    "src/f32-igemm/gen/1x16-minmax-avx512f-broadcast.c",
+    "src/f32-igemm/gen/7x16-minmax-avx512f-broadcast.c",
+    "src/f32-prelu/gen/avx512f-2x16.c",
+    "src/f32-vbinary/gen/vadd-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vaddc-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vdiv-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vdivc-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vmaxc-avx512f-x32.c",
+    "src/f32-vbinary/gen/vmin-avx512f-x32.c",
+    "src/f32-vbinary/gen/vminc-avx512f-x32.c",
+    "src/f32-vbinary/gen/vmul-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vmulc-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vrdivc-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vrsubc-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vsqrdiff-avx512f-x32.c",
+    "src/f32-vbinary/gen/vsqrdiffc-avx512f-x32.c",
+    "src/f32-vbinary/gen/vsub-minmax-avx512f-x32.c",
+    "src/f32-vbinary/gen/vsubc-minmax-avx512f-x32.c",
+    "src/f32-vclamp/gen/vclamp-avx512f-x16.c",
+    "src/f32-velu/gen/velu-avx512f-rr1-lut16-p3-perm-x64.c",
+    "src/f32-vhswish/gen/vhswish-avx512f-x16.c",
+    "src/f32-vlrelu/gen/vlrelu-avx512f-x16.c",
+    "src/f32-vrnd/gen/vrndd-avx512f-x16.c",
+    "src/f32-vrnd/gen/vrndne-avx512f-x16.c",
+    "src/f32-vrnd/gen/vrndu-avx512f-x16.c",
+    "src/f32-vrnd/gen/vrndz-avx512f-x16.c",
+    "src/f32-vsigmoid/gen/vsigmoid-avx512f-rr2-lut32-p2-perm2-scalef-div-x64.c",
+    "src/f32-vunary/gen/vabs-avx512f-x16.c",
+    "src/f32-vunary/gen/vneg-avx512f-x16.c",
+    "src/f32-vunary/gen/vsqr-avx512f-x16.c",
+]
+
+ALL_AVX512F_MICROKERNEL_SRCS = [
     "src/f32-dwconv/gen/up16x4-minmax-avx512f-acc2.c",
     "src/f32-dwconv/gen/up16x4-minmax-avx512f.c",
     "src/f32-dwconv/gen/up16x9-minmax-avx512f-acc2.c",
@@ -4525,7 +5239,32 @@
     "src/math/sqrt-avx512f-nr2fma.c",
 ]
 
-AVX512SKX_MICROKERNEL_SRCS = [
+PROD_AVX512SKX_MICROKERNEL_SRCS = [
+    "src/qc8-dwconv/gen/up32x9-minmax-fp32-avx512skx-mul32.c",
+    "src/qc8-dwconv/gen/up32x25-minmax-fp32-avx512skx-mul32.c",
+    "src/qc8-gemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qc8-gemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qc8-igemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qc8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qs8-dwconv/gen/up32x9-minmax-fp32-avx512skx-mul32.c",
+    "src/qs8-dwconv/gen/up32x25-minmax-fp32-avx512skx-mul32.c",
+    "src/qs8-gemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qs8-gemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qs8-igemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qs8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qs8-vadd/gen/minmax-avx512skx-mul32-ld128-x16.c",
+    "src/qs8-vaddc/gen/minmax-avx512skx-mul32-ld128-x16.c",
+    "src/qu8-dwconv/gen/up32x9-minmax-fp32-avx512skx-mul32.c",
+    "src/qu8-dwconv/gen/up32x25-minmax-fp32-avx512skx-mul32.c",
+    "src/qu8-gemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qu8-gemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qu8-igemm/gen/1x16c8-minmax-fp32-avx512skx.c",
+    "src/qu8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c",
+    "src/qu8-vadd/gen/minmax-avx512skx-mul32-ld128-x16.c",
+    "src/qu8-vaddc/gen/minmax-avx512skx-mul32-ld128-x16.c",
+]
+
+ALL_AVX512SKX_MICROKERNEL_SRCS = [
     "src/qc8-dwconv/gen/up16x9-minmax-fp32-avx512skx-mul32.c",
     "src/qc8-dwconv/gen/up16x25-minmax-fp32-avx512skx-mul32.c",
     "src/qc8-dwconv/gen/up32x9-minmax-fp32-avx512skx-mul32.c",
@@ -4933,8 +5672,8 @@
 )
 
 xnnpack_cc_library(
-    name = "scalar_ukernels",
-    srcs = SCALAR_MICROKERNEL_SRCS,
+    name = "scalar_bench_microkernels",
+    srcs = ALL_SCALAR_MICROKERNEL_SRCS,
     hdrs = INTERNAL_HDRS,
     aarch32_copts = ["-marm"],
     gcc_copts = xnnpack_gcc_std_copts(),
@@ -4948,8 +5687,23 @@
 )
 
 xnnpack_cc_library(
-    name = "scalar_ukernels_test_mode",
-    srcs = SCALAR_MICROKERNEL_SRCS,
+    name = "scalar_prod_microkernels",
+    srcs = PROD_SCALAR_MICROKERNEL_SRCS,
+    hdrs = INTERNAL_HDRS,
+    aarch32_copts = ["-marm"],
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@FXdiv",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "scalar_test_microkernels",
+    srcs = ALL_SCALAR_MICROKERNEL_SRCS,
     hdrs = INTERNAL_HDRS,
     aarch32_copts = ["-marm"],
     copts = [
@@ -4967,12 +5721,12 @@
 )
 
 xnnpack_cc_library(
-    name = "wasm_ukernels",
+    name = "wasm_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     gcc_copts = xnnpack_gcc_std_copts(),
     msvc_copts = xnnpack_msvc_std_copts(),
-    wasm_srcs = WASM_MICROKERNEL_SRCS,
-    wasmsimd_srcs = WASM_MICROKERNEL_SRCS + WASMSIMD_MICROKERNEL_SRCS,
+    wasm_srcs = ALL_WASM_MICROKERNEL_SRCS,
+    wasmsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -4982,7 +5736,22 @@
 )
 
 xnnpack_cc_library(
-    name = "wasm_ukernels_test_mode",
+    name = "wasm_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    wasm_srcs = ALL_WASM_MICROKERNEL_SRCS,
+    wasmsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@FXdiv",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "wasm_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -4990,8 +5759,8 @@
     ],
     gcc_copts = xnnpack_gcc_std_copts(),
     msvc_copts = xnnpack_msvc_std_copts(),
-    wasm_srcs = WASM_MICROKERNEL_SRCS,
-    wasmsimd_srcs = WASM_MICROKERNEL_SRCS + WASMSIMD_MICROKERNEL_SRCS,
+    wasm_srcs = ALL_WASM_MICROKERNEL_SRCS,
+    wasmsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5001,15 +5770,15 @@
 )
 
 xnnpack_cc_library(
-    name = "neon_ukernels",
+    name = "neon_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv7-a",
         "-mfpu=neon",
     ],
-    aarch32_srcs = NEON_MICROKERNEL_SRCS,
-    aarch64_srcs = NEON_MICROKERNEL_SRCS,
+    aarch32_srcs = ALL_NEON_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEON_MICROKERNEL_SRCS,
     gcc_copts = xnnpack_gcc_std_copts(),
     msvc_copts = xnnpack_msvc_std_copts(),
     deps = [
@@ -5020,15 +5789,34 @@
 )
 
 xnnpack_cc_library(
-    name = "neon_ukernels_test_mode",
+    name = "neon_prod_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv7-a",
         "-mfpu=neon",
     ],
-    aarch32_srcs = NEON_MICROKERNEL_SRCS,
-    aarch64_srcs = NEON_MICROKERNEL_SRCS,
+    aarch32_srcs = PROD_NEON_MICROKERNEL_SRCS,
+    aarch64_srcs = PROD_NEON_MICROKERNEL_SRCS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "neon_test_microkernels",
+    hdrs = INTERNAL_HDRS,
+    aarch32_copts = [
+        "-marm",
+        "-march=armv7-a",
+        "-mfpu=neon",
+    ],
+    aarch32_srcs = ALL_NEON_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEON_MICROKERNEL_SRCS,
     copts = [
         "-UNDEBUG",
         "-DXNN_TEST_MODE=1",
@@ -5043,15 +5831,15 @@
 )
 
 xnnpack_cc_library(
-    name = "neonfma_ukernels",
+    name = "neonfma_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv7-a",
         "-mfpu=neon-vfpv4",
     ],
-    aarch32_srcs = NEONFMA_MICROKERNEL_SRCS,
-    aarch64_srcs = NEONFMA_MICROKERNEL_SRCS + AARCH64_NEONFMA_MICROKERNEL_SRCS,
+    aarch32_srcs = ALL_NEONFMA_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEONFMA_MICROKERNEL_SRCS + ALL_AARCH64_NEONFMA_MICROKERNEL_SRCS,
     apple_aarch32_copts = [
         "-mcpu=swift",
         "-mtune=generic",
@@ -5066,15 +5854,38 @@
 )
 
 xnnpack_cc_library(
-    name = "neonfma_ukernels_test_mode",
+    name = "neonfma_prod_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv7-a",
         "-mfpu=neon-vfpv4",
     ],
-    aarch32_srcs = NEONFMA_MICROKERNEL_SRCS,
-    aarch64_srcs = NEONFMA_MICROKERNEL_SRCS + AARCH64_NEONFMA_MICROKERNEL_SRCS,
+    aarch32_srcs = PROD_NEONFMA_MICROKERNEL_SRCS,
+    aarch64_srcs = PROD_NEONFMA_MICROKERNEL_SRCS + PROD_AARCH64_NEONFMA_MICROKERNEL_SRCS,
+    apple_aarch32_copts = [
+        "-mcpu=swift",
+        "-mtune=generic",
+    ],
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "neonfma_test_microkernels",
+    hdrs = INTERNAL_HDRS,
+    aarch32_copts = [
+        "-marm",
+        "-march=armv7-a",
+        "-mfpu=neon-vfpv4",
+    ],
+    aarch32_srcs = ALL_NEONFMA_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEONFMA_MICROKERNEL_SRCS + ALL_AARCH64_NEONFMA_MICROKERNEL_SRCS,
     apple_aarch32_copts = [
         "-mcpu=swift",
         "-mtune=generic",
@@ -5093,15 +5904,15 @@
 )
 
 xnnpack_cc_library(
-    name = "neonv8_ukernels",
+    name = "neonv8_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv8-a",
         "-mfpu=neon-fp-armv8",
     ],
-    aarch32_srcs = NEONV8_MICROKERNEL_SRCS,
-    aarch64_srcs = NEONV8_MICROKERNEL_SRCS,
+    aarch32_srcs = ALL_NEONV8_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEONV8_MICROKERNEL_SRCS,
     apple_aarch32_copts = [
         "-mcpu=cyclone",
         "-mtune=generic",
@@ -5116,15 +5927,38 @@
 )
 
 xnnpack_cc_library(
-    name = "neonv8_ukernels_test_mode",
+    name = "neonv8_prod_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv8-a",
         "-mfpu=neon-fp-armv8",
     ],
-    aarch32_srcs = NEONV8_MICROKERNEL_SRCS,
-    aarch64_srcs = NEONV8_MICROKERNEL_SRCS,
+    aarch32_srcs = PROD_NEONV8_MICROKERNEL_SRCS,
+    aarch64_srcs = PROD_NEONV8_MICROKERNEL_SRCS,
+    apple_aarch32_copts = [
+        "-mcpu=cyclone",
+        "-mtune=generic",
+    ],
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "neonv8_test_microkernels",
+    hdrs = INTERNAL_HDRS,
+    aarch32_copts = [
+        "-marm",
+        "-march=armv8-a",
+        "-mfpu=neon-fp-armv8",
+    ],
+    aarch32_srcs = ALL_NEONV8_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEONV8_MICROKERNEL_SRCS,
     apple_aarch32_copts = [
         "-mcpu=cyclone",
         "-mtune=generic",
@@ -5143,10 +5977,10 @@
 )
 
 xnnpack_cc_library(
-    name = "neonfp16arith_ukernels",
+    name = "neonfp16arith_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch64_copts = ["-march=armv8.2-a+fp16"],
-    aarch64_srcs = AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS,
     gcc_copts = xnnpack_gcc_std_copts(),
     msvc_copts = xnnpack_msvc_std_copts(),
     deps = [
@@ -5157,10 +5991,24 @@
 )
 
 xnnpack_cc_library(
-    name = "neonfp16arith_ukernels_test_mode",
+    name = "neonfp16arith_prod_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch64_copts = ["-march=armv8.2-a+fp16"],
-    aarch64_srcs = AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS,
+    aarch64_srcs = PROD_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "neonfp16arith_test_microkernels",
+    hdrs = INTERNAL_HDRS,
+    aarch64_copts = ["-march=armv8.2-a+fp16"],
+    aarch64_srcs = ALL_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS,
     copts = [
         "-UNDEBUG",
         "-DXNN_TEST_MODE=1",
@@ -5175,16 +6023,16 @@
 )
 
 xnnpack_cc_library(
-    name = "neondot_ukernels",
+    name = "neondot_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv8.2-a+dotprod",
         "-mfpu=neon-fp-armv8",
     ],
-    aarch32_srcs = NEONDOT_MICROKERNEL_SRCS,
+    aarch32_srcs = ALL_NEONDOT_MICROKERNEL_SRCS,
     aarch64_copts = ["-march=armv8.2-a+dotprod"],
-    aarch64_srcs = NEONDOT_MICROKERNEL_SRCS,
+    aarch64_srcs = ALL_NEONDOT_MICROKERNEL_SRCS,
     gcc_copts = xnnpack_gcc_std_copts(),
     msvc_copts = xnnpack_msvc_std_copts(),
     deps = [
@@ -5195,16 +6043,36 @@
 )
 
 xnnpack_cc_library(
-    name = "neondot_ukernels_test_mode",
+    name = "neondot_prod_microkernels",
     hdrs = INTERNAL_HDRS,
     aarch32_copts = [
         "-marm",
         "-march=armv8.2-a+dotprod",
         "-mfpu=neon-fp-armv8",
     ],
-    aarch32_srcs = NEONDOT_MICROKERNEL_SRCS,
+    aarch32_srcs = PROD_NEONDOT_MICROKERNEL_SRCS,
     aarch64_copts = ["-march=armv8.2-a+dotprod"],
-    aarch64_srcs = NEONDOT_MICROKERNEL_SRCS,
+    aarch64_srcs = PROD_NEONDOT_MICROKERNEL_SRCS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    msvc_copts = xnnpack_msvc_std_copts(),
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "neondot_test_microkernels",
+    hdrs = INTERNAL_HDRS,
+    aarch32_copts = [
+        "-marm",
+        "-march=armv8.2-a+dotprod",
+        "-mfpu=neon-fp-armv8",
+    ],
+    aarch32_srcs = ALL_NEONDOT_MICROKERNEL_SRCS,
+    aarch64_copts = ["-march=armv8.2-a+dotprod"],
+    aarch64_srcs = ALL_NEONDOT_MICROKERNEL_SRCS,
     copts = [
         "-UNDEBUG",
         "-DXNN_TEST_MODE=1",
@@ -5219,13 +6087,13 @@
 )
 
 xnnpack_cc_library(
-    name = "sse2_ukernels",
+    name = "sse2_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     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_MICROKERNEL_SRCS + SSE2_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSE_MICROKERNEL_SRCS + ALL_SSE2_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5234,7 +6102,22 @@
 )
 
 xnnpack_cc_library(
-    name = "sse2_ukernels_test_mode",
+    name = "sse2_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    gcc_x86_copts = ["-msse2"],
+    msvc_copts = xnnpack_msvc_std_copts(),
+    msvc_x86_32_copts = ["/arch:SSE2"],
+    x86_srcs = PROD_SSE_MICROKERNEL_SRCS + PROD_SSE2_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "sse2_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5244,7 +6127,7 @@
     gcc_x86_copts = ["-msse2"],
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:SSE2"],
-    x86_srcs = SSE_MICROKERNEL_SRCS + SSE2_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSE_MICROKERNEL_SRCS + ALL_SSE2_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5253,13 +6136,13 @@
 )
 
 xnnpack_cc_library(
-    name = "ssse3_ukernels",
+    name = "ssse3_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     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_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSSE3_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5268,7 +6151,22 @@
 )
 
 xnnpack_cc_library(
-    name = "ssse3_ukernels_test_mode",
+    name = "ssse3_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    gcc_x86_copts = ["-mssse3"],
+    msvc_copts = xnnpack_msvc_std_copts(),
+    msvc_x86_32_copts = ["/arch:SSE2"],
+    x86_srcs = PROD_SSSE3_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "ssse3_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5278,7 +6176,7 @@
     gcc_x86_copts = ["-mssse3"],
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:SSE2"],
-    x86_srcs = SSSE3_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSSE3_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5287,13 +6185,13 @@
 )
 
 xnnpack_cc_library(
-    name = "sse41_ukernels",
+    name = "sse41_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     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_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSE41_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5302,7 +6200,22 @@
 )
 
 xnnpack_cc_library(
-    name = "sse41_ukernels_test_mode",
+    name = "sse41_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    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 = PROD_SSE41_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "sse41_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5312,7 +6225,7 @@
     gcc_x86_copts = ["-msse4.1"],
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:SSE2"],
-    x86_srcs = SSE41_MICROKERNEL_SRCS,
+    x86_srcs = ALL_SSE41_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5321,14 +6234,14 @@
 )
 
 xnnpack_cc_library(
-    name = "avx_ukernels",
+    name = "avx_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     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_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5337,7 +6250,23 @@
 )
 
 xnnpack_cc_library(
-    name = "avx_ukernels_test_mode",
+    name = "avx_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    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 = PROD_AVX_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "avx_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5348,7 +6277,7 @@
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX"],
     msvc_x86_64_copts = ["/arch:AVX"],
-    x86_srcs = AVX_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5357,14 +6286,14 @@
 )
 
 xnnpack_cc_library(
-    name = "xop_ukernels",
+    name = "xop_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     gcc_copts = xnnpack_gcc_std_copts(),
     gcc_x86_copts = ["-mxop"],
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX"],
     msvc_x86_64_copts = ["/arch:AVX"],
-    x86_srcs = XOP_MICROKERNEL_SRCS,
+    x86_srcs = ALL_XOP_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5373,7 +6302,23 @@
 )
 
 xnnpack_cc_library(
-    name = "xop_ukernels_test_mode",
+    name = "xop_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    gcc_x86_copts = ["-mxop"],
+    msvc_copts = xnnpack_msvc_std_copts(),
+    msvc_x86_32_copts = ["/arch:AVX"],
+    msvc_x86_64_copts = ["/arch:AVX"],
+    x86_srcs = PROD_XOP_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "xop_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5384,7 +6329,7 @@
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX"],
     msvc_x86_64_copts = ["/arch:AVX"],
-    x86_srcs = XOP_MICROKERNEL_SRCS,
+    x86_srcs = ALL_XOP_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5393,14 +6338,14 @@
 )
 
 xnnpack_cc_library(
-    name = "fma3_ukernels",
+    name = "fma3_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     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_MICROKERNEL_SRCS,
+    x86_srcs = ALL_FMA3_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5409,7 +6354,23 @@
 )
 
 xnnpack_cc_library(
-    name = "fma3_ukernels_test_mode",
+    name = "fma3_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    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 = PROD_FMA3_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "fma3_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5420,7 +6381,7 @@
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX"],
     msvc_x86_64_copts = ["/arch:AVX"],
-    x86_srcs = FMA3_MICROKERNEL_SRCS,
+    x86_srcs = ALL_FMA3_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5429,7 +6390,7 @@
 )
 
 xnnpack_cc_library(
-    name = "avx2_ukernels",
+    name = "avx2_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     gcc_copts = xnnpack_gcc_std_copts(),
     gcc_x86_copts = [
@@ -5439,7 +6400,7 @@
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX2"],
     msvc_x86_64_copts = ["/arch:AVX2"],
-    x86_srcs = AVX2_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX2_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5448,7 +6409,26 @@
 )
 
 xnnpack_cc_library(
-    name = "avx2_ukernels_test_mode",
+    name = "avx2_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    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 = PROD_AVX2_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "avx2_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5462,7 +6442,7 @@
     msvc_copts = xnnpack_msvc_std_copts(),
     msvc_x86_32_copts = ["/arch:AVX2"],
     msvc_x86_64_copts = ["/arch:AVX2"],
-    x86_srcs = AVX2_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX2_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5471,7 +6451,7 @@
 )
 
 xnnpack_cc_library(
-    name = "avx512f_ukernels",
+    name = "avx512f_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     gcc_copts = xnnpack_gcc_std_copts(),
     gcc_x86_copts = ["-mavx512f"],
@@ -5480,7 +6460,7 @@
     msvc_x86_32_copts = ["/arch:AVX512"],
     msvc_x86_64_copts = ["/arch:AVX512"],
     msys_copts = ["-fno-asynchronous-unwind-tables"],
-    x86_srcs = AVX512F_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX512F_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5489,7 +6469,25 @@
 )
 
 xnnpack_cc_library(
-    name = "avx512f_ukernels_test_mode",
+    name = "avx512f_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    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 = PROD_AVX512F_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "avx512f_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5502,7 +6500,7 @@
     msvc_x86_32_copts = ["/arch:AVX512"],
     msvc_x86_64_copts = ["/arch:AVX512"],
     msys_copts = ["-fno-asynchronous-unwind-tables"],
-    x86_srcs = AVX512F_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX512F_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5511,7 +6509,7 @@
 )
 
 xnnpack_cc_library(
-    name = "avx512skx_ukernels",
+    name = "avx512skx_bench_microkernels",
     hdrs = INTERNAL_HDRS,
     gcc_copts = xnnpack_gcc_std_copts(),
     gcc_x86_copts = [
@@ -5526,7 +6524,7 @@
     msvc_x86_32_copts = ["/arch:AVX512"],
     msvc_x86_64_copts = ["/arch:AVX512"],
     msys_copts = ["-fno-asynchronous-unwind-tables"],
-    x86_srcs = AVX512SKX_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX512SKX_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5535,7 +6533,31 @@
 )
 
 xnnpack_cc_library(
-    name = "avx512skx_ukernels_test_mode",
+    name = "avx512skx_prod_microkernels",
+    hdrs = INTERNAL_HDRS,
+    gcc_copts = xnnpack_gcc_std_copts(),
+    gcc_x86_copts = [
+        "-mavx512f",
+        "-mavx512cd",
+        "-mavx512bw",
+        "-mavx512dq",
+        "-mavx512vl",
+    ],
+    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 = PROD_AVX512SKX_MICROKERNEL_SRCS,
+    deps = [
+        ":tables",
+        "@FP16",
+        "@pthreadpool",
+    ],
+)
+
+xnnpack_cc_library(
+    name = "avx512skx_test_microkernels",
     hdrs = INTERNAL_HDRS,
     copts = [
         "-UNDEBUG",
@@ -5554,7 +6576,7 @@
     msvc_x86_32_copts = ["/arch:AVX512"],
     msvc_x86_64_copts = ["/arch:AVX512"],
     msys_copts = ["-fno-asynchronous-unwind-tables"],
-    x86_srcs = AVX512SKX_MICROKERNEL_SRCS,
+    x86_srcs = ALL_AVX512SKX_MICROKERNEL_SRCS,
     deps = [
         ":tables",
         "@FP16",
@@ -5563,7 +6585,7 @@
 )
 
 xnnpack_cc_library(
-    name = "asm_ukernels",
+    name = "asm_microkernels",
     hdrs = ["src/xnnpack/assembly.h"],
     aarch32_srcs = AARCH32_ASM_MICROKERNEL_SRCS,
     aarch64_copts = ["-march=armv8.2-a+fp16+dotprod"],
@@ -5594,96 +6616,143 @@
 )
 
 xnnpack_aggregate_library(
-    name = "ukernels",
+    name = "bench_microkernels",
     aarch32_ios_deps = [
-        ":neon_ukernels",
-        ":neonfma_ukernels",
-        ":neonv8_ukernels",
-        ":asm_ukernels",
+        ":neon_bench_microkernels",
+        ":neonfma_bench_microkernels",
+        ":neonv8_bench_microkernels",
+        ":asm_microkernels",
     ],
     aarch32_nonios_deps = [
-        ":neon_ukernels",
-        ":neonfma_ukernels",
-        ":neonv8_ukernels",
-        ":neondot_ukernels",
-        ":asm_ukernels",
+        ":neon_bench_microkernels",
+        ":neonfma_bench_microkernels",
+        ":neonv8_bench_microkernels",
+        ":neondot_bench_microkernels",
+        ":asm_microkernels",
     ],
     aarch64_deps = [
-        ":neon_ukernels",
-        ":neonfma_ukernels",
-        ":neonv8_ukernels",
-        ":neonfp16arith_ukernels",
-        ":neondot_ukernels",
-        ":asm_ukernels",
+        ":neon_bench_microkernels",
+        ":neonfma_bench_microkernels",
+        ":neonv8_bench_microkernels",
+        ":neonfp16arith_bench_microkernels",
+        ":neondot_bench_microkernels",
+        ":asm_microkernels",
     ],
     generic_deps = [
-        ":scalar_ukernels",
+        ":scalar_bench_microkernels",
     ],
     wasm_deps = [
-        ":wasm_ukernels",
-        ":asm_ukernels",
+        ":wasm_bench_microkernels",
+        ":asm_microkernels",
     ],
     wasmsimd_deps = [
-        ":wasm_ukernels",
-        ":asm_ukernels",
+        ":wasm_bench_microkernels",
+        ":asm_microkernels",
     ],
     x86_deps = [
-        ":sse2_ukernels",
-        ":ssse3_ukernels",
-        ":sse41_ukernels",
-        ":avx_ukernels",
-        ":xop_ukernels",
-        ":fma3_ukernels",
-        ":avx2_ukernels",
-        ":avx512f_ukernels",
-        ":avx512skx_ukernels",
+        ":sse2_bench_microkernels",
+        ":ssse3_bench_microkernels",
+        ":sse41_bench_microkernels",
+        ":avx_bench_microkernels",
+        ":xop_bench_microkernels",
+        ":fma3_bench_microkernels",
+        ":avx2_bench_microkernels",
+        ":avx512f_bench_microkernels",
+        ":avx512skx_bench_microkernels",
     ],
 )
 
 xnnpack_aggregate_library(
-    name = "ukernels_test_mode",
+    name = "prod_microkernels",
     aarch32_ios_deps = [
-        ":neon_ukernels_test_mode",
-        ":neonfma_ukernels_test_mode",
-        ":neonv8_ukernels_test_mode",
-        ":asm_ukernels",
+        ":neon_prod_microkernels",
+        ":neonfma_prod_microkernels",
+        ":neonv8_prod_microkernels",
+        ":asm_microkernels",
     ],
     aarch32_nonios_deps = [
-        ":neon_ukernels_test_mode",
-        ":neonfma_ukernels_test_mode",
-        ":neonv8_ukernels_test_mode",
-        ":neondot_ukernels_test_mode",
-        ":asm_ukernels",
+        ":neon_prod_microkernels",
+        ":neonfma_prod_microkernels",
+        ":neonv8_prod_microkernels",
+        ":neondot_prod_microkernels",
+        ":asm_microkernels",
     ],
     aarch64_deps = [
-        ":neon_ukernels_test_mode",
-        ":neonfma_ukernels_test_mode",
-        ":neonv8_ukernels_test_mode",
-        ":neonfp16arith_ukernels_test_mode",
-        ":neondot_ukernels_test_mode",
-        ":asm_ukernels",
+        ":neon_prod_microkernels",
+        ":neonfma_prod_microkernels",
+        ":neonv8_prod_microkernels",
+        ":neonfp16arith_prod_microkernels",
+        ":neondot_prod_microkernels",
+        ":asm_microkernels",
     ],
     generic_deps = [
-        ":scalar_ukernels_test_mode",
+        ":scalar_prod_microkernels",
     ],
     wasm_deps = [
-        ":wasm_ukernels_test_mode",
-        ":asm_ukernels",
+        ":wasm_prod_microkernels",
+        ":asm_microkernels",
     ],
     wasmsimd_deps = [
-        ":wasm_ukernels_test_mode",
-        ":asm_ukernels",
+        ":wasm_prod_microkernels",
+        ":asm_microkernels",
     ],
     x86_deps = [
-        ":sse2_ukernels_test_mode",
-        ":ssse3_ukernels_test_mode",
-        ":sse41_ukernels_test_mode",
-        ":avx_ukernels_test_mode",
-        ":xop_ukernels_test_mode",
-        ":fma3_ukernels_test_mode",
-        ":avx2_ukernels_test_mode",
-        ":avx512f_ukernels_test_mode",
-        ":avx512skx_ukernels_test_mode",
+        ":sse2_prod_microkernels",
+        ":ssse3_prod_microkernels",
+        ":sse41_prod_microkernels",
+        ":avx_prod_microkernels",
+        ":xop_prod_microkernels",
+        ":fma3_prod_microkernels",
+        ":avx2_prod_microkernels",
+        ":avx512f_prod_microkernels",
+        ":avx512skx_prod_microkernels",
+    ],
+)
+
+xnnpack_aggregate_library(
+    name = "test_microkernels",
+    aarch32_ios_deps = [
+        ":neon_test_microkernels",
+        ":neonfma_test_microkernels",
+        ":neonv8_test_microkernels",
+        ":asm_microkernels",
+    ],
+    aarch32_nonios_deps = [
+        ":neon_test_microkernels",
+        ":neonfma_test_microkernels",
+        ":neonv8_test_microkernels",
+        ":neondot_test_microkernels",
+        ":asm_microkernels",
+    ],
+    aarch64_deps = [
+        ":neon_test_microkernels",
+        ":neonfma_test_microkernels",
+        ":neonv8_test_microkernels",
+        ":neonfp16arith_test_microkernels",
+        ":neondot_test_microkernels",
+        ":asm_microkernels",
+    ],
+    generic_deps = [
+        ":scalar_test_microkernels",
+    ],
+    wasm_deps = [
+        ":wasm_test_microkernels",
+        ":asm_microkernels",
+    ],
+    wasmsimd_deps = [
+        ":wasm_test_microkernels",
+        ":asm_microkernels",
+    ],
+    x86_deps = [
+        ":sse2_test_microkernels",
+        ":ssse3_test_microkernels",
+        ":sse41_test_microkernels",
+        ":avx_test_microkernels",
+        ":xop_test_microkernels",
+        ":fma3_test_microkernels",
+        ":avx2_test_microkernels",
+        ":avx512f_test_microkernels",
+        ":avx512skx_test_microkernels",
     ],
 )
 
@@ -5947,7 +7016,7 @@
         ":memory_planner",
         ":operator_run",
         ":operators",
-        ":ukernels",
+        ":prod_microkernels",
         "@clog",
         "@FP16",
         "@pthreadpool",
@@ -5989,7 +7058,7 @@
         ":memory_planner_test_mode",
         ":operator_run_test_mode",
         ":operators_test_mode",
-        ":ukernels_test_mode",
+        ":test_microkernels",
         "@clog",
         "@FP16",
         "@pthreadpool",
@@ -6055,7 +7124,7 @@
         ":memory_planner",
         ":operator_run",
         ":operators",
-        ":ukernels",
+        ":prod_microkernels",
         "@clog",
         "@FP16",
         "@pthreadpool",
@@ -6099,7 +7168,7 @@
         ":logging_utils",
         ":operator_run",
         ":operators",
-        ":ukernels",
+        ":prod_microkernels",
         "@clog",
         "@pthreadpool",
     ] + select({