diff --git "a/BUILD.bazel" "b/BUILD.bazel" new file mode 100644--- /dev/null +++ "b/BUILD.bazel" @@ -0,0 +1,11797 @@ +# Copyright 2020 Google LLC +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# Description: +# XNNPACK - optimized floating-point neural network operators library + +load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_skylib//lib:selects.bzl", "selects") +load(":build_defs.bzl", "xnnpack_aggregate_library", "xnnpack_benchmark", "xnnpack_binary", "xnnpack_cc_library", "xnnpack_gcc_std_copts", "xnnpack_min_size_copts", "xnnpack_msvc_std_copts", "xnnpack_optional_dnnl_copts", "xnnpack_optional_dnnl_deps", "xnnpack_optional_gemmlowp_copts", "xnnpack_optional_gemmlowp_deps", "xnnpack_optional_ruy_copts", "xnnpack_optional_ruy_deps", "xnnpack_optional_tflite_copts", "xnnpack_optional_tflite_deps", "xnnpack_std_cxxopts", "xnnpack_unit_test", "xnnpack_visibility") +load(":microkernels.bzl", "AARCH32_ASM_MICROKERNEL_SRCS", "AARCH32_JIT_MICROKERNEL_SRCS", "AARCH64_ASM_MICROKERNEL_SRCS", "AARCH64_JIT_MICROKERNEL_SRCS", "ALL_ARMSIMD32_MICROKERNEL_SRCS", "ALL_AVX2_MICROKERNEL_SRCS", "ALL_AVX512F_MICROKERNEL_SRCS", "ALL_AVX512SKX_MICROKERNEL_SRCS", "ALL_AVX512VBMI_MICROKERNEL_SRCS", "ALL_AVX_MICROKERNEL_SRCS", "ALL_F16C_MICROKERNEL_SRCS", "ALL_FMA3_MICROKERNEL_SRCS", "ALL_FMA_MICROKERNEL_SRCS", "ALL_FP16ARITH_MICROKERNEL_SRCS", "ALL_HEXAGON_MICROKERNEL_SRCS", "ALL_NEONBF16_AARCH64_MICROKERNEL_SRCS", "ALL_NEONBF16_MICROKERNEL_SRCS", "ALL_NEONDOT_MICROKERNEL_SRCS", "ALL_NEONFMA_AARCH64_MICROKERNEL_SRCS", "ALL_NEONFMA_MICROKERNEL_SRCS", "ALL_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS", "ALL_NEONFP16ARITH_MICROKERNEL_SRCS", "ALL_NEONFP16_MICROKERNEL_SRCS", "ALL_NEONV8_MICROKERNEL_SRCS", "ALL_NEON_AARCH64_MICROKERNEL_SRCS", "ALL_NEON_MICROKERNEL_SRCS", "ALL_RVV_MICROKERNEL_SRCS", "ALL_SCALAR_MICROKERNEL_SRCS", "ALL_SSE2_MICROKERNEL_SRCS", "ALL_SSE41_MICROKERNEL_SRCS", "ALL_SSE_MICROKERNEL_SRCS", "ALL_SSSE3_MICROKERNEL_SRCS", "ALL_WASMRELAXEDSIMD_MICROKERNEL_SRCS", "ALL_WASMSIMD_MICROKERNEL_SRCS", "ALL_WASM_MICROKERNEL_SRCS", "ALL_XOP_MICROKERNEL_SRCS", "WASM32_ASM_MICROKERNEL_SRCS", "WASM32_JIT_MICROKERNEL_SRCS", "WASMRELAXEDSIMD32_JIT_MICROKERNEL_SRCS", "WASMSIMD32_JIT_MICROKERNEL_SRCS") + +licenses(["notice"]) + +exports_files(["LICENSE"]) + +OPERATOR_BENCHMARK_DEPS = [ + ":XNNPACK", + ":bench_utils", + ":cache", + "@FP16", +] + +MICROKERNEL_BENCHMARK_DEPS = [ + ":aligned_allocator", + ":bench_microkernels", + ":bench_utils", + ":common", + ":enable_assembly", + ":microkernels_h", + ":packing", + ":params", + ":microparams", + ":microparams_init", + ":xnnpack_h", + "@FP16", + "@cpuinfo", +] + +ACCURACY_EVAL_DEPS = [ + ":aligned_allocator", + ":bench_microkernels", + ":bench_utils", + ":common", + ":isa_checks", + ":math", + ":math_stubs", + "@FP16", + "@cpuinfo", + "@pthreadpool", +] + +MICROKERNEL_TEST_DEPS = [ + ":aligned_allocator", + ":allocator", + ":common", + ":enable_assembly", + ":isa_checks", + ":math", + ":microkernels_h", + ":microparams", + ":microparams_init", + ":memory", + ":params", + ":quantization", + ":requantization", + ":test_microkernels", + ":xnnpack_h", + "@FP16", +] + +OPERATOR_TEST_DEPS = [ + ":allocator", + ":cache", + ":common", + ":params", + ":quantization", + ":XNNPACK_test_mode", + ":jit_test_mode", + ":normalization_test_mode", + "@pthreadpool", + "@FP16", +] + +OPERATOR_SRCS = [ + "src/operator-delete.c", + "src/operator-run.c", + "src/operators/argmax-pooling-nhwc.c", + "src/operators/average-pooling-nhwc.c", + "src/operators/batch-matrix-multiply-nc.c", + "src/operators/binary-elementwise-nd.c", + "src/operators/channel-shuffle-nc.c", + "src/operators/constant-pad-nd.c", + "src/operators/convolution-nchw.c", + "src/operators/convolution-nhwc.c", + "src/operators/deconvolution-nhwc.c", + "src/operators/dynamic-fully-connected-nc.c", + "src/operators/fully-connected-nc.c", + "src/operators/global-average-pooling-ncw.c", + "src/operators/global-average-pooling-nwc.c", + "src/operators/lut-elementwise-nc.c", + "src/operators/max-pooling-nhwc.c", + "src/operators/prelu-nc.c", + "src/operators/reduce-nd.c", + "src/operators/resize-bilinear-nchw.c", + "src/operators/resize-bilinear-nhwc.c", + "src/operators/rope-nthc.c", + "src/operators/slice-nd.c", + "src/operators/softmax-nc.c", + "src/operators/transpose-nd.c", + "src/operators/unary-elementwise-nc.c", + "src/operators/unpooling-nhwc.c", +] + +SUBGRAPH_SRCS = [ + "src/memory-planner.c", + "src/runtime.c", + "src/subgraph.c", + "src/subgraph/abs.c", + "src/subgraph/add2.c", + "src/subgraph/argmax-pooling-2d.c", + "src/subgraph/average-pooling-2d.c", + "src/subgraph/bankers-rounding.c", + "src/subgraph/batch-matrix-multiply.c", + "src/subgraph/ceiling.c", + "src/subgraph/clamp.c", + "src/subgraph/concatenate.c", + "src/subgraph/convert.c", + "src/subgraph/convolution-2d.c", + "src/subgraph/copy.c", + "src/subgraph/deconvolution-2d.c", + "src/subgraph/depth-to-space.c", + "src/subgraph/depthwise-convolution-2d.c", + "src/subgraph/divide.c", + "src/subgraph/elu.c", + "src/subgraph/even-split.c", + "src/subgraph/floor.c", + "src/subgraph/fully-connected-sparse.c", + "src/subgraph/fully-connected.c", + "src/subgraph/global-average-pooling.c", + "src/subgraph/global-sum-pooling.c", + "src/subgraph/hardswish.c", + "src/subgraph/leaky-relu.c", + "src/subgraph/max-pooling-2d.c", + "src/subgraph/maximum2.c", + "src/subgraph/minimum2.c", + "src/subgraph/multiply2.c", + "src/subgraph/negate.c", + "src/subgraph/prelu.c", + "src/subgraph/rope.c", + "src/subgraph/sigmoid.c", + "src/subgraph/softmax.c", + "src/subgraph/space-to-depth-2d.c", + "src/subgraph/square-root.c", + "src/subgraph/square.c", + "src/subgraph/squared-difference.c", + "src/subgraph/static-constant-pad.c", + "src/subgraph/static-mean.c", + "src/subgraph/static-reshape.c", + "src/subgraph/static-resize-bilinear-2d.c", + "src/subgraph/static-slice.c", + "src/subgraph/static-transpose.c", + "src/subgraph/subtract.c", + "src/subgraph/tanh.c", + "src/subgraph/unpooling-2d.c", + "src/subgraph/validation.c", + "src/tensor.c", +] + +TABLE_SRCS = [ + "src/tables/exp2-k-over-64.c", + "src/tables/exp2-k-over-2048.c", + "src/tables/exp2minus-k-over-4.c", + "src/tables/exp2minus-k-over-8.c", + "src/tables/exp2minus-k-over-16.c", + "src/tables/exp2minus-k-over-32.c", + "src/tables/exp2minus-k-over-64.c", + "src/tables/exp2minus-k-over-2048.c", + "src/tables/vlog.c", +] + +PROD_SCALAR_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-scalar-x1.c", + "src/f16-f32-vcvt/gen/f16-f32-vcvt-scalar-x4.c", + "src/f32-argmaxpool/f32-argmaxpool-4x-scalar-c1.c", + "src/f32-argmaxpool/f32-argmaxpool-9p8x-scalar-c1.c", + "src/f32-argmaxpool/f32-argmaxpool-9x-scalar-c1.c", + "src/f32-avgpool/f32-avgpool-9p8x-minmax-scalar-c1.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-scalar-c1.c", + "src/f32-conv-hwc/f32-conv-hwc-3x3s2p0p1c3x4-scalar-1x1.c", + "src/f32-conv-hwc/f32-conv-hwc-3x3s2p1c3x4-scalar-1x1.c", + "src/f32-conv-hwc2chw/f32-conv-hwc2chw-3x3s2p1c3x4-scalar-1x1.c", + "src/f32-dwconv/gen/f32-dwconv-2f2m2l4c1s1r-minmax-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-3p1c-minmax-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-3p1c-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-4p1c-minmax-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-4p1c-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p1c-minmax-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p1c-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-25p1c-minmax-scalar-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-25p1c-scalar-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-scalar-2x1-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-scalar-4x1.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-scalar-1x1-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-scalar-2x1-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-scalar-1x1-acc5.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-scalar-2x1-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-scalar-1x1-acc5.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-scalar-2x1-acc2.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-scalar-bitcast-x4.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-scalar-fabsf-x2.c", + "src/f32-gavgpool-cw/f32-gavgpool-cw-scalar-x1.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-scalar-c1.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-scalar-c1.c", + "src/f32-gemm/gen/f32-gemm-1x4-minmax-scalar.c", + "src/f32-gemm/gen/f32-gemm-1x4-relu-scalar.c", + "src/f32-gemm/gen/f32-gemm-1x4-scalar.c", + "src/f32-gemm/gen/f32-gemm-2x4-minmax-scalar.c", + "src/f32-gemm/gen/f32-gemm-2x4-relu-scalar.c", + "src/f32-gemm/gen/f32-gemm-2x4-scalar.c", + "src/f32-gemm/gen/f32-gemm-4x2-minmax-scalar.c", + "src/f32-gemm/gen/f32-gemm-4x2-scalar.c", + "src/f32-gemm/gen/f32-gemm-4x4-minmax-scalar.c", + "src/f32-gemm/gen/f32-gemm-4x4-relu-scalar.c", + "src/f32-gemm/gen/f32-gemm-4x4-scalar.c", + "src/f32-ibilinear-chw/gen/f32-ibilinear-chw-scalar-p4.c", + "src/f32-ibilinear/gen/f32-ibilinear-scalar-c2.c", + "src/f32-igemm/gen/f32-igemm-1x4-minmax-scalar.c", + "src/f32-igemm/gen/f32-igemm-1x4-relu-scalar.c", + "src/f32-igemm/gen/f32-igemm-1x4-scalar.c", + "src/f32-igemm/gen/f32-igemm-2x4-minmax-scalar.c", + "src/f32-igemm/gen/f32-igemm-2x4-relu-scalar.c", + "src/f32-igemm/gen/f32-igemm-2x4-scalar.c", + "src/f32-igemm/gen/f32-igemm-4x2-minmax-scalar.c", + "src/f32-igemm/gen/f32-igemm-4x2-scalar.c", + "src/f32-igemm/gen/f32-igemm-4x4-minmax-scalar.c", + "src/f32-igemm/gen/f32-igemm-4x4-relu-scalar.c", + "src/f32-igemm/gen/f32-igemm-4x4-scalar.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-scalar-c1.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-scalar-c1.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-scalar-c1.c", + "src/f32-prelu/gen/f32-prelu-scalar-2x4.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x4-minmax-scalar.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x4-minmax-scalar.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x4-minmax-scalar.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x4-minmax-scalar.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-scalar-imagic-x1.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-scalar-imagic-x4.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-scalar-lrintf-x4.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-scalar-imagic-x1.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-scalar-imagic-x4.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-scalar-lrintf-x4.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-scalar-rr2-p5-x4-acc2.c", + "src/f32-rmax/f32-rmax-scalar.c", + "src/f32-rminmax/gen/f32-rminmax-scalar-x4-acc4.c", + "src/f32-rsum/gen/f32-rsum-scalar-x4-acc4.c", + "src/f32-spmm/gen/f32-spmm-8x1-minmax-scalar.c", + "src/f32-spmm/gen/f32-spmm-8x2-minmax-scalar.c", + "src/f32-spmm/gen/f32-spmm-8x4-minmax-scalar.c", + "src/f32-vbinary/gen/f32-vadd-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-scalar-x2.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-scalar-x2.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vmaxc-scalar-x8.c", + "src/f32-vbinary/gen/f32-vmin-scalar-x8.c", + "src/f32-vbinary/gen/f32-vminc-scalar-x8.c", + "src/f32-vbinary/gen/f32-vmul-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-scalar-x2.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiff-scalar-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-scalar-x8.c", + "src/f32-vbinary/gen/f32-vsub-minmax-scalar-x8.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-scalar-x8.c", + "src/f32-vclamp/gen/f32-vclamp-scalar-x4.c", + "src/f32-vcmul/gen/f32-vcmul-scalar-x4.c", + "src/f32-velu/gen/f32-velu-scalar-rr2-lut16-p3-x2.c", + "src/f32-velu/gen/f32-velu-scalar-rr2-lut16-p3-x4.c", + "src/f32-vhswish/gen/f32-vhswish-scalar-x4.c", + "src/f32-vlrelu/gen/f32-vlrelu-scalar-x4.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c1-minmax-scalar-2x.c", + "src/f32-vrelu/gen/f32-vrelu-scalar-x8.c", + "src/f32-vrnd/gen/f32-vrndd-scalar-libm-x1.c", + "src/f32-vrnd/gen/f32-vrndd-scalar-libm-x4.c", + "src/f32-vrnd/gen/f32-vrndne-scalar-libm-x1.c", + "src/f32-vrnd/gen/f32-vrndne-scalar-libm-x4.c", + "src/f32-vrnd/gen/f32-vrndu-scalar-libm-x1.c", + "src/f32-vrnd/gen/f32-vrndu-scalar-libm-x4.c", + "src/f32-vrnd/gen/f32-vrndz-scalar-libm-x1.c", + "src/f32-vrnd/gen/f32-vrndz-scalar-libm-x4.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-scalar-rr2-lut64-p2-div-x2.c", + "src/f32-vsqrt/gen/f32-vsqrt-scalar-sqrt-x1.c", + "src/f32-vtanh/gen/f32-vtanh-fma-expm1minus-rr1-lut8-p4h3ts-div-x4.c", + "src/f32-vtanh/gen/f32-vtanh-scalar-expm1minus-rr1-lut8-p4h3ts-div-x4.c", + "src/f32-vunary/gen/f32-vabs-scalar-x4.c", + "src/f32-vunary/gen/f32-vneg-scalar-x4.c", + "src/f32-vunary/gen/f32-vsqr-scalar-x4.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x2-minmax-scalar.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-2x2-minmax-scalar.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4-minmax-scalar.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-4x4-minmax-scalar.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p2c-minmax-fp32-scalar-imagic.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p2c-minmax-fp32-scalar-lrintf.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p1c-minmax-fp32-scalar-fmagic.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p1c-minmax-fp32-scalar-imagic.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p2c-minmax-fp32-scalar-lrintf.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-scalar-x1.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-scalar-x4.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-fp32-scalar-imagic-c1.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-fp32-scalar-imagic-c4.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-fp32-scalar-imagic-c1.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-fp32-scalar-imagic-c4.c", + "src/qs8-gemm/gen/qs8-gemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-gemm/gen/qs8-gemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qs8-gemm/gen/qs8-gemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-gemm/gen/qs8-gemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-gemm/gen/qs8-gemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qs8-gemm/gen/qs8-gemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-igemm/gen/qs8-igemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-igemm/gen/qs8-igemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qs8-igemm/gen/qs8-igemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-igemm/gen/qs8-igemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-igemm/gen/qs8-igemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qs8-igemm/gen/qs8-igemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p1c-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p2c-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p2c-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p1c-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p2c-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p2c-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p1c-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p1c-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p2c-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-scalar-x1.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-scalar-x4.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-scalar-x1.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-scalar-x4.c", + "src/qs8-vcvt/gen/qs8-vcvt-scalar-x1.c", + "src/qs8-vcvt/gen/qs8-vcvt-scalar-x4.c", + "src/qs8-vhswish/gen/qs8-vhswish-scalar-x1.c", + "src/qs8-vhswish/gen/qs8-vhswish-scalar-x4.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-scalar-andxor-x4.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-scalar-select-x4.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-scalar-x4.c", + "src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c", + "src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-scalar-imagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-scalar-lrintf.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p1c-minmax-fp32-scalar-fmagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p1c-minmax-fp32-scalar-imagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p2c-minmax-fp32-scalar-lrintf.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x1.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x4.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-fp32-scalar-imagic-c1.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-fp32-scalar-imagic-c4.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-fp32-scalar-imagic-c1.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-fp32-scalar-imagic-c4.c", + "src/qu8-gemm/gen/qu8-gemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qu8-gemm/gen/qu8-gemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qu8-gemm/gen/qu8-gemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qu8-gemm/gen/qu8-gemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qu8-gemm/gen/qu8-gemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qu8-gemm/gen/qu8-gemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qu8-igemm/gen/qu8-igemm-1x2-minmax-fp32-scalar-fmagic.c", + "src/qu8-igemm/gen/qu8-igemm-1x2-minmax-fp32-scalar-imagic.c", + "src/qu8-igemm/gen/qu8-igemm-1x4-minmax-fp32-scalar-lrintf.c", + "src/qu8-igemm/gen/qu8-igemm-2x2-minmax-fp32-scalar-fmagic.c", + "src/qu8-igemm/gen/qu8-igemm-2x2-minmax-fp32-scalar-imagic.c", + "src/qu8-igemm/gen/qu8-igemm-3x4-minmax-fp32-scalar-lrintf.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-scalar-x1.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-scalar-x4.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-scalar-x1.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-scalar-x4.c", + "src/qu8-vcvt/gen/qu8-vcvt-scalar-x1.c", + "src/qu8-vcvt/gen/qu8-vcvt-scalar-x4.c", + "src/qu8-vhswish/gen/qu8-vhswish-scalar-x1.c", + "src/qu8-vhswish/gen/qu8-vhswish-scalar-x4.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-scalar-andxor-x4.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-scalar-select-x4.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-fp32-scalar-x4.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-fp32-scalar-x4.c", + "src/s8-ibilinear/gen/s8-ibilinear-scalar-c1.c", + "src/s8-maxpool/s8-maxpool-9p8x-minmax-scalar-c1.c", + "src/s8-vclamp/s8-vclamp-scalar-x4.c", + "src/u8-ibilinear/gen/u8-ibilinear-scalar-c1.c", + "src/u8-lut32norm/u8-lut32norm-scalar.c", + "src/u8-maxpool/u8-maxpool-9p8x-minmax-scalar-c1.c", + "src/u8-rmax/u8-rmax-scalar.c", + "src/u8-vclamp/u8-vclamp-scalar-x4.c", + "src/xx-copy/xx-copy-scalar-memcpy.c", + "src/xx-fill/xx-fill-scalar-x16.c", + "src/xx-pad/xx-pad-scalar.c", + "src/xx-transposev/xx-transposev-1x1-scalar-memcpy.c", + "src/x8-lut/gen/x8-lut-scalar-x1.c", + "src/x8-lut/gen/x8-lut-scalar-x4.c", + "src/x8-packw/gen/x8-packw-x4-gemm-goi-scalar-int-x4.c", + "src/x8-transposec/gen/x8-transposec-2x4-scalar-int.c", + "src/x8-zip/x8-zip-xm-scalar.c", + "src/x8-zip/x8-zip-x2-scalar.c", + "src/x8-zip/x8-zip-x3-scalar.c", + "src/x8-zip/x8-zip-x4-scalar.c", + "src/x16-transposec/gen/x16-transposec-2x4-scalar-int.c", + "src/x24-transposec/gen/x24-transposec-1x2-scalar.c", + "src/x32-packw/gen/x32-packw-x2-gemm-goi-scalar-float-x4.c", + "src/x32-packw/gen/x32-packw-x4-gemm-goi-scalar-float-x4.c", + "src/x32-packx/x32-packx-2x-scalar.c", + "src/x32-packx/x32-packx-3x-scalar.c", + "src/x32-packx/x32-packx-4x-scalar.c", + "src/x32-transposec/gen/x32-transposec-2x4-scalar-int.c", + "src/x32-unpool/x32-unpool-scalar.c", + "src/x32-zip/x32-zip-xm-scalar.c", + "src/x32-zip/x32-zip-x2-scalar.c", + "src/x32-zip/x32-zip-x3-scalar.c", + "src/x32-zip/x32-zip-x4-scalar.c", +] + +PROD_ARMSIMD32_MICROKERNEL_SRCS = [ + "src/qs8-gemm/gen/qs8-gemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qs8-gemm/gen/qs8-gemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qs8-igemm/gen/qs8-igemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qs8-igemm/gen/qs8-igemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qs8-vcvt/gen/qs8-vcvt-armsimd32-x8.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-armsimd32-x4.c", + "src/qu8-gemm/gen/qu8-gemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qu8-gemm/gen/qu8-gemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qu8-igemm/gen/qu8-igemm-1x2c4-minmax-fp32-armsimd32.c", + "src/qu8-igemm/gen/qu8-igemm-2x2c4-minmax-fp32-armsimd32.c", + "src/qu8-vcvt/gen/qu8-vcvt-armsimd32-x8.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-armsimd32-x4.c", +] + +PROD_FP16ARITH_MICROKERNEL_SRCS = [ + "src/f16-vbinary/gen/f16-vdiv-minmax-fp16arith-x2.c", + "src/f16-vbinary/gen/f16-vdivc-minmax-fp16arith-x2.c", + "src/f16-vbinary/gen/f16-vrdivc-minmax-fp16arith-x2.c", +] + +PROD_NEON_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-neon-int16-x16.c", + "src/f32-argmaxpool/f32-argmaxpool-4x-neon-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9p8x-neon-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9x-neon-c4.c", + "src/f32-avgpool/f32-avgpool-9p8x-minmax-neon-c4.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-neon-c4.c", + "src/f32-conv-hwc2chw/f32-conv-hwc2chw-3x3s2p1c3x4-neon-2x2.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-minmax-neon.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-minmax-neon.c", + "src/f32-dwconv/gen/f32-dwconv-8f8m9l4c4s4r-minmax-neon-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-minmax-neon.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-neon-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-neon-2x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-neon-1x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-neon-1x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-neon-1x4.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-neon-x8.c", + "src/f32-gavgpool-cw/f32-gavgpool-cw-neon-x4.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-neon-c4.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-neon-c4.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-neon-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-4x2-minmax-neon-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-4x8-minmax-neon-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-4x8-minmax-neon-lane-ld128.c", + "src/f32-ibilinear-chw/gen/f32-ibilinear-chw-neon-p8.c", + "src/f32-ibilinear/gen/f32-ibilinear-neon-c8.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-neon-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-4x2-minmax-neon-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-4x8-minmax-neon-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-4x8-minmax-neon-lane-ld128.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-neon-c4.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-neon-c4.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-neon-c4.c", + "src/f32-prelu/gen/f32-prelu-neon-2x8.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-neon-lane-ld64.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-neon-lane-ld64.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-neon-lane-ld64.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-neon-lane-ld64.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-neon-x32.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-neon-x32.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-neon-rr2-lut64-p2-x8.c", + "src/f32-rmax/f32-rmax-neon.c", + "src/f32-rminmax/gen/f32-rminmax-neon-x16-acc4.c", + "src/f32-rsum/gen/f32-rsum-neon-x16-acc4.c", + "src/f32-spmm/gen/f32-spmm-32x1-minmax-neon.c", + "src/f32-vbinary/gen/f32-vadd-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vmaxc-neon-x8.c", + "src/f32-vbinary/gen/f32-vmin-neon-x8.c", + "src/f32-vbinary/gen/f32-vminc-neon-x8.c", + "src/f32-vbinary/gen/f32-vmul-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiff-neon-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-neon-x8.c", + "src/f32-vbinary/gen/f32-vsub-minmax-neon-x8.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-neon-x8.c", + "src/f32-vclamp/gen/f32-vclamp-neon-x8.c", + "src/f32-vcmul/gen/f32-vcmul-neon-x8.c", + "src/f32-velu/gen/f32-velu-neon-rr2-lut16-p3-x8.c", + "src/f32-vhswish/gen/f32-vhswish-neon-x16.c", + "src/f32-vlrelu/gen/f32-vlrelu-neon-x8.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-neon-2x.c", + "src/f32-vrnd/gen/f32-vrndd-neon-x8.c", + "src/f32-vrnd/gen/f32-vrndne-neon-x8.c", + "src/f32-vrnd/gen/f32-vrndu-neon-x8.c", + "src/f32-vrnd/gen/f32-vrndz-neon-x8.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-neon-rr2-lut64-p2-nr2recps-x8.c", + "src/f32-vtanh/gen/f32-vtanh-neon-expm1minus-rr1-p6h5ts-nr2recps-x8.c", + "src/f32-vunary/gen/f32-vabs-neon-x8.c", + "src/f32-vunary/gen/f32-vneg-neon-x8.c", + "src/f32-vunary/gen/f32-vsqr-neon-x8.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-2x8c2s4-minmax-neon-mlal.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x8c2s4-minmax-neon-mlal.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x16-minmax-neon-mlal-lane.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p16c-minmax-rndnu-neon-mla8-ld64.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p8c-minmax-rndnu-neon-mla8-ld64.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p16c-minmax-rndnu-neon-mla8-ld64.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-neon-x32.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-rndnu-neon-c8.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-rndnu-neon-c8.c", + "src/qs8-gemm/gen/qs8-gemm-1x8-minmax-rndnu-neon-mlal-lane.c", + "src/qs8-gemm/gen/qs8-gemm-1x8c2s4-minmax-rndnu-neon-mlal.c", + "src/qs8-gemm/gen/qs8-gemm-1x16-minmax-rndnu-neon-mlal-lane.c", + "src/qs8-gemm/gen/qs8-gemm-2x8c2s4-minmax-rndnu-neon-mlal.c", + "src/qs8-igemm/gen/qs8-igemm-1x8-minmax-rndnu-neon-mlal-lane.c", + "src/qs8-igemm/gen/qs8-igemm-1x8c2s4-minmax-rndnu-neon-mlal.c", + "src/qs8-igemm/gen/qs8-igemm-1x16-minmax-rndnu-neon-mlal-lane.c", + "src/qs8-igemm/gen/qs8-igemm-2x8c2s4-minmax-rndnu-neon-mlal.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-neon-mla8-ld128.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-neon-mla8-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p8c-minmax-fp32-neon-mla8-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-neon-mla8-ld64.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8-minmax-fp32-neon-mlal-lane.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8c2s4-minmax-fp32-neon-mlal.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x8c2s4-minmax-fp32-neon-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8-minmax-fp32-neon-mlal-lane.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8c2s4-minmax-fp32-neon-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x8c2s4-minmax-fp32-neon-mlal.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-neon-ld64-x16.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-neon-ld64-x32.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-neon-ld64-x16.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-neon-ld64-x32.c", + "src/qs8-vcvt/gen/qs8-vcvt-neon-x32.c", + "src/qs8-vhswish/gen/qs8-vhswish-neon-x8.c", + "src/qs8-vhswish/gen/qs8-vhswish-neon-x16.c", + "src/qs8-vhswish/gen/qs8-vhswish-neon-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-neon-x32.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-rndnu-neon-ld64-x16.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x16.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-neon-x32.c", + "src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-neon-c8.c", + "src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-neon-c8.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-rndnu-neon-mul8.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-rndnu-neon-mul8.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-neon-x32.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-rndnu-neon-c8.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-rndnu-neon-c8.c", + "src/qu8-gemm/gen/qu8-gemm-1x8-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-gemm/gen/qu8-gemm-1x16-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-gemm/gen/qu8-gemm-3x8-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-gemm/gen/qu8-gemm-4x16-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-igemm/gen/qu8-igemm-1x8-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-igemm/gen/qu8-igemm-1x16-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-igemm/gen/qu8-igemm-3x8-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-igemm/gen/qu8-igemm-4x16-minmax-rndnu-neon-mlal-lane.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-neon-ld64-x16.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-neon-ld64-x32.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-neon-ld64-x16.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-neon-ld64-x32.c", + "src/qu8-vcvt/gen/qu8-vcvt-neon-x32.c", + "src/qu8-vhswish/gen/qu8-vhswish-neon-x8.c", + "src/qu8-vhswish/gen/qu8-vhswish-neon-x16.c", + "src/qu8-vhswish/gen/qu8-vhswish-neon-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-neon-x32.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-rndnu-neon-ld64-x16.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-rndnu-neon-ld64-x16.c", + "src/s8-ibilinear/gen/s8-ibilinear-neon-c8.c", + "src/s8-ibilinear/gen/s8-ibilinear-neon-c16.c", + "src/s8-maxpool/s8-maxpool-9p8x-minmax-neon-c16.c", + "src/s8-vclamp/s8-vclamp-neon-x64.c", + "src/u8-ibilinear/gen/u8-ibilinear-neon-c8.c", + "src/u8-ibilinear/gen/u8-ibilinear-neon-c16.c", + "src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c", + "src/u8-rmax/u8-rmax-neon.c", + "src/u8-vclamp/u8-vclamp-neon-x64.c", + "src/xx-fill/xx-fill-neon-x64.c", + "src/xx-pad/xx-pad-neon.c", + "src/x8-transposec/gen/x8-transposec-16x16-reuse-dec-zip-neon.c", + "src/x8-zip/x8-zip-xm-neon.c", + "src/x8-zip/x8-zip-x2-neon.c", + "src/x8-zip/x8-zip-x3-neon.c", + "src/x8-zip/x8-zip-x4-neon.c", + "src/x8-packw/gen/x8-packw-x8-gemm-goi-scalar-int-x4.c", + "src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-x8-prfm.c", + "src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-x8-prfm.c", + "src/x16-transposec/gen/x16-transposec-8x8-reuse-dec-zip-neon.c", + "src/x24-transposec/x24-transposec-2x2-neon-tbl64.c", + "src/x32-packw/gen/x32-packw-x2-gemm-goi-neon-ld2lane-x2-prfm.c", + "src/x32-packw/gen/x32-packw-x8-gemm-goi-neon-ld4lane-x4-prfm.c", + "src/x32-packw/gen/x32-packw-x8s4-gemm-goi-neon-ld4lane-x4-prfm.c", + "src/x32-packx/gen/x32-packx-4x-neon-st4-x4-prfm.c", + "src/x32-transposec/gen/x32-transposec-4x4-reuse-dec-zip-neon.c", + "src/x32-unpool/x32-unpool-neon.c", + "src/x32-zip/x32-zip-xm-neon.c", + "src/x32-zip/x32-zip-x2-neon.c", + "src/x32-zip/x32-zip-x3-neon.c", + "src/x32-zip/x32-zip-x4-neon.c", +] + +PROD_NEONFP16_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-neonfp16-x16.c", + "src/f16-f32acc-rsum/gen/f16-f32acc-rsum-neonfp16-x32-acc4.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-neonfp16-x16.c", +] + +PROD_NEONFMA_MICROKERNEL_SRCS = [ + "src/f32-dwconv/gen/f32-dwconv-3p8c-minmax-neonfma.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-minmax-neonfma.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l8c4s4r-minmax-neonfma-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-minmax-neonfma.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-neonfma-acc2.c", + "src/f32-gemm/gen/f32-gemm-1x8s4-minmax-neonfma.c", + "src/f32-gemm/gen/f32-gemm-4x8s4-minmax-neonfma.c", + "src/f32-gemm/gen/f32-gemm-6x8s4-minmax-neonfma.c", + "src/f32-ibilinear-chw/gen/f32-ibilinear-chw-neonfma-p8.c", + "src/f32-ibilinear/gen/f32-ibilinear-neonfma-c8.c", + "src/f32-igemm/gen/f32-igemm-1x8s4-minmax-neonfma.c", + "src/f32-igemm/gen/f32-igemm-4x8s4-minmax-neonfma.c", + "src/f32-igemm/gen/f32-igemm-6x8s4-minmax-neonfma.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-neonfma-rr1-lut64-p2-x16.c", + "src/f32-spmm/gen/f32-spmm-32x1-minmax-neonfma-pipelined.c", + "src/f32-velu/gen/f32-velu-neonfma-rr1-lut16-p3-x16.c", + "src/f32-velu/gen/f32-velu-neonfma-rr1-p6-x8.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-neonfma-2x.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-neonfma-rr1-lut64-p2-nr2recps-x16.c", + "src/f32-vtanh/gen/f32-vtanh-neonfma-expm1minus-rr1-p6h5ts-nr2fma-x8.c", +] + +PROD_NEON_AARCH64_MICROKERNEL_SRCS = [ + "src/f32-conv-hwc2chw/f32-conv-hwc2chw-3x3s2p1c3x4-aarch64-neonfma-2x2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-aarch64-neonfma-3x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-aarch64-neonfma-2x4-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-aarch64-neonfma-4x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-aarch64-neonfma-1x4-acc2.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-4x2-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-6x2-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-gemm/gen/f32-gemm-6x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-4x2-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-6x2-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-igemm/gen/f32-igemm-6x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-aarch64-neonfma-lane-ld128.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-aarch64-neonfma-lane-ld128.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-6x8-minmax-aarch64-neonfma-lane-ld128.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-6x8-minmax-aarch64-neonfma-lane-ld64.c", + "src/f32-spmm/gen/f32-spmm-32x2-minmax-aarch64-neonfma.c", + "src/f32-spmm/gen/f32-spmm-32x4-minmax-aarch64-neonfma.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-aarch64-neon-x8.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-aarch64-neon-x8.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-aarch64-neon-x8.c", + "src/f32-vsqrt/gen/f32-vsqrt-aarch64-neon-sqrt-x4.c", + "src/f32-vtanh/gen/f32-vtanh-aarch64-neonfma-expm1minus-rr1-p6h5ts-div-x16.c", + "src/x8-lut/gen/x8-lut-aarch64-neon-tbx128x4-x64.c", + "src/x24-transposec/x24-transposec-4x4-aarch64-neon-tbl128.c", + "src/x32-transposec/x32-transposec-4x4-aarch64-neon-tbl128.c", +] + +PROD_NEONV8_MICROKERNEL_SRCS = [ + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-neonv8-x32.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-neonv8-x32.c", + "src/f32-vrnd/gen/f32-vrndd-neonv8-x8.c", + "src/f32-vrnd/gen/f32-vrndne-neonv8-x8.c", + "src/f32-vrnd/gen/f32-vrndu-neonv8-x8.c", + "src/f32-vrnd/gen/f32-vrndz-neonv8-x8.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-neonv8-mla8-ld128.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-neonv8-mla8-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p8c-minmax-fp32-neonv8-mla8-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-neonv8-mla8-ld64.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8-minmax-fp32-neonv8-mlal-lane-prfm.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8-minmax-fp32-neonv8-mlal-lane.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8c2s4-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8c8-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x16-minmax-fp32-neonv8-mlal-lane.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x8c2s4-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x8c8-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x16-minmax-fp32-neonv8-mlal-lane.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8-minmax-fp32-neonv8-mlal-lane-prfm.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8-minmax-fp32-neonv8-mlal-lane.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8c2s4-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8c8-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x16-minmax-fp32-neonv8-mlal-lane.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x8c2s4-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x8c8-minmax-fp32-neonv8-mlal.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x16-minmax-fp32-neonv8-mlal-lane.c", +] + +PROD_NEONFP16ARITH_MICROKERNEL_SRCS = [ + "src/f16-avgpool/f16-avgpool-9p8x-minmax-neonfp16arith-c8.c", + "src/f16-avgpool/f16-avgpool-9x-minmax-neonfp16arith-c8.c", + "src/f16-conv-hwc2chw/f16-conv-hwc2chw-3x3s2p1c3x4-neonfp16arith-2x2.c", + "src/f16-dwconv/gen/f16-dwconv-3p16c-minmax-neonfp16arith.c", + "src/f16-dwconv/gen/f16-dwconv-4p16c-minmax-neonfp16arith.c", + "src/f16-dwconv/gen/f16-dwconv-9p8c-minmax-neonfp16arith.c", + "src/f16-dwconv/gen/f16-dwconv-9p16c-minmax-neonfp16arith.c", + "src/f16-dwconv/gen/f16-dwconv-25p8c-minmax-neonfp16arith-acc2.c", + "src/f16-dwconv2d-chw/gen/f16-dwconv2d-chw-3x3p1-minmax-neonfp16arith-2x8.c", + "src/f16-dwconv2d-chw/gen/f16-dwconv2d-chw-3x3s2p1-minmax-neonfp16arith-1x8.c", + "src/f16-dwconv2d-chw/gen/f16-dwconv2d-chw-5x5p2-minmax-neonfp16arith-1x8.c", + "src/f16-dwconv2d-chw/gen/f16-dwconv2d-chw-5x5s2p2-minmax-neonfp16arith-1x8.c", + "src/f16-gavgpool-cw/f16-gavgpool-cw-neonfp16arith-x8.c", + "src/f16-gavgpool/gen/f16-gavgpool-7p7x-minmax-neonfp16arith-c8.c", + "src/f16-gavgpool/gen/f16-gavgpool-7x-minmax-neonfp16arith-c8.c", + "src/f16-gemm/gen/f16-gemm-1x8-minmax-neonfp16arith-ld64.c", + "src/f16-gemm/gen/f16-gemm-1x16-minmax-neonfp16arith-ld64.c", + "src/f16-gemm/gen/f16-gemm-6x8-minmax-neonfp16arith-ld64.c", + "src/f16-gemm/gen/f16-gemm-6x16-minmax-neonfp16arith-ld64.c", + "src/f16-ibilinear-chw/gen/f16-ibilinear-chw-neonfp16arith-p8.c", + "src/f16-ibilinear/gen/f16-ibilinear-neonfp16arith-c8.c", + "src/f16-igemm/gen/f16-igemm-1x8-minmax-neonfp16arith-ld64.c", + "src/f16-igemm/gen/f16-igemm-1x16-minmax-neonfp16arith-ld64.c", + "src/f16-igemm/gen/f16-igemm-6x8-minmax-neonfp16arith-ld64.c", + "src/f16-igemm/gen/f16-igemm-6x16-minmax-neonfp16arith-ld64.c", + "src/f16-maxpool/f16-maxpool-9p8x-minmax-neonfp16arith-c8.c", + "src/f16-pavgpool/f16-pavgpool-9p8x-minmax-neonfp16arith-c8.c", + "src/f16-pavgpool/f16-pavgpool-9x-minmax-neonfp16arith-c8.c", + "src/f16-prelu/gen/f16-prelu-neonfp16arith-2x16.c", + "src/f16-raddstoreexpminusmax/gen/f16-raddstoreexpminusmax-neonfp16arith-rr2-p2-x32.c", + "src/f16-raddstoreexpminusmax/gen/f16-raddstoreexpminusmax-neonfp16arith-rr2-p2-x40.c", + "src/f16-rmax/f16-rmax-neonfp16arith.c", + "src/f16-spmm/gen/f16-spmm-32x1-minmax-neonfp16arith-pipelined.c", + "src/f16-vbinary/gen/f16-vadd-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vaddc-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vmaxc-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vmin-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vminc-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vmul-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vmulc-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vrsubc-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vsqrdiff-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vsqrdiffc-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vsub-minmax-neonfp16arith-x16.c", + "src/f16-vbinary/gen/f16-vsubc-minmax-neonfp16arith-x16.c", + "src/f16-vclamp/gen/f16-vclamp-neonfp16arith-x16.c", + "src/f16-velu/gen/f16-velu-neonfp16arith-rr1-p3-x16.c", + "src/f16-vhswish/gen/f16-vhswish-neonfp16arith-x16.c", + "src/f16-vlrelu/gen/f16-vlrelu-neonfp16arith-x16.c", + "src/f16-vmulcaddc/gen/f16-vmulcaddc-c8-minmax-neonfp16arith-2x.c", + "src/f16-vrnd/gen/f16-vrndd-neonfp16arith-x16.c", + "src/f16-vrnd/gen/f16-vrndne-neonfp16arith-x16.c", + "src/f16-vrnd/gen/f16-vrndu-neonfp16arith-x16.c", + "src/f16-vrnd/gen/f16-vrndz-neonfp16arith-x16.c", + "src/f16-vsigmoid/gen/f16-vsigmoid-neonfp16arith-rr2-p2-nr1fma-x40.c", + "src/f16-vsigmoid/gen/f16-vsigmoid-neonfp16arith-rr2-p2-nr1recps-x16.c", + "src/f16-vsqrt/gen/f16-vsqrt-neonfp16arith-nr1fma1adj-x8.c", + "src/f16-vtanh/gen/f16-vtanh-neonfp16arith-expm1minus-rr1-p3h2ts-nr1fma-x32.c", + "src/f16-vunary/gen/f16-vabs-neonfp16arith-x16.c", + "src/f16-vunary/gen/f16-vneg-neonfp16arith-x16.c", + "src/f16-vunary/gen/f16-vsqr-neonfp16arith-x16.c", +] + +PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS = [ + "src/f16-vbinary/gen/f16-vdiv-minmax-aarch64-neonfp16arith-x8.c", + "src/f16-vbinary/gen/f16-vdivc-minmax-aarch64-neonfp16arith-x8.c", + "src/f16-vbinary/gen/f16-vrdivc-minmax-aarch64-neonfp16arith-x8.c", + "src/f16-vsqrt/gen/f16-vsqrt-aarch64-neonfp16arith-sqrt-x8.c", + "src/f16-vtanh/gen/f16-vtanh-aarch64-neonfp16arith-expm1minus-rr1-p3h2ts-div-x32.c", +] + +PROD_NEONBF16_MICROKERNEL_SRCS = [ +] + +PROD_NEONBF16_AARCH64_MICROKERNEL_SRCS = [ +] + +PROD_NEONDOT_MICROKERNEL_SRCS = [ + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x8c4-minmax-neondot.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x16c4-minmax-neondot.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-4x16c4-minmax-neondot.c", + "src/qs8-gemm/gen/qs8-gemm-1x8c4-minmax-rndnu-neondot.c", + "src/qs8-gemm/gen/qs8-gemm-1x16c4-minmax-rndnu-neondot.c", + "src/qs8-gemm/gen/qs8-gemm-4x8c4-minmax-rndnu-neondot.c", + "src/qs8-gemm/gen/qs8-gemm-4x16c4-minmax-rndnu-neondot.c", + "src/qs8-igemm/gen/qs8-igemm-1x8c4-minmax-rndnu-neondot.c", + "src/qs8-igemm/gen/qs8-igemm-1x16c4-minmax-rndnu-neondot.c", + "src/qs8-igemm/gen/qs8-igemm-4x8c4-minmax-rndnu-neondot.c", + "src/qs8-igemm/gen/qs8-igemm-4x16c4-minmax-rndnu-neondot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x16c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x8c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x16c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x16c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x8c4-minmax-fp32-neondot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x16c4-minmax-fp32-neondot.c", + "src/qu8-gemm/gen/qu8-gemm-1x8c4-minmax-rndnu-neondot.c", + "src/qu8-gemm/gen/qu8-gemm-1x16c4-minmax-rndnu-neondot.c", + "src/qu8-gemm/gen/qu8-gemm-4x8c4-minmax-rndnu-neondot.c", + "src/qu8-gemm/gen/qu8-gemm-4x16c4-minmax-rndnu-neondot.c", + "src/qu8-igemm/gen/qu8-igemm-1x8c4-minmax-rndnu-neondot.c", + "src/qu8-igemm/gen/qu8-igemm-1x16c4-minmax-rndnu-neondot.c", + "src/qu8-igemm/gen/qu8-igemm-4x8c4-minmax-rndnu-neondot.c", + "src/qu8-igemm/gen/qu8-igemm-4x16c4-minmax-rndnu-neondot.c", +] + +PROD_SSE_MICROKERNEL_SRCS = [ + "src/f32-avgpool/f32-avgpool-9p8x-minmax-sse-c4.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-sse-c4.c", + "src/f32-conv-hwc2chw/f32-conv-hwc2chw-3x3s2p1c3x4-sse-2x2.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-minmax-sse.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-minmax-sse.c", + "src/f32-dwconv/gen/f32-dwconv-8f8m9l16c4s4r-minmax-sse-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-minmax-sse.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-sse.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-sse-2x4-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-sse-1x4-acc3.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-sse-4x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-sse-2x4.c", + "src/f32-gavgpool-cw/f32-gavgpool-cw-sse-x4.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-sse-c4.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-sse-c4.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-sse-load1.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-minmax-sse.c", + "src/f32-gemm/gen/f32-gemm-4x8-minmax-sse-load1.c", + "src/f32-ibilinear-chw/gen/f32-ibilinear-chw-sse-p8.c", + "src/f32-ibilinear/gen/f32-ibilinear-sse-c8.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-sse-load1.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-minmax-sse.c", + "src/f32-igemm/gen/f32-igemm-4x8-minmax-sse-load1.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-sse-c4.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-sse-c4.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-sse-c4.c", + "src/f32-rmax/f32-rmax-sse.c", + "src/f32-rminmax/gen/f32-rminmax-sse-x16-acc4.c", + "src/f32-rsum/gen/f32-rsum-sse-x16-acc4.c", + "src/f32-spmm/gen/f32-spmm-32x1-minmax-sse.c", + "src/f32-vbinary/gen/f32-vadd-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vmaxc-sse-x8.c", + "src/f32-vbinary/gen/f32-vmin-sse-x8.c", + "src/f32-vbinary/gen/f32-vminc-sse-x8.c", + "src/f32-vbinary/gen/f32-vmul-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiff-sse-x8.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-sse-x8.c", + "src/f32-vbinary/gen/f32-vsub-minmax-sse-x8.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-sse-x8.c", + "src/f32-vclamp/gen/f32-vclamp-sse-x8.c", + "src/f32-vcmul/gen/f32-vcmul-sse-x8.c", + "src/f32-vhswish/gen/f32-vhswish-sse-x8.c", + "src/f32-vlrelu/gen/f32-vlrelu-sse-x8.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-sse-2x.c", + "src/f32-vsqrt/gen/f32-vsqrt-sse-sqrt-x4.c", + "src/f32-vunary/gen/f32-vabs-sse-x8.c", + "src/f32-vunary/gen/f32-vneg-sse-x8.c", + "src/f32-vunary/gen/f32-vsqr-sse-x8.c", + "src/x8-packw/gen/x8-packw-x8-gemm-goi-scalar-int-x4.c", + "src/x32-packx/x32-packx-4x-sse.c", + "src/x32-transposec/x32-transposec-4x4-sse.c", +] + +PROD_SSE2_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-sse2-int16-x32.c", + "src/f16-vunary/gen/f16-vabs-sse2-x16.c", + "src/f16-vunary/gen/f16-vneg-sse2-x16.c", + "src/f32-argmaxpool/f32-argmaxpool-4x-sse2-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9p8x-sse2-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9x-sse2-c4.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-sse2-x16.c", + "src/f32-prelu/gen/f32-prelu-sse2-2x8.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-sse2-dup.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-sse2-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-sse2-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-sse2-dup.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-sse2-x32.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-sse2-x32.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-sse2-rr2-p5-x20-acc2.c", + "src/f32-velu/gen/f32-velu-sse2-rr2-lut16-p3-x12.c", + "src/f32-vlrelu/gen/f32-vlrelu-sse2-x8.c", + "src/f32-vrnd/gen/f32-vrndd-sse2-x8.c", + "src/f32-vrnd/gen/f32-vrndne-sse2-x8.c", + "src/f32-vrnd/gen/f32-vrndu-sse2-x8.c", + "src/f32-vrnd/gen/f32-vrndz-sse2-x8.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-sse2-rr2-lut64-p2-div-x8.c", + "src/f32-vtanh/gen/f32-vtanh-sse2-expm1minus-rr1-lut8-p4h3ts-div-x16.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4c8-minmax-sse2-ld64.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-3x4c8-minmax-sse2-ld64.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p8c-minmax-fp32-sse2-mul16-add16.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p8c-minmax-fp32-sse2-mul16-add16.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-sse2-x32.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-fp32-sse2-c8.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-fp32-sse2-c8.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-gemm/gen/qs8-gemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p8c-minmax-fp32-sse2-mul16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p8c-minmax-fp32-sse2-mul16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p8c-minmax-fp32-sse2-mul16.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-sse2-mul16-ld64-x8.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-sse2-mul16-ld64-x8.c", + "src/qs8-vcvt/gen/qs8-vcvt-sse2-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-sse2-x32.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse2-mul16-ld64-x8.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-sse2-x16.c", + "src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-sse2-c8.c", + "src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-sse2-c8.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse2-mul16.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse2-mul16.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-sse2-x32.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-fp32-sse2-c8.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-fp32-sse2-c8.c", + "src/qu8-gemm/gen/qu8-gemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qu8-gemm/gen/qu8-gemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-1x4c8-minmax-fp32-sse2-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-3x4c8-minmax-fp32-sse2-ld64.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-sse2-mul16-ld64-x8.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-sse2-mul16-ld64-x8.c", + "src/qu8-vcvt/gen/qu8-vcvt-sse2-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-sse2-x32.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-fp32-sse2-mul16-ld64-x8.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c", + "src/s8-ibilinear/gen/s8-ibilinear-sse2-c8.c", + "src/s8-maxpool/s8-maxpool-9p8x-minmax-sse2-c16.c", + "src/s8-vclamp/s8-vclamp-sse2-x64.c", + "src/u8-ibilinear/gen/u8-ibilinear-sse2-c8.c", + "src/u8-maxpool/u8-maxpool-9p8x-minmax-sse2-c16.c", + "src/u8-rmax/u8-rmax-sse2.c", + "src/u8-vclamp/u8-vclamp-sse2-x64.c", + "src/xx-fill/xx-fill-sse2-x64.c", + "src/xx-pad/xx-pad-sse2.c", + "src/x8-transposec/gen/x8-transposec-16x16-reuse-mov-sse2.c", + "src/x8-zip/x8-zip-xm-sse2.c", + "src/x8-zip/x8-zip-x2-sse2.c", + "src/x8-zip/x8-zip-x3-sse2.c", + "src/x8-zip/x8-zip-x4-sse2.c", + "src/x16-transposec/gen/x16-transposec-8x8-reuse-multi-sse2.c", + "src/x32-packw/gen/x32-packw-x2c4-gemm-goi-sse2-x4.c", + "src/x32-packw/gen/x32-packw-x8-gemm-goi-sse2-x4.c", + "src/x32-unpool/x32-unpool-sse2.c", + "src/x32-zip/x32-zip-xm-sse2.c", + "src/x32-zip/x32-zip-x2-sse2.c", + "src/x32-zip/x32-zip-x3-sse2.c", + "src/x32-zip/x32-zip-x4-sse2.c", +] + +PROD_SSSE3_MICROKERNEL_SRCS = [ + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-ssse3-2x4-acc2.c", + "src/qs8-vcvt/gen/qs8-vcvt-ssse3-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-ssse3-x32.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-ssse3-x16.c", + "src/qu8-vcvt/gen/qu8-vcvt-ssse3-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-ssse3-x32.c", + "src/x24-transposec/x24-transposec-4x4-ssse3.c", +] + +PROD_SSE41_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-sse41-int16-x16.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-sse41-x8.c", + "src/f32-prelu/gen/f32-prelu-sse41-2x8.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-sse41-dup.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-sse41-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-sse41-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-sse41-dup.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-sse41-x32.c", + "src/f32-vlrelu/gen/f32-vlrelu-sse41-x8.c", + "src/f32-vrnd/gen/f32-vrndd-sse41-x8.c", + "src/f32-vrnd/gen/f32-vrndne-sse41-x8.c", + "src/f32-vrnd/gen/f32-vrndu-sse41-x8.c", + "src/f32-vrnd/gen/f32-vrndz-sse41-x8.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-sse41-rr2-lut64-p2-div-x8.c", + "src/f32-vtanh/gen/f32-vtanh-sse41-expm1minus-rr1-lut8-p4h3ts-div-x20.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4c8-minmax-sse41-ld64.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-3x4c8-minmax-sse41-ld64.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p8c-minmax-fp32-sse41-mul16-add16.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p8c-minmax-fp32-sse41-mul16-add16.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-sse41-x16.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-fp32-sse41-c8.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-fp32-sse41-c8.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-gemm/gen/qs8-gemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p8c-minmax-fp32-sse41-mul16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p8c-minmax-fp32-sse41-mul16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p8c-minmax-fp32-sse41-mul16.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-sse41-mul16-ld64-x8.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-sse41-mul16-ld64-x8.c", + "src/qs8-vcvt/gen/qs8-vcvt-sse41-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-sse41-x32.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse41-mul16-ld64-x16.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse41-mul16-ld64-x16.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-sse41-x16.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse41-mul16.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse41-mul16.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-sse41-x16.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-fp32-sse41-c8.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-fp32-sse41-c8.c", + "src/qu8-gemm/gen/qu8-gemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qu8-gemm/gen/qu8-gemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-1x4c8-minmax-fp32-sse41-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-3x4c8-minmax-fp32-sse41-ld64.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-sse41-mul16-ld64-x8.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-sse41-mul16-ld64-x8.c", + "src/qu8-vcvt/gen/qu8-vcvt-sse41-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-sse41-x32.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-fp32-sse41-mul16-ld64-x16.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-fp32-sse41-mul16-ld64-x16.c", + "src/s8-ibilinear/gen/s8-ibilinear-sse41-c16.c", + "src/s8-maxpool/s8-maxpool-9p8x-minmax-sse41-c16.c", + "src/s8-vclamp/s8-vclamp-sse41-x64.c", + "src/u8-ibilinear/gen/u8-ibilinear-sse41-c16.c", + "src/x8-packw/gen/x8-packw-x16-gemm-goi-scalar-int-x4.c", +] + +PROD_AVX_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-avx-int16-x16.c", + "src/f32-dwconv/gen/f32-dwconv-3p16c-minmax-avx.c", + "src/f32-dwconv/gen/f32-dwconv-4p16c-minmax-avx.c", + "src/f32-dwconv/gen/f32-dwconv-6f6m7l8c8s4r-minmax-avx-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p16c-minmax-avx.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-avx.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-avx-x24.c", + "src/f32-gemm/gen/f32-gemm-1x16-minmax-avx-broadcast.c", + "src/f32-gemm/gen/f32-gemm-5x16-minmax-avx-broadcast.c", + "src/f32-igemm/gen/f32-igemm-1x16-minmax-avx-broadcast.c", + "src/f32-igemm/gen/f32-igemm-5x16-minmax-avx-broadcast.c", + "src/f32-prelu/gen/f32-prelu-avx-2x16.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-avx-dup.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-avx-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-avx-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-avx-dup.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-avx-x32.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-avx-x32.c", + "src/f32-rsum/gen/f32-rsum-avx-x32-acc4.c", + "src/f32-vbinary/gen/f32-vadd-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vmaxc-avx-x16.c", + "src/f32-vbinary/gen/f32-vmin-avx-x16.c", + "src/f32-vbinary/gen/f32-vminc-avx-x16.c", + "src/f32-vbinary/gen/f32-vmul-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vsqrdiff-avx-x16.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-avx-x16.c", + "src/f32-vbinary/gen/f32-vsub-minmax-avx-x16.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-avx-x16.c", + "src/f32-vclamp/gen/f32-vclamp-avx-x16.c", + "src/f32-velu/gen/f32-velu-avx-rr2-lut4-p4-perm-x32.c", + "src/f32-vhswish/gen/f32-vhswish-avx-x16.c", + "src/f32-vlrelu/gen/f32-vlrelu-avx-x16.c", + "src/f32-vrnd/gen/f32-vrndd-avx-x16.c", + "src/f32-vrnd/gen/f32-vrndne-avx-x16.c", + "src/f32-vrnd/gen/f32-vrndu-avx-x16.c", + "src/f32-vrnd/gen/f32-vrndz-avx-x16.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-avx-rr2-p5-nr2-x40.c", + "src/f32-vsqrt/gen/f32-vsqrt-avx-sqrt-x8.c", + "src/f32-vtanh/gen/f32-vtanh-avx-expm1minus-rr1-lut4-p4h2ts-perm-div-x48.c", + "src/f32-vunary/gen/f32-vabs-avx-x16.c", + "src/f32-vunary/gen/f32-vneg-avx-x16.c", + "src/f32-vunary/gen/f32-vsqr-avx-x16.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4c8-minmax-avx-ld128.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-2x4c8-minmax-avx-ld128.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p16c-minmax-fp32-avx-mul16-add16.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p16c-minmax-fp32-avx-mul16-add16.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-avx-x32.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-gemm/gen/qs8-gemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-igemm/gen/qs8-igemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-avx-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-avx-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-avx-mul16-add16.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-avx-mul32-ld32-x8.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-avx-mul32-ld32-x8.c", + "src/qs8-vcvt/gen/qs8-vcvt-avx-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-avx-x32.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-fp32-avx-mul16-ld64-x16.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-avx-mul16-ld64-x16.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-avx-x16.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-fp32-avx-mul16.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p16c-minmax-fp32-avx-mul16.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-avx-x32.c", + "src/qu8-gemm/gen/qu8-gemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qu8-gemm/gen/qu8-gemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qu8-igemm/gen/qu8-igemm-1x4c8-minmax-fp32-avx-ld128.c", + "src/qu8-igemm/gen/qu8-igemm-2x4c8-minmax-fp32-avx-ld128.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-avx-mul32-ld32-x8.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-avx-mul32-ld32-x8.c", + "src/qu8-vcvt/gen/qu8-vcvt-avx-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-avx-x32.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-fp32-avx-mul16-ld64-x16.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-fp32-avx-mul16-ld64-x16.c", + "src/x8-lut/gen/x8-lut-avx-x64.c", + "src/x32-packw/gen/x32-packw-x16-gemm-goi-avx-x4.c", + "src/x32-packw/gen/x32-packw-x16s4-gemm-goi-avx-x4.c", + "src/x32-transposec/gen/x32-transposec-8x8-reuse-multi-avx.c", +] + +PROD_F16C_MICROKERNEL_SRCS = [ + "src/f16-avgpool/f16-avgpool-9p8x-minmax-f16c-c8.c", + "src/f16-avgpool/f16-avgpool-9x-minmax-f16c-c8.c", + "src/f16-f32-vcvt/gen/f16-f32-vcvt-f16c-x16.c", + "src/f16-f32acc-rsum/gen/f16-f32acc-rsum-f16c-x32-acc4.c", + "src/f16-gavgpool/gen/f16-gavgpool-7p7x-minmax-f16c-c8.c", + "src/f16-gavgpool/gen/f16-gavgpool-7x-minmax-f16c-c8.c", + "src/f16-maxpool/f16-maxpool-9p8x-minmax-f16c-c8.c", + "src/f16-prelu/gen/f16-prelu-f16c-2x16.c", + "src/f16-rmax/f16-rmax-f16c.c", + "src/f16-vbinary/gen/f16-vadd-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vaddc-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vdiv-minmax-f16c-x8.c", + "src/f16-vbinary/gen/f16-vdivc-minmax-f16c-x8.c", + "src/f16-vbinary/gen/f16-vmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vmaxc-f16c-x16.c", + "src/f16-vbinary/gen/f16-vmin-f16c-x16.c", + "src/f16-vbinary/gen/f16-vminc-f16c-x16.c", + "src/f16-vbinary/gen/f16-vmul-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vmulc-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vrdivc-minmax-f16c-x8.c", + "src/f16-vbinary/gen/f16-vrsubc-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vsqrdiff-f16c-x16.c", + "src/f16-vbinary/gen/f16-vsqrdiffc-f16c-x16.c", + "src/f16-vbinary/gen/f16-vsub-minmax-f16c-x16.c", + "src/f16-vbinary/gen/f16-vsubc-minmax-f16c-x16.c", + "src/f16-vclamp/gen/f16-vclamp-f16c-x16.c", + "src/f16-vhswish/gen/f16-vhswish-f16c-x16.c", + "src/f16-vlrelu/gen/f16-vlrelu-f16c-x16.c", + "src/f16-vrnd/gen/f16-vrndd-f16c-x16.c", + "src/f16-vrnd/gen/f16-vrndne-f16c-x16.c", + "src/f16-vrnd/gen/f16-vrndu-f16c-x16.c", + "src/f16-vrnd/gen/f16-vrndz-f16c-x16.c", + "src/f16-vsqrt/gen/f16-vsqrt-f16c-sqrt-x8.c", + "src/f16-vtanh/gen/f16-vtanh-f16c-expm1minus-rr1-p3h2ts-rcp-x72.c", + "src/f16-vunary/gen/f16-vsqr-f16c-x16.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-f16c-x16.c", +] + +PROD_XOP_MICROKERNEL_SRCS = [ + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-2x4c8-minmax-xop-ld64.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4c8-minmax-xop-ld64.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p16c-minmax-fp32-xop-mul16-add16.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p16c-minmax-fp32-xop-mul16-add16.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-gemm/gen/qs8-gemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-igemm/gen/qs8-igemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-xop-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-xop-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-xop-mul16-add16.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-xop-mul32-ld32-x8.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-xop-mul32-ld32-x8.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-fp32-xop-mul32.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p16c-minmax-fp32-xop-mul32.c", + "src/qu8-gemm/gen/qu8-gemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qu8-gemm/gen/qu8-gemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-1x4c8-minmax-fp32-xop-ld64.c", + "src/qu8-igemm/gen/qu8-igemm-2x4c8-minmax-fp32-xop-ld64.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-xop-mul32-ld32-x8.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-xop-mul32-ld32-x8.c", +] + +PROD_FMA3_MICROKERNEL_SRCS = [ + "src/f16-dwconv/gen/f16-dwconv-3p16c-minmax-fma3.c", + "src/f16-dwconv/gen/f16-dwconv-4p16c-minmax-fma3.c", + "src/f16-dwconv/gen/f16-dwconv-9p16c-minmax-fma3.c", + "src/f16-dwconv/gen/f16-dwconv-25p8c-minmax-fma3-acc2.c", + "src/f16-ibilinear/gen/f16-ibilinear-fma3-c8.c", + "src/f16-vmulcaddc/gen/f16-vmulcaddc-c8-minmax-fma3-2x.c", + "src/f16-vtanh/gen/f16-vtanh-fma3-polynomial-p19h9t2-x32.c", + "src/f32-dwconv/gen/f32-dwconv-3p16c-minmax-fma3.c", + "src/f32-dwconv/gen/f32-dwconv-4p16c-minmax-fma3.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l8c8s4r-minmax-fma3.c", + "src/f32-dwconv/gen/f32-dwconv-9p16c-minmax-fma3.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-fma3.c", + "src/f32-gemm/gen/f32-gemm-1x16-minmax-fma3-broadcast.c", + "src/f32-gemm/gen/f32-gemm-1x16s4-minmax-fma3-broadcast.c", + "src/f32-gemm/gen/f32-gemm-4x16s4-minmax-fma3-broadcast.c", + "src/f32-gemm/gen/f32-gemm-5x16-minmax-fma3-broadcast.c", + "src/f32-igemm/gen/f32-igemm-1x16-minmax-fma3-broadcast.c", + "src/f32-igemm/gen/f32-igemm-1x16s4-minmax-fma3-broadcast.c", + "src/f32-igemm/gen/f32-igemm-4x16s4-minmax-fma3-broadcast.c", + "src/f32-igemm/gen/f32-igemm-5x16-minmax-fma3-broadcast-prfm.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x8-minmax-fma3-dup.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x8-minmax-fma3-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-fma3-dup.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-fma3-dup.c", + "src/f32-vhswish/gen/f32-vhswish-fma3-x16.c", + "src/f32-vtanh/gen/f32-vtanh-fma3-expm1minus-rr1-lut4-p4h3ts-perm-div-x40.c", +] + +PROD_AVX2_MICROKERNEL_SRCS = [ + "src/f16-gemm/gen/f16-gemm-1x16-minmax-avx2-broadcast.c", + "src/f16-gemm/gen/f16-gemm-4x16-minmax-avx2-broadcast.c", + "src/f16-igemm/gen/f16-igemm-1x16-minmax-avx2-broadcast.c", + "src/f16-igemm/gen/f16-igemm-4x16-minmax-avx2-broadcast.c", + "src/f16-pavgpool/f16-pavgpool-9p8x-minmax-avx2-c8.c", + "src/f16-pavgpool/f16-pavgpool-9x-minmax-avx2-c8.c", + "src/f16-raddstoreexpminusmax/gen/f16-raddstoreexpminusmax-avx2-rr1-p2-x40.c", + "src/f16-velu/gen/f16-velu-avx2-rr1-p3-x16.c", + "src/f16-vsigmoid/gen/f16-vsigmoid-avx2-rr1-p2-rcp-x32.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x16-minmax-avx2-broadcast.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x16-minmax-avx2-broadcast.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x16-minmax-avx2-broadcast.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-5x16-minmax-avx2-broadcast.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-avx2-x64.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-avx2-x64.c", + "src/f32-velu/gen/f32-velu-avx2-rr1-lut4-p4-perm-x56.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-avx2-rr1-p5-div-x40.c", + "src/f32-vtanh/gen/f32-vtanh-avx2-expm1minus-rr1-lut4-p4h3ts-perm-div-x32.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p16c-minmax-fp32-avx2-mul32.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p16c-minmax-fp32-avx2-mul32.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-avx2-x16.c", + "src/qs8-gemm/gen/qs8-gemm-1x8c8-minmax-fp32-avx2.c", + "src/qs8-gemm/gen/qs8-gemm-3x8c8-minmax-fp32-avx2.c", + "src/qs8-igemm/gen/qs8-igemm-1x8c8-minmax-fp32-avx2.c", + "src/qs8-igemm/gen/qs8-igemm-3x8c8-minmax-fp32-avx2.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-avx2-mul32.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-avx2-mul32.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-avx2-mul32.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x8c8-minmax-fp32-avx2.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-3x8c8-minmax-fp32-avx2.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x8c8-minmax-fp32-avx2.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-3x8c8-minmax-fp32-avx2.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-avx2-mul32-ld64-x16.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-avx2-mul32-ld64-x16.c", + "src/qs8-vcvt/gen/qs8-vcvt-avx2-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-avx2-x32.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-fp32-avx2-mul32.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p16c-minmax-fp32-avx2-mul32.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-avx2-x16.c", + "src/qu8-gemm/gen/qu8-gemm-1x8c8-minmax-fp32-avx2.c", + "src/qu8-gemm/gen/qu8-gemm-3x8c8-minmax-fp32-avx2.c", + "src/qu8-igemm/gen/qu8-igemm-1x8c8-minmax-fp32-avx2.c", + "src/qu8-igemm/gen/qu8-igemm-3x8c8-minmax-fp32-avx2.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-avx2-mul32-ld64-x16.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-avx2-mul32-ld64-x16.c", + "src/qu8-vcvt/gen/qu8-vcvt-avx2-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-avx2-x32.c", + "src/x8-lut/gen/x8-lut-avx2-x128.c", + "src/x8-transposec/gen/x8-transposec-32x32-reuse-switch-avx2.c", + "src/x16-packw/gen/x16-packw-x8-gemm-goi-avx2-x16-prfm.c", + "src/x16-packw/gen/x16-packw-x8-gemm-goi-avx2-x16.c", + "src/x16-packw/gen/x16-packw-x16-gemm-goi-avx2-x16-prfm.c", + "src/x16-packw/gen/x16-packw-x16-gemm-goi-avx2-x16.c", + "src/x16-transposec/gen/x16-transposec-16x16-reuse-switch-avx2.c", +] + +PROD_AVX512F_MICROKERNEL_SRCS = [ + "src/f32-dwconv/gen/f32-dwconv-3p16c-minmax-avx512f.c", + "src/f32-dwconv/gen/f32-dwconv-4p16c-minmax-avx512f.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l32c16s1r-minmax-avx512f-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-9p16c-minmax-avx512f.c", + "src/f32-dwconv/gen/f32-dwconv-25p16c-minmax-avx512f.c", + "src/f32-gemm/gen/f32-gemm-1x16-minmax-avx512f-broadcast.c", + "src/f32-gemm/gen/f32-gemm-7x16-minmax-avx512f-broadcast.c", + "src/f32-igemm/gen/f32-igemm-1x16-minmax-avx512f-broadcast.c", + "src/f32-igemm/gen/f32-igemm-7x16-minmax-avx512f-broadcast.c", + "src/f32-prelu/gen/f32-prelu-avx512f-2x16.c", + "src/f32-vbinary/gen/f32-vadd-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vmaxc-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vmin-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vminc-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vmul-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vsqrdiff-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vsub-minmax-avx512f-x32.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-avx512f-x32.c", + "src/f32-vclamp/gen/f32-vclamp-avx512f-x16.c", + "src/f32-velu/gen/f32-velu-avx512f-rr1-lut16-p3-perm-x64.c", + "src/f32-vhswish/gen/f32-vhswish-avx512f-x16.c", + "src/f32-vlrelu/gen/f32-vlrelu-avx512f-x16.c", + "src/f32-vrnd/gen/f32-vrndd-avx512f-x16.c", + "src/f32-vrnd/gen/f32-vrndne-avx512f-x16.c", + "src/f32-vrnd/gen/f32-vrndu-avx512f-x16.c", + "src/f32-vrnd/gen/f32-vrndz-avx512f-x16.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-avx512f-rr2-lut32-p2-perm2-scalef-div-x64.c", + "src/f32-vunary/gen/f32-vabs-avx512f-x16.c", + "src/f32-vunary/gen/f32-vneg-avx512f-x16.c", + "src/f32-vunary/gen/f32-vsqr-avx512f-x16.c", + "src/x32-packw/gen/x32-packw-x16-gemm-goi-avx512f-x4-prfm.c", +] + +PROD_AVX512SKX_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-avx512skx-x16.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-avx512skx-x16.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x16-minmax-avx512skx-broadcast.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-7x16-minmax-avx512skx-broadcast.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-avx512skx-x128.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-avx512skx-x128.c", + "src/f32-vtanh/gen/f32-vtanh-avx512skx-expm1minus-rr1-lut4-p4h3ts-perm-div-x64.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x16c8-minmax-avx512skx.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-4x16c8-minmax-avx512skx.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p32c-minmax-fp32-avx512skx-mul32.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p32c-minmax-fp32-avx512skx-mul32.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-avx512skx-x32.c", + "src/qs8-gemm/gen/qs8-gemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qs8-gemm/gen/qs8-gemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qs8-igemm/gen/qs8-igemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qs8-igemm/gen/qs8-igemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p32c-minmax-fp32-avx512skx-mul32.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p32c-minmax-fp32-avx512skx-mul32.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p32c-minmax-fp32-avx512skx-mul32.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-avx512skx-mul32-ld128-x16.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-avx512skx-mul32-ld128-x16.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p32c-minmax-fp32-avx512skx-mul32.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p32c-minmax-fp32-avx512skx-mul32.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-avx512skx-x32.c", + "src/qu8-gemm/gen/qu8-gemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qu8-gemm/gen/qu8-gemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qu8-igemm/gen/qu8-igemm-1x16c8-minmax-fp32-avx512skx.c", + "src/qu8-igemm/gen/qu8-igemm-4x16c8-minmax-fp32-avx512skx.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-avx512skx-mul32-ld128-x16.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-avx512skx-mul32-ld128-x16.c", + "src/x8-lut/gen/x8-lut-avx512skx-vpshufb-x64.c", +] + +PROD_AVX512VBMI_MICROKERNEL_SRCS = [ + "src/x8-lut/gen/x8-lut-avx512vbmi-vpermx2b-x128.c", +] + +PROD_WASM_MICROKERNEL_SRCS = [ + "src/f32-avgpool/f32-avgpool-9p8x-minmax-wasm-c1.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-wasm-c1.c", + "src/f32-dwconv/gen/f32-dwconv-3p1c-minmax-wasm-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-4p1c-minmax-wasm-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l1c1s1r-minmax-wasm.c", + "src/f32-dwconv/gen/f32-dwconv-9p1c-minmax-wasm-acc2.c", + "src/f32-dwconv/gen/f32-dwconv-25p1c-minmax-wasm-acc2.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-wasm-c1.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-wasm-c1.c", + "src/f32-gemm/gen/f32-gemm-1x4-minmax-wasm.c", + "src/f32-gemm/gen/f32-gemm-1x4-relu-wasm.c", + "src/f32-gemm/gen/f32-gemm-4x2-minmax-wasm.c", + "src/f32-gemm/gen/f32-gemm-4x4-minmax-wasm.c", + "src/f32-gemm/gen/f32-gemm-4x4-relu-wasm.c", + "src/f32-igemm/gen/f32-igemm-1x4-minmax-wasm.c", + "src/f32-igemm/gen/f32-igemm-1x4-relu-wasm.c", + "src/f32-igemm/gen/f32-igemm-4x2-minmax-wasm.c", + "src/f32-igemm/gen/f32-igemm-4x4-minmax-wasm.c", + "src/f32-igemm/gen/f32-igemm-4x4-relu-wasm.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-wasm-c1.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-wasm-c1.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-wasm-c1.c", + "src/f32-prelu/gen/f32-prelu-wasm-2x4.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-1x4-minmax-wasm.c", + "src/f32-qc4w-gemm/gen/f32-qc4w-gemm-4x4-minmax-wasm.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x4-minmax-wasm.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x4-minmax-wasm.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-wasm-fmagic-x4.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-wasm-fmagic-x4.c", + "src/f32-vbinary/gen/f32-vadd-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vdivc-relu-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmaxc-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmin-wasm-x8.c", + "src/f32-vbinary/gen/f32-vminc-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmul-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vmulc-relu-wasm-x8.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vsub-minmax-wasm-x8.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-wasm-x8.c", + "src/f32-vclamp/gen/f32-vclamp-wasm-x4.c", + "src/f32-velu/gen/f32-velu-wasm-rr2-p6-x6.c", + "src/f32-vhswish/gen/f32-vhswish-wasm-x4.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c1-minmax-wasm-2x.c", + "src/f32-vrelu/gen/f32-vrelu-wasm-x8.c", + "src/f32-vtanh/gen/f32-vtanh-wasm-expm1minus-rr1-p6h5ts-div-x4.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4-minmax-wasm.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-4x4-minmax-wasm.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p2c-minmax-fp32-wasm-fmagic.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p2c-minmax-fp32-wasm-fmagic.c", + "src/qs8-gemm/gen/qs8-gemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-gemm/gen/qs8-gemm-4x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-igemm/gen/qs8-igemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-igemm/gen/qs8-igemm-4x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p2c-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p2c-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p2c-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x4-minmax-fp32-wasm-fmagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-wasm-fmagic.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p2c-minmax-fp32-wasm-fmagic.c", + "src/qu8-gemm/gen/qu8-gemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qu8-gemm/gen/qu8-gemm-4x4-minmax-fp32-wasm-fmagic.c", + "src/qu8-igemm/gen/qu8-igemm-1x4-minmax-fp32-wasm-fmagic.c", + "src/qu8-igemm/gen/qu8-igemm-4x4-minmax-fp32-wasm-fmagic.c", +] + +PROD_WASMSIMD_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-wasmsimd-int16-x16.c", + "src/f32-argmaxpool/f32-argmaxpool-4x-wasmsimd-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9p8x-wasmsimd-c4.c", + "src/f32-argmaxpool/f32-argmaxpool-9x-wasmsimd-c4.c", + "src/f32-avgpool/f32-avgpool-9p8x-minmax-wasmsimd-arm-c4.c", + "src/f32-avgpool/f32-avgpool-9p8x-minmax-wasmsimd-x86-c4.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-wasmsimd-arm-c4.c", + "src/f32-avgpool/f32-avgpool-9x-minmax-wasmsimd-x86-c4.c", + "src/f32-conv-hwc2chw/f32-conv-hwc2chw-3x3s2p1c3x4-wasmsimd-2x2.c", + "src/f32-dwconv/gen/f32-dwconv-3f3m3l4c4s4r-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-3f3m3l4c4s4r-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-3f3m3l8c4s4r-minmax-wasmsimd-x86.c", + "src/f32-dwconv/gen/f32-dwconv-3f3m3l8c4s4r-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-3p4c-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-3p4c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-minmax-wasmsimd-x86.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-4p4c-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-4p4c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-minmax-wasmsimd-x86.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l4c4s4r-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l4c4s4r-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-9p4c-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-9p4c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-minmax-wasmsimd-x86.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-wasmsimd.c", + "src/f32-dwconv/gen/f32-dwconv-25p4c-minmax-wasmsimd-arm.c", + "src/f32-dwconv/gen/f32-dwconv-25p4c-wasmsimd.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-wasmsimd-arm-loadsplat-2x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3p1-minmax-wasmsimd-x86-loadsplat-2x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-wasmsimd-arm-splat-1x4-acc4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-3x3s2p1-minmax-wasmsimd-x86-splat-1x4-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-wasmsimd-arm-splat-3x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5p2-minmax-wasmsimd-x86-splat-3x4.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-wasmsimd-arm-splat-1x4-acc2.c", + "src/f32-dwconv2d-chw/gen/f32-dwconv2d-chw-5x5s2p2-minmax-wasmsimd-x86-splat-1x4-acc2.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-wasmsimd-x24.c", + "src/f32-gavgpool-cw/f32-gavgpool-cw-wasmsimd-arm-x4.c", + "src/f32-gavgpool-cw/f32-gavgpool-cw-wasmsimd-x86-x4.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-wasmsimd-arm-c4.c", + "src/f32-gavgpool/f32-gavgpool-7p7x-minmax-wasmsimd-x86-c4.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-wasmsimd-arm-c4.c", + "src/f32-gavgpool/f32-gavgpool-7x-minmax-wasmsimd-x86-c4.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-wasmsimd-arm-splat.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-wasmsimd-x86-splat.c", + "src/f32-gemm/gen/f32-gemm-1x8-relu-wasmsimd-splat.c", + "src/f32-gemm/gen/f32-gemm-1x8-wasmsimd-splat.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-minmax-wasmsimd-arm.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-minmax-wasmsimd-x86.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-wasmsimd.c", + "src/f32-gemm/gen/f32-gemm-4x8-minmax-wasmsimd-x86-splat.c", + "src/f32-gemm/gen/f32-gemm-4x8-relu-wasmsimd-splat.c", + "src/f32-gemm/gen/f32-gemm-4x8-wasmsimd-splat.c", + "src/f32-gemm/gen/f32-gemm-5x8-minmax-wasmsimd-arm-splat.c", + "src/f32-gemm/gen/f32-gemm-5x8-relu-wasmsimd-splat.c", + "src/f32-gemm/gen/f32-gemm-5x8-wasmsimd-splat.c", + "src/f32-ibilinear-chw/gen/f32-ibilinear-chw-wasmsimd-p8.c", + "src/f32-ibilinear/gen/f32-ibilinear-wasmsimd-c8.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-wasmsimd-arm-splat.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-wasmsimd-x86-splat.c", + "src/f32-igemm/gen/f32-igemm-1x8-relu-wasmsimd-splat.c", + "src/f32-igemm/gen/f32-igemm-1x8-wasmsimd-splat.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-minmax-wasmsimd-arm.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-minmax-wasmsimd-x86.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-wasmsimd.c", + "src/f32-igemm/gen/f32-igemm-4x8-minmax-wasmsimd-x86-splat.c", + "src/f32-igemm/gen/f32-igemm-4x8-relu-wasmsimd-splat.c", + "src/f32-igemm/gen/f32-igemm-4x8-wasmsimd-splat.c", + "src/f32-igemm/gen/f32-igemm-5x8-minmax-wasmsimd-arm-splat.c", + "src/f32-igemm/gen/f32-igemm-5x8-relu-wasmsimd-splat.c", + "src/f32-igemm/gen/f32-igemm-5x8-wasmsimd-splat.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-wasmsimd-arm-c4.c", + "src/f32-maxpool/f32-maxpool-9p8x-minmax-wasmsimd-x86-c4.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-wasmsimd-arm-c4.c", + "src/f32-pavgpool/f32-pavgpool-9p8x-minmax-wasmsimd-x86-c4.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-wasmsimd-arm-c4.c", + "src/f32-pavgpool/f32-pavgpool-9x-minmax-wasmsimd-x86-c4.c", + "src/f32-prelu/gen/f32-prelu-wasmsimd-iminmax-2x8.c", + "src/f32-prelu/gen/f32-prelu-wasmsimd-laneselect-2x8.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-wasmsimd-arm-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-wasmsimd-x86-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-relu-wasmsimd-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-wasmsimd-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-wasmsimd-x86-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-relu-wasmsimd-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-wasmsimd-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-5x8-minmax-wasmsimd-arm-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-5x8-relu-wasmsimd-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-5x8-wasmsimd-splat.c", + "src/f32-qs8-vcvt/gen/f32-qs8-vcvt-wasmsimd-magic-x32.c", + "src/f32-qu8-vcvt/gen/f32-qu8-vcvt-wasmsimd-magic-x32.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-wasmsimd-rr2-p5-x16-acc2.c", + "src/f32-rmax/f32-rmax-wasmsimd-arm.c", + "src/f32-rmax/f32-rmax-wasmsimd-x86.c", + "src/f32-rminmax/gen/f32-rminmax-wasmsimd-minmax-x16-acc4.c", + "src/f32-rsum/gen/f32-rsum-wasmsimd-x16-acc4.c", + "src/f32-spmm/gen/f32-spmm-32x1-minmax-wasmsimd-arm.c", + "src/f32-spmm/gen/f32-spmm-32x1-minmax-wasmsimd-x86.c", + "src/f32-vbinary/gen/f32-vadd-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vadd-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vadd-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vaddc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vaddc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vdiv-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vdiv-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vdivc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vdivc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vmaxc-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vmaxc-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vmin-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vmin-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vminc-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vminc-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vmul-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vmul-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vmul-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vmulc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vmulc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vrdivc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vrdivc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vrsubc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vrsubc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vsqrdiff-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vsqrdiffc-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vsub-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vsub-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vsub-wasmsimd-x16.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-wasmsimd-arm-x16.c", + "src/f32-vbinary/gen/f32-vsubc-minmax-wasmsimd-x86-x16.c", + "src/f32-vbinary/gen/f32-vsubc-wasmsimd-x16.c", + "src/f32-vclamp/gen/f32-vclamp-wasmsimd-arm-x8.c", + "src/f32-vclamp/gen/f32-vclamp-wasmsimd-x86-x8.c", + "src/f32-vcmul/gen/f32-vcmul-wasmsimd-x8.c", + "src/f32-velu/gen/f32-velu-wasmsimd-arm-rr2-p6-x20.c", + "src/f32-velu/gen/f32-velu-wasmsimd-x86-rr2-p6-x20.c", + "src/f32-vhswish/gen/f32-vhswish-wasmsimd-x16.c", + "src/f32-vlrelu/gen/f32-vlrelu-wasmsimd-iminmax-x8.c", + "src/f32-vlrelu/gen/f32-vlrelu-wasmsimd-laneselect-x8.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-wasmsimd-arm-2x.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-wasmsimd-x86-2x.c", + "src/f32-vrelu/gen/f32-vrelu-wasmsimd-x16.c", + "src/f32-vrnd/gen/f32-vrndd-wasmsimd-x8.c", + "src/f32-vrnd/gen/f32-vrndne-wasmsimd-x8.c", + "src/f32-vrnd/gen/f32-vrndu-wasmsimd-x8.c", + "src/f32-vrnd/gen/f32-vrndz-wasmsimd-x8.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-wasmsimd-rr2-p5-div-x16.c", + "src/f32-vsqrt/gen/f32-vsqrt-wasmsimd-sqrt-x8.c", + "src/f32-vtanh/gen/f32-vtanh-wasmsimd-expm1minus-rr1-p6h5ts-div-abs-min-x16.c", + "src/f32-vtanh/gen/f32-vtanh-wasmsimd-expm1minus-rr1-p6h5ts-div-nabs-pmax-x16.c", + "src/f32-vunary/gen/f32-vabs-wasmsimd-x8.c", + "src/f32-vunary/gen/f32-vneg-wasmsimd-x8.c", + "src/f32-vunary/gen/f32-vsqr-wasmsimd-x8.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-1x4c2s4-minmax-wasmsimd-dot16x2-ld128.c", + "src/qd8-f32-qc8w-gemm/gen/qd8-f32-qc8w-gemm-4x4c2s4-minmax-wasmsimd-dot16x2-ld128.c", + "src/qs8-dwconv/gen/qs8-dwconv-9p16c-minmax-fp32-wasmsimd-mul16-add16.c", + "src/qs8-dwconv/gen/qs8-dwconv-25p16c-minmax-fp32-wasmsimd-mul16-add16.c", + "src/qs8-f32-vcvt/gen/qs8-f32-vcvt-wasmsimd-x32.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7p7x-minmax-fp32-wasmsimd-c16.c", + "src/qs8-gavgpool/gen/qs8-gavgpool-7x-minmax-fp32-wasmsimd-c16.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-gemm/gen/qs8-gemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-igemm/gen/qs8-igemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-3p16c-minmax-fp32-wasmsimd-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-9p16c-minmax-fp32-wasmsimd-mul16-add16.c", + "src/qs8-qc8w-dwconv/gen/qs8-qc8w-dwconv-25p16c-minmax-fp32-wasmsimd-mul16-add16.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qs8-vadd/gen/qs8-vadd-minmax-wasmsimd-x32.c", + "src/qs8-vaddc/gen/qs8-vaddc-minmax-wasmsimd-x32.c", + "src/qs8-vcvt/gen/qs8-vcvt-wasmsimd-x16.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-wasmsimd-arm-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-wasmsimd-x86-x16.c", + "src/qs8-vmul/gen/qs8-vmul-minmax-fp32-wasmsimd-mul32-ld64-x8.c", + "src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-wasmsimd-mul32-ld64-x8.c", + "src/qs16-qs8-vcvt/gen/qs16-qs8-vcvt-wasmsimd-x16.c", + "src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-wasmsimd-mul16.c", + "src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-wasmsimd-mul16.c", + "src/qu8-f32-vcvt/gen/qu8-f32-vcvt-wasmsimd-x32.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7p7x-minmax-fp32-wasmsimd-c16.c", + "src/qu8-gavgpool/gen/qu8-gavgpool-7x-minmax-fp32-wasmsimd-c16.c", + "src/qu8-gemm/gen/qu8-gemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qu8-gemm/gen/qu8-gemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qu8-igemm/gen/qu8-igemm-1x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qu8-igemm/gen/qu8-igemm-4x4c2s4-minmax-fp32-wasmsimd-dot16x2-ld128.c", + "src/qu8-vadd/gen/qu8-vadd-minmax-wasmsimd-x32.c", + "src/qu8-vaddc/gen/qu8-vaddc-minmax-wasmsimd-x32.c", + "src/qu8-vcvt/gen/qu8-vcvt-wasmsimd-x16.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-wasmsimd-arm-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-wasmsimd-x86-x16.c", + "src/qu8-vmul/gen/qu8-vmul-minmax-fp32-wasmsimd-mul32-ld64-x8.c", + "src/qu8-vmulc/gen/qu8-vmulc-minmax-fp32-wasmsimd-mul32-ld64-x8.c", + "src/s8-ibilinear/gen/s8-ibilinear-wasmsimd-dot16x2-c8.c", + "src/s8-maxpool/s8-maxpool-9p8x-minmax-wasmsimd-c16.c", + "src/s8-vclamp/s8-vclamp-wasmsimd-x64.c", + "src/u8-ibilinear/gen/u8-ibilinear-wasmsimd-dot16x2-c8.c", + "src/u8-maxpool/u8-maxpool-9p8x-minmax-wasmsimd-c16.c", + "src/u8-vclamp/u8-vclamp-wasmsimd-x64.c", + "src/xx-fill/xx-fill-wasmsimd-x64.c", + "src/xx-pad/xx-pad-wasmsimd.c", + "src/x8-lut/gen/x8-lut-wasmsimd-x32.c", + "src/x8-packw/gen/x8-packw-x8-gemm-goi-scalar-int-x4.c", + "src/x8-transposec/gen/x8-transposec-16x16-reuse-mov-wasmsimd.c", + "src/x16-transposec/gen/x16-transposec-8x8-reuse-mov-wasmsimd.c", + "src/x32-packw/gen/x32-packw-x2c4-gemm-goi-wasmsimd-x4.c", + "src/x32-packw/gen/x32-packw-x8-gemm-goi-wasmsimd-x4.c", + "src/x32-transposec/gen/x32-transposec-4x4-reuse-mov-wasmsimd.c", + "src/x32-unpool/x32-unpool-wasmsimd.c", + "src/x32-zip/x32-zip-xm-wasmsimd.c", + "src/x32-zip/x32-zip-x2-wasmsimd.c", + "src/x32-zip/x32-zip-x3-wasmsimd.c", + "src/x32-zip/x32-zip-x4-wasmsimd.c", +] + +PROD_WASMRELAXEDSIMD_MICROKERNEL_SRCS = [ + "src/f16-f32-vcvt/gen/f16-f32-vcvt-wasmrelaxedsimd-int16-x16.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-minmax-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-3p8c-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-minmax-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-4p8c-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l4c4s4r-minmax-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-5f5m5l4c4s4r-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-minmax-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-9p8c-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-minmax-wasmrelaxedsimd-fma.c", + "src/f32-dwconv/gen/f32-dwconv-25p8c-wasmrelaxedsimd-fma.c", + "src/f32-f16-vcvt/gen/f32-f16-vcvt-wasmrelaxedsimd-x24.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-1x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-gemm/gen/f32-gemm-1x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-1x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-gemm/gen/f32-gemm-1x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-1x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-minmax-wasmrelaxedsimd-fma.c", + "src/f32-gemm/gen/f32-gemm-4x2c4-wasmrelaxedsimd-fma.c", + "src/f32-gemm/gen/f32-gemm-4x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-4x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-4x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-gemm/gen/f32-gemm-6x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-gemm/gen/f32-gemm-6x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-gemm/gen/f32-gemm-6x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-ibilinear/gen/f32-ibilinear-wasmrelaxedsimd-c8.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-1x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-igemm/gen/f32-igemm-1x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-1x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-igemm/gen/f32-igemm-1x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-1x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-minmax-wasmrelaxedsimd-fma.c", + "src/f32-igemm/gen/f32-igemm-4x2c4-wasmrelaxedsimd-fma.c", + "src/f32-igemm/gen/f32-igemm-4x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-4x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-4x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-igemm/gen/f32-igemm-6x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-igemm/gen/f32-igemm-6x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-igemm/gen/f32-igemm-6x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-prelu/gen/f32-prelu-wasmrelaxedsimd-iminmax-2x4.c", + "src/f32-prelu/gen/f32-prelu-wasmrelaxedsimd-laneselect-2x4.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-1x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-minmax-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-relu-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-4x8-wasmrelaxedsimd-fma-loadsplat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-6x8-minmax-wasmrelaxedsimd-fma-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-6x8-relu-wasmrelaxedsimd-fma-splat.c", + "src/f32-qc8w-gemm/gen/f32-qc8w-gemm-6x8-wasmrelaxedsimd-fma-splat.c", + "src/f32-raddstoreexpminusmax/gen/f32-raddstoreexpminusmax-wasmrelaxedsimd-rr2-p5-x16-acc2.c", + "src/f32-velu/gen/f32-velu-wasmrelaxedsimd-fma-rr2-p6-x24.c", + "src/f32-vlrelu/gen/f32-vlrelu-wasmrelaxedsimd-iminmax-x4.c", + "src/f32-vlrelu/gen/f32-vlrelu-wasmrelaxedsimd-laneselect-x4.c", + "src/f32-vmulcaddc/gen/f32-vmulcaddc-c4-minmax-wasmrelaxedsimd-fma-2x.c", + "src/f32-vsigmoid/gen/f32-vsigmoid-wasmrelaxedsimd-fma-rr2-p5-div-x24.c", + "src/qs8-gemm/gen/qs8-gemm-1x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-gemm/gen/qs8-gemm-4x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-igemm/gen/qs8-igemm-1x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-igemm/gen/qs8-igemm-4x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-1x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-qc8w-gemm/gen/qs8-qc8w-gemm-4x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-1x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-qc8w-igemm/gen/qs8-qc8w-igemm-4x4c16-minmax-fp32-wasmsdot.c", + "src/qs8-vcvt/gen/qs8-vcvt-wasmrelaxedsimd-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-wasmrelaxedsimd-arm-x32.c", + "src/qs8-vlrelu/gen/qs8-vlrelu-wasmrelaxedsimd-x86-x32.c", + "src/qu8-vcvt/gen/qu8-vcvt-wasmrelaxedsimd-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-wasmrelaxedsimd-arm-x32.c", + "src/qu8-vlrelu/gen/qu8-vlrelu-wasmrelaxedsimd-x86-x32.c", + "src/x8-lut/gen/x8-lut-wasmpshufb-x32.c", +] + +MICROKERNEL_HDRS = [ + "src/xnnpack/argmaxpool.h", + "src/xnnpack/avgpool.h", + "src/xnnpack/conv.h", + "src/xnnpack/dwconv.h", + "src/xnnpack/fft.h", + "src/xnnpack/fill.h", + "src/xnnpack/filterbank.h", + "src/xnnpack/gavgpool.h", + "src/xnnpack/gemm.h", + "src/xnnpack/ibilinear.h", + "src/xnnpack/igemm.h", + "src/xnnpack/lut.h", + "src/xnnpack/maxpool.h", + "src/xnnpack/packb.h", + "src/xnnpack/packw.h", + "src/xnnpack/packx.h", + "src/xnnpack/pad.h", + "src/xnnpack/pavgpool.h", + "src/xnnpack/ppmm.h", + "src/xnnpack/prelu.h", + "src/xnnpack/quantization.h", + "src/xnnpack/raddexpminusmax.h", + "src/xnnpack/raddextexp.h", + "src/xnnpack/raddstoreexpminusmax.h", + "src/xnnpack/reduce.h", + "src/xnnpack/rmax.h", + "src/xnnpack/rmaxabs.h", + "src/xnnpack/spmm.h", + "src/xnnpack/transpose.h", + "src/xnnpack/unpool.h", + "src/xnnpack/vadd.h", + "src/xnnpack/vbinary.h", + "src/xnnpack/vcvt.h", + "src/xnnpack/vhswish.h", + "src/xnnpack/vlog.h", + "src/xnnpack/vlrelu.h", + "src/xnnpack/vlshift.h", + "src/xnnpack/vmul.h", + "src/xnnpack/vmulcaddc.h", + "src/xnnpack/vscaleexpminusmax.h", + "src/xnnpack/vscaleextexp.h", + "src/xnnpack/vsquareabs.h", + "src/xnnpack/vunary.h", + "src/xnnpack/window.h", + "src/xnnpack/zerob.h", + "src/xnnpack/zip.h", +] + +INTERNAL_MICROKERNEL_HDRS = MICROKERNEL_HDRS + [ + "src/xnnpack/cache.h", + "src/xnnpack/intrinsics-polyfill.h", + "src/xnnpack/math-stubs.h", + "src/xnnpack/requantization-stubs.h", +] + +WASM_JIT_LINKOPTS = [ + "-sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=$addFunction", + "-sALLOW_TABLE_GROWTH=1", +] + +JIT_WASMSIMD32_COMMONS_SRCS = [ + "src/xnnpack/wasmsimd-gemm-igemm-loadsplat-commons.h", + "src/xnnpack/wasmsimd-gemm-igemm-commons.h", + "src/xnnpack/wasmsimd-gemm-igemm-s4-commons.h", +] + +JIT_WASMRELAXEDSIMD32_COMMONS_SRCS = [] + +JIT_WASM32_SRCS = WASM32_JIT_MICROKERNEL_SRCS + +JIT_WASMSIMD32_SRCS = JIT_WASM32_SRCS + JIT_WASMSIMD32_COMMONS_SRCS + WASMSIMD32_JIT_MICROKERNEL_SRCS + +JIT_WASMRELAXEDSIMD32_SRCS = JIT_WASMSIMD32_SRCS + JIT_WASMRELAXEDSIMD32_COMMONS_SRCS + WASMRELAXEDSIMD32_JIT_MICROKERNEL_SRCS + +filegroup( + name = "microkernel_source_files", + data = ALL_NEON_AARCH64_MICROKERNEL_SRCS + ALL_NEONBF16_AARCH64_MICROKERNEL_SRCS + ALL_NEONFMA_AARCH64_MICROKERNEL_SRCS + ALL_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS + ALL_ARMSIMD32_MICROKERNEL_SRCS + ALL_AVX_MICROKERNEL_SRCS + ALL_AVX2_MICROKERNEL_SRCS + ALL_AVX512F_MICROKERNEL_SRCS + ALL_AVX512SKX_MICROKERNEL_SRCS + ALL_AVX512VBMI_MICROKERNEL_SRCS + ALL_F16C_MICROKERNEL_SRCS + ALL_FMA_MICROKERNEL_SRCS + ALL_FMA3_MICROKERNEL_SRCS + ALL_FP16ARITH_MICROKERNEL_SRCS + ALL_HEXAGON_MICROKERNEL_SRCS + ALL_NEON_MICROKERNEL_SRCS + ALL_NEONBF16_MICROKERNEL_SRCS + ALL_NEONDOT_MICROKERNEL_SRCS + ALL_NEONFMA_MICROKERNEL_SRCS + ALL_NEONFP16_MICROKERNEL_SRCS + ALL_NEONFP16ARITH_MICROKERNEL_SRCS + ALL_NEONV8_MICROKERNEL_SRCS + ALL_SCALAR_MICROKERNEL_SRCS + ALL_SSE_MICROKERNEL_SRCS + ALL_SSE2_MICROKERNEL_SRCS + ALL_SSE41_MICROKERNEL_SRCS + ALL_SSSE3_MICROKERNEL_SRCS + ALL_WASM_MICROKERNEL_SRCS + ALL_WASMRELAXEDSIMD_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS + ALL_XOP_MICROKERNEL_SRCS + AARCH32_ASM_MICROKERNEL_SRCS + AARCH64_ASM_MICROKERNEL_SRCS + WASM32_ASM_MICROKERNEL_SRCS + ["src/microparams-init.c"], + visibility = xnnpack_visibility(), +) + +filegroup( + name = "microkernel_header_files", + data = MICROKERNEL_HDRS + ["src/xnnpack/microparams.h"], + visibility = xnnpack_visibility(), +) + +# Collection of internal microkernel related headers that declares all the microkernel functions. +xnnpack_cc_library( + name = "microkernels_h", + hdrs = INTERNAL_MICROKERNEL_HDRS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "xnnpack_h", + hdrs = ["include/xnnpack.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "common", + hdrs = ["src/xnnpack/common.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":platform_jit", + ], +) + +xnnpack_cc_library( + name = "microparams", + hdrs = [ + "src/xnnpack/microparams.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ], +) + +xnnpack_cc_library( + name = "hardware_config", + srcs = ["src/configs/hardware-config.c"], + hdrs = [ + "src/xnnpack/config.h", + "src/xnnpack/microfnptr.h", + "src/xnnpack/microparams.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ] + select({ + ":emscripten": [], + "//conditions:default": ["@cpuinfo"], + }), +) + +xnnpack_cc_library( + name = "hardware_config_test_mode", + srcs = ["src/configs/hardware-config.c"], + hdrs = [ + "src/xnnpack/config.h", + "src/xnnpack/microfnptr.h", + "src/xnnpack/microparams.h", + ], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ] + select({ + ":emscripten": [], + "//conditions:default": ["@cpuinfo"], + }), +) + +xnnpack_cc_library( + name = "microkernel_configs", + srcs = [ + "src/configs/argmaxpool-config.c", + "src/configs/avgpool-config.c", + "src/configs/binary-elementwise-config.c", + "src/configs/cmul-config.c", + "src/configs/conv-hwc2chw-config.c", + "src/configs/dwconv-config.c", + "src/configs/dwconv2d-chw-config.c", + "src/configs/gavgpool-config.c", + "src/configs/gavgpool-cw-config.c", + "src/configs/gemm-config.c", + "src/configs/ibilinear-chw-config.c", + "src/configs/ibilinear-config.c", + "src/configs/lut32norm-config.c", + "src/configs/maxpool-config.c", + "src/configs/pavgpool-config.c", + "src/configs/prelu-config.c", + "src/configs/raddstoreexpminusmax-config.c", + "src/configs/reduce-config.c", + "src/configs/rmax-config.c", + "src/configs/spmm-config.c", + "src/configs/transpose-config.c", + "src/configs/unary-elementwise-config.c", + "src/configs/unpool-config.c", + "src/configs/vmulcaddc-config.c", + "src/configs/x8-lut-config.c", + "src/configs/xx-fill-config.c", + "src/configs/xx-pad-config.c", + "src/configs/zip-config.c", + ], + hdrs = [ + "src/xnnpack/config.h", + "src/xnnpack/microfnptr.h", + "src/xnnpack/microparams.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":amalgam_microkernels", + ":common", + ":enable_assembly", + ":enable_dwconv_multipass", + ":enable_gemm_m_specialization", + ":enable_jit", + ":hardware_config", + ":logging", + ":microkernels_h", + ":microparams_init", + ":packing", + ], +) + +xnnpack_cc_library( + name = "microkernel_configs_test_mode", + srcs = [ + "src/configs/argmaxpool-config.c", + "src/configs/avgpool-config.c", + "src/configs/binary-elementwise-config.c", + "src/configs/cmul-config.c", + "src/configs/conv-hwc2chw-config.c", + "src/configs/dwconv-config.c", + "src/configs/dwconv2d-chw-config.c", + "src/configs/gavgpool-config.c", + "src/configs/gavgpool-cw-config.c", + "src/configs/gemm-config.c", + "src/configs/ibilinear-chw-config.c", + "src/configs/ibilinear-config.c", + "src/configs/lut32norm-config.c", + "src/configs/maxpool-config.c", + "src/configs/pavgpool-config.c", + "src/configs/prelu-config.c", + "src/configs/raddstoreexpminusmax-config.c", + "src/configs/reduce-config.c", + "src/configs/rmax-config.c", + "src/configs/spmm-config.c", + "src/configs/transpose-config.c", + "src/configs/unary-elementwise-config.c", + "src/configs/unpool-config.c", + "src/configs/vmulcaddc-config.c", + "src/configs/x8-lut-config.c", + "src/configs/xx-fill-config.c", + "src/configs/xx-pad-config.c", + "src/configs/zip-config.c", + ], + hdrs = [ + "src/xnnpack/config.h", + "src/xnnpack/microfnptr.h", + "src/xnnpack/microparams.h", + ], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":enable_assembly", + ":enable_dwconv_multipass", + ":enable_gemm_m_specialization", + ":enable_jit", + ":hardware_config_test_mode", + ":logging", + ":microkernels_h", + ":microparams_init", + ":packing", + ":test_microkernels", + ], +) + +xnnpack_cc_library( + name = "params", + srcs = ["src/params.c"], + hdrs = [ + "src/xnnpack/config.h", + "src/xnnpack/microfnptr.h", + "src/xnnpack/params.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":microparams", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "math", + hdrs = ["src/xnnpack/math.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ], +) + +xnnpack_cc_library( + name = "prefetch", + hdrs = ["src/xnnpack/prefetch.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ], +) + +xnnpack_cc_library( + name = "unaligned", + hdrs = ["src/xnnpack/unaligned.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ], +) + +xnnpack_cc_library( + name = "microparams_init", + srcs = ["src/microparams-init.c"], + hdrs = ["src/xnnpack/microparams-init.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ":math", + ":microparams", + ":unaligned", + ":xnnpack_h", + "@FP16", + ], +) + +xnnpack_cc_library( + name = "node_type", + hdrs = ["src/xnnpack/node-type.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "operator_type", + hdrs = ["src/xnnpack/operator-type.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "microkernel_type", + hdrs = ["src/xnnpack/microkernel-type.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "allocator", + srcs = [ + "src/allocator.c", + ], + hdrs = ["src/xnnpack/allocator.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ":math", + ":params", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "aligned_allocator", + hdrs = [ + "src/xnnpack/aligned-allocator.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "isa_checks", + hdrs = [ + "src/xnnpack/isa-checks.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":hardware_config", + ], +) + +xnnpack_cc_library( + name = "math_stubs", + hdrs = [ + "src/xnnpack/math-stubs.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "memory", + srcs = [ + "src/memory.c", + ], + hdrs = ["src/xnnpack/memory.h"], + # Do not use xnnpack_gcc_std_copts, as it defines -std=c99, which then makes MAP_ANONYMOUS undefined + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ":math", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "quantization", + hdrs = ["src/xnnpack/quantization.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":microparams", + ], +) + +xnnpack_cc_library( + name = "requantization", + hdrs = ["src/xnnpack/requantization.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microparams", + ], +) + +xnnpack_cc_library( + name = "requantization_stubs", + hdrs = ["src/xnnpack/requantization-stubs.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), +) + +xnnpack_cc_library( + name = "tables", + srcs = TABLE_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ], +) + +xnnpack_cc_library( + name = "scalar_amalgam_microkernels", + srcs = ["src/amalgam/gen/scalar.c"], + aarch32_copts = ["-marm"], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + "-ffp-contract=off", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "scalar_bench_microkernels", + srcs = ALL_FMA_MICROKERNEL_SRCS + ALL_SCALAR_MICROKERNEL_SRCS, + aarch32_copts = ["-marm"], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + "-ffp-contract=off", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "scalar_prod_microkernels", + srcs = PROD_SCALAR_MICROKERNEL_SRCS, + aarch32_copts = ["-marm"], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + "-ffp-contract=off", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "scalar_test_microkernels", + srcs = ALL_FMA_MICROKERNEL_SRCS + ALL_SCALAR_MICROKERNEL_SRCS, + aarch32_copts = ["-marm"], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + "-ffp-contract=off", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "wasm_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = ["src/amalgam/gen/wasm.c"], + wasmrelaxedsimd_srcs = [ + "src/amalgam/gen/wasm.c", + "src/amalgam/gen/wasmrelaxedsimd.c", + "src/amalgam/gen/wasmsimd.c", + ], + wasmsimd_srcs = [ + "src/amalgam/gen/wasm.c", + "src/amalgam/gen/wasmsimd.c", + ], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "wasm_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = ALL_WASM_MICROKERNEL_SRCS, + wasmrelaxedsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS + ALL_WASMRELAXEDSIMD_MICROKERNEL_SRCS, + wasmsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "wasm_prod_microkernels", + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = PROD_WASM_MICROKERNEL_SRCS, + wasmrelaxedsimd_srcs = PROD_WASM_MICROKERNEL_SRCS + PROD_WASMSIMD_MICROKERNEL_SRCS + PROD_WASMRELAXEDSIMD_MICROKERNEL_SRCS, + wasmsimd_srcs = PROD_WASM_MICROKERNEL_SRCS + PROD_WASMSIMD_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "wasm_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = ALL_WASM_MICROKERNEL_SRCS, + wasmrelaxedsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS + ALL_WASMRELAXEDSIMD_MICROKERNEL_SRCS, + wasmsimd_srcs = ALL_WASM_MICROKERNEL_SRCS + ALL_WASMSIMD_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "armsimd32_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv6", + "-mfpu=vfp", + "-munaligned-access", + ], + aarch32_srcs = ["src/amalgam/gen/armsimd32.c"], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "armsimd32_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv6", + "-mfpu=vfp", + "-munaligned-access", + ], + aarch32_srcs = ALL_ARMSIMD32_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "armsimd32_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv6", + "-mfpu=vfp", + "-munaligned-access", + ], + aarch32_srcs = PROD_ARMSIMD32_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "armsimd32_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv6", + "-mfpu=vfp", + "-munaligned-access", + ], + aarch32_srcs = ALL_ARMSIMD32_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts() + [ + "-fno-fast-math", + "-fno-math-errno", + ], + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fp16arith_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + # GCC emits wrong directives for assembler with -mfpu=fp-armv8 + "-mfpu=neon-fp-armv8", + # For vsqrth_f16 polyfill using sqrtf + "-fno-math-errno", + # For vminh_f16/vmaxh_f16 polyfills using compare + select + "-ffinite-math-only", + ], + aarch32_srcs = ["src/amalgam/gen/fp16arith.c"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fp16arith_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + # GCC emits wrong directives for assembler with -mfpu=fp-armv8 + "-mfpu=neon-fp-armv8", + # For vsqrth_f16 polyfill using sqrtf + "-fno-math-errno", + # For vminh_f16/vmaxh_f16 polyfills using compare + select + "-ffinite-math-only", + ], + aarch32_srcs = ALL_FP16ARITH_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = ALL_FP16ARITH_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fp16arith_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + # GCC emits wrong directives for assembler with -mfpu=fp-armv8 + "-mfpu=neon-fp-armv8", + # For vsqrth_f16 polyfill using sqrtf + "-fno-math-errno", + # For vminh_f16/vmaxh_f16 polyfills using compare + select + "-ffinite-math-only", + ], + aarch32_srcs = PROD_FP16ARITH_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fp16arith_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + # GCC emits wrong directives for assembler with -mfpu=fp-armv8 + "-mfpu=neon-fp-armv8", + # For vsqrth_f16 polyfill using sqrtf + "-fno-math-errno", + # For vminh_f16/vmaxh_f16 polyfills using compare + select + "-ffinite-math-only", + ], + aarch32_srcs = ALL_FP16ARITH_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = ALL_FP16ARITH_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neon_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon", + ], + aarch32_srcs = ["src/amalgam/gen/neon.c"], + aarch64_srcs = [ + "src/amalgam/gen/neon-aarch64.c", + "src/amalgam/gen/neon.c", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neon_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon", + ], + aarch32_srcs = ALL_NEON_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEON_MICROKERNEL_SRCS + ALL_NEON_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neon_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon", + ], + aarch32_srcs = PROD_NEON_MICROKERNEL_SRCS, + aarch64_srcs = PROD_NEON_MICROKERNEL_SRCS + PROD_NEON_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neon_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon", + ], + aarch32_srcs = ALL_NEON_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEON_MICROKERNEL_SRCS + ALL_NEON_AARCH64_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-fp16", + ], + aarch32_srcs = ["src/amalgam/gen/neonfp16.c"], + aarch64_srcs = ["src/amalgam/gen/neonfp16.c"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-fp16", + ], + aarch32_srcs = ALL_NEONFP16_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONFP16_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-fp16", + ], + aarch32_srcs = PROD_NEONFP16_MICROKERNEL_SRCS, + aarch64_srcs = PROD_NEONFP16_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-fp16", + ], + aarch32_srcs = ALL_NEONFP16_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONFP16_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfma_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-vfpv4", + ], + aarch32_srcs = ["src/amalgam/gen/neonfma.c"], + aarch64_srcs = ["src/amalgam/gen/neonfma.c"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfma_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-vfpv4", + ], + aarch32_srcs = ALL_NEONFMA_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONFMA_MICROKERNEL_SRCS + ALL_NEONFMA_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfma_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-vfpv4", + ], + aarch32_srcs = PROD_NEONFMA_MICROKERNEL_SRCS, + aarch64_srcs = PROD_NEONFMA_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfma_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv7-a", + "-mfpu=neon-vfpv4", + ], + aarch32_srcs = ALL_NEONFMA_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONFMA_MICROKERNEL_SRCS + ALL_NEONFMA_AARCH64_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonv8_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8-a", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ["src/amalgam/gen/neonv8.c"], + aarch64_srcs = ["src/amalgam/gen/neonv8.c"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonv8_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8-a", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ALL_NEONV8_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONV8_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonv8_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8-a", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = PROD_NEONV8_MICROKERNEL_SRCS, + aarch64_srcs = PROD_NEONV8_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonv8_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8-a", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ALL_NEONV8_MICROKERNEL_SRCS, + aarch64_srcs = ALL_NEONV8_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16arith_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ["src/amalgam/gen/neonfp16arith.c"], + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = [ + "src/amalgam/gen/neonfp16arith-aarch64.c", + "src/amalgam/gen/neonfp16arith.c", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16arith_bench_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ALL_NEONFP16ARITH_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = ALL_NEONFP16ARITH_MICROKERNEL_SRCS + ALL_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16arith_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = PROD_NEONFP16ARITH_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = PROD_NEONFP16ARITH_MICROKERNEL_SRCS + PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonfp16arith_test_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+fp16", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ALL_NEONFP16ARITH_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16"], + aarch64_srcs = ALL_NEONFP16ARITH_MICROKERNEL_SRCS + ALL_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonbf16_bench_microkernels", + aarch64_copts = ["-march=armv8.2-a+bf16"], + aarch64_srcs = ALL_NEONBF16_MICROKERNEL_SRCS + ALL_NEONBF16_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":params", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonbf16_prod_microkernels", + aarch64_copts = ["-march=armv8.2-a+bf16"], + aarch64_srcs = PROD_NEONBF16_MICROKERNEL_SRCS + PROD_NEONBF16_AARCH64_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":params", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neonbf16_test_microkernels", + aarch64_copts = ["-march=armv8.2-a+bf16"], + aarch64_srcs = ALL_NEONBF16_MICROKERNEL_SRCS + ALL_NEONBF16_AARCH64_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":params", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neondot_amalgam_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+dotprod", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = ["src/amalgam/gen/neondot.c"], + aarch64_copts = ["-march=armv8.2-a+dotprod"], + aarch64_srcs = ["src/amalgam/gen/neondot.c"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neondot_bench_microkernels", + 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, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neondot_prod_microkernels", + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+dotprod", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = PROD_NEONDOT_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+dotprod"], + aarch64_srcs = PROD_NEONDOT_MICROKERNEL_SRCS, + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "neondot_test_microkernels", + 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", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse2_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-msse2"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:SSE2"], + x86_srcs = [ + "src/amalgam/gen/sse.c", + "src/amalgam/gen/sse2.c", + ], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse2_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-msse2"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:SSE2"], + x86_srcs = ALL_SSE_MICROKERNEL_SRCS + ALL_SSE2_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse2_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse2_test_microkernels", + 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 = ALL_SSE_MICROKERNEL_SRCS + ALL_SSE2_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "ssse3_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mssse3"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:SSE2"], + x86_srcs = ["src/amalgam/gen/ssse3.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "ssse3_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mssse3"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:SSE2"], + x86_srcs = ALL_SSSE3_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "ssse3_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "ssse3_test_microkernels", + 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 = ALL_SSSE3_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse41_amalgam_microkernels", + 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 = ["src/amalgam/gen/sse41.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse41_bench_microkernels", + 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 = ALL_SSE41_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse41_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "sse41_test_microkernels", + 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 = ALL_SSE41_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx_amalgam_microkernels", + 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 = ["src/amalgam/gen/avx.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx_bench_microkernels", + 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 = ALL_AVX_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx_test_microkernels", + 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 = ALL_AVX_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "f16c_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mf16c"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ["src/amalgam/gen/f16c.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "f16c_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mf16c"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ALL_F16C_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "f16c_prod_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mf16c"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = PROD_F16C_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "f16c_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = ["-mf16c"], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ALL_F16C_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "xop_amalgam_microkernels", + 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 = ["src/amalgam/gen/xop.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "xop_bench_microkernels", + 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 = ALL_XOP_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "xop_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "xop_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + 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 = ALL_XOP_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fma3_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ["src/amalgam/gen/fma3.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fma3_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ALL_FMA3_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fma3_prod_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "fma3_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX"], + msvc_x86_64_copts = ["/arch:AVX"], + x86_srcs = ALL_FMA3_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx2_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + "-mavx2", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX2"], + msvc_x86_64_copts = ["/arch:AVX2"], + x86_srcs = ["src/amalgam/gen/avx2.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx2_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + "-mavx2", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX2"], + msvc_x86_64_copts = ["/arch:AVX2"], + x86_srcs = ALL_AVX2_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx2_prod_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx2_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mf16c", + "-mfma", + "-mavx2", + ], + msvc_copts = xnnpack_msvc_std_copts(), + msvc_x86_32_copts = ["/arch:AVX2"], + msvc_x86_64_copts = ["/arch:AVX2"], + x86_srcs = ALL_AVX2_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512f_amalgam_microkernels", + 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 = ["src/amalgam/gen/avx512f.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512f_bench_microkernels", + 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 = ALL_AVX512F_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512f_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512f_test_microkernels", + 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 = ALL_AVX512F_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512skx_amalgam_microkernels", + 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 = ["src/amalgam/gen/avx512skx.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512skx_bench_microkernels", + 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 = ALL_AVX512SKX_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512skx_prod_microkernels", + 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 = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512skx_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + 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 = ALL_AVX512SKX_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512vbmi_amalgam_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mavx512f", + "-mavx512cd", + "-mavx512bw", + "-mavx512dq", + "-mavx512vl", + "-mavx512vbmi", + ], + 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 = ["src/amalgam/gen/avx512vbmi.c"], + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512vbmi_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mavx512f", + "-mavx512cd", + "-mavx512bw", + "-mavx512dq", + "-mavx512vl", + "-mavx512vbmi", + ], + 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 = ALL_AVX512VBMI_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512vbmi_prod_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mavx512f", + "-mavx512cd", + "-mavx512bw", + "-mavx512dq", + "-mavx512vl", + "-mavx512vbmi", + ], + 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_AVX512VBMI_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "avx512vbmi_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + gcc_x86_copts = [ + "-mavx512f", + "-mavx512cd", + "-mavx512bw", + "-mavx512dq", + "-mavx512vl", + "-mavx512vbmi", + ], + 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 = ALL_AVX512VBMI_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "rvv_bench_microkernels", + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + riscv_copts = [ + "-march=rv64gcv", + ], + riscv_srcs = ALL_RVV_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "rvv_test_microkernels", + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + riscv_copts = [ + "-march=rv64gcv", + ], + riscv_srcs = ALL_RVV_MICROKERNEL_SRCS, + deps = [ + ":common", + ":math", + ":microkernels_h", + ":microparams", + ":prefetch", + ":tables", + ":unaligned", + ], +) + +xnnpack_cc_library( + name = "asm_microkernels", + hdrs = ["src/xnnpack/assembly.h"], + aarch32_copts = [ + "-marm", + "-march=armv8.2-a+dotprod", + "-mfpu=neon-fp-armv8", + ], + aarch32_srcs = AARCH32_ASM_MICROKERNEL_SRCS, + aarch64_copts = ["-march=armv8.2-a+fp16+dotprod"], + aarch64_srcs = AARCH64_ASM_MICROKERNEL_SRCS, + wasm_srcs = WASM32_ASM_MICROKERNEL_SRCS, + wasmrelaxedsimd_srcs = WASM32_ASM_MICROKERNEL_SRCS, + wasmsimd_srcs = WASM32_ASM_MICROKERNEL_SRCS, +) + +xnnpack_cc_library( + name = "log_level_default", + defines = select({ + # No logging in optimized mode + ":optimized_build": ["XNN_LOG_LEVEL=0"], + # Info logging in debug mode. Use `--define=xnn_log_level=debug` for full logging. + ":debug_build": ["XNN_LOG_LEVEL=4"], + # Error-only logging in default (fastbuild) mode + "//conditions:default": ["XNN_LOG_LEVEL=2"], + }), +) + +xnnpack_cc_library( + name = "logging", + srcs = [ + "src/enums/datatype-strings.c", + "src/enums/microkernel-type.c", + "src/enums/node-type.c", + "src/enums/operator-type.c", + "src/log.c", + ], + hdrs = ["src/xnnpack/log.h"], + copts = select({ + ":debug_build": [], + "//conditions:default": xnnpack_min_size_copts(), + }) + select({ + ":xnn_log_to_stdio_explicit_true": ["-DXNN_LOG_TO_STDIO=1"], + "//conditions:default": [], + }), + defines = select({ + ":xnn_log_level_explicit_none": ["XNN_LOG_LEVEL=0"], + ":xnn_log_level_explicit_fatal": ["XNN_LOG_LEVEL=1"], + ":xnn_log_level_explicit_error": ["XNN_LOG_LEVEL=2"], + ":xnn_log_level_explicit_warning": ["XNN_LOG_LEVEL=3"], + ":xnn_log_level_explicit_info": ["XNN_LOG_LEVEL=4"], + ":xnn_log_level_explicit_debug": ["XNN_LOG_LEVEL=5"], + "//conditions:default": [], + }), + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + visibility = xnnpack_visibility(), + deps = select({ + ":xnn_log_level_explicit_none": [], + ":xnn_log_level_explicit_fatal": [], + ":xnn_log_level_explicit_error": [], + ":xnn_log_level_explicit_warning": [], + ":xnn_log_level_explicit_info": [], + ":xnn_log_level_explicit_debug": [], + "//conditions:default": [":log_level_default"], + }) + [ + ":common", + ":microkernel_type", + ":node_type", + ":operator_type", + ":xnnpack_h", + ], +) + +xnnpack_aggregate_library( + name = "amalgam_microkernels", + aarch32_deps = [ + ":armsimd32_amalgam_microkernels", + ":neon_amalgam_microkernels", + ":neonfp16_amalgam_microkernels", + ":neonfma_amalgam_microkernels", + ":neonv8_amalgam_microkernels", + ":asm_microkernels", + ], + aarch64_deps = [ + ":neon_amalgam_microkernels", + ":neonfp16_amalgam_microkernels", + ":neonfma_amalgam_microkernels", + ":neonv8_amalgam_microkernels", + ":asm_microkernels", + ], + defines = select({ + ":arm_fp16_scalar_enabled": ["XNN_ENABLE_ARM_FP16_SCALAR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_SCALAR=0"], + }) + select({ + ":arm_fp16_vector_enabled": ["XNN_ENABLE_ARM_FP16_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_VECTOR=0"], + }) + select({ + ":arm_bf16_enabled": ["XNN_ENABLE_ARM_BF16=1"], + "//conditions:default": ["XNN_ENABLE_ARM_BF16=0"], + }) + select({ + ":arm_dotprod_enabled": ["XNN_ENABLE_ARM_DOTPROD=1"], + "//conditions:default": ["XNN_ENABLE_ARM_DOTPROD=0"], + }), + generic_deps = [ + ":scalar_amalgam_microkernels", + ] + select({ + ":arm_fp16_scalar_enabled": [":fp16arith_amalgam_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_fp16_vector_enabled": [":neonfp16arith_amalgam_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_bf16_enabled": [":neonbf16_prod_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_dotprod_enabled": [":neondot_amalgam_microkernels"], + "//conditions:default": [], + }), + wasm_deps = [ + ":wasm_amalgam_microkernels", + ":asm_microkernels", + ], + wasmrelaxedsimd_deps = [ + ":wasm_amalgam_microkernels", + ":asm_microkernels", + ], + wasmsimd_deps = [ + ":wasm_amalgam_microkernels", + ":asm_microkernels", + ], + x86_deps = [ + ":sse2_amalgam_microkernels", + ":ssse3_amalgam_microkernels", + ":sse41_amalgam_microkernels", + ":avx_amalgam_microkernels", + ":f16c_amalgam_microkernels", + ":xop_amalgam_microkernels", + ":fma3_amalgam_microkernels", + ":avx2_amalgam_microkernels", + ":avx512f_amalgam_microkernels", + ":avx512skx_amalgam_microkernels", + ":avx512vbmi_amalgam_microkernels", + ], +) + +xnnpack_aggregate_library( + name = "bench_microkernels", + aarch32_deps = [ + ":armsimd32_bench_microkernels", + ":neon_bench_microkernels", + ":neonfp16_bench_microkernels", + ":neonfma_bench_microkernels", + ":neonv8_bench_microkernels", + ":asm_microkernels", + ], + aarch64_deps = [ + ":neon_bench_microkernels", + ":neonfp16_bench_microkernels", + ":neonfma_bench_microkernels", + ":neonv8_bench_microkernels", + ":asm_microkernels", + ], + defines = select({ + ":arm_fp16_scalar_enabled": ["XNN_ENABLE_ARM_FP16_SCALAR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_SCALAR=0"], + }) + select({ + ":arm_fp16_vector_enabled": ["XNN_ENABLE_ARM_FP16_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_VECTOR=0"], + }) + select({ + ":arm_bf16_enabled": ["XNN_ENABLE_ARM_BF16=1"], + "//conditions:default": ["XNN_ENABLE_ARM_BF16=0"], + }) + select({ + ":arm_dotprod_enabled": ["XNN_ENABLE_ARM_DOTPROD=1"], + "//conditions:default": ["XNN_ENABLE_ARM_DOTPROD=0"], + }) + select({ + ":riscv_vector_enabled": ["XNN_ENABLE_RISCV_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_RISCV_VECTOR=0"], + }), + generic_deps = [ + ":scalar_bench_microkernels", + ] + select({ + ":arm_fp16_scalar_enabled": [":fp16arith_bench_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_fp16_vector_enabled": [":neonfp16arith_bench_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_bf16_enabled": [":neonbf16_bench_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_dotprod_enabled": [":neondot_bench_microkernels"], + "//conditions:default": [], + }) + select({ + ":riscv_vector_enabled": [":rvv_bench_microkernels"], + "//conditions:default": [], + }), + wasm_deps = [ + ":wasm_bench_microkernels", + ":asm_microkernels", + ], + wasmrelaxedsimd_deps = [ + ":wasm_bench_microkernels", + ":asm_microkernels", + ], + wasmsimd_deps = [ + ":wasm_bench_microkernels", + ":asm_microkernels", + ], + x86_deps = [ + ":sse2_bench_microkernels", + ":ssse3_bench_microkernels", + ":sse41_bench_microkernels", + ":avx_bench_microkernels", + ":f16c_bench_microkernels", + ":xop_bench_microkernels", + ":fma3_bench_microkernels", + ":avx2_bench_microkernels", + ":avx512f_bench_microkernels", + ":avx512skx_bench_microkernels", + ":avx512vbmi_bench_microkernels", + ], +) + +xnnpack_aggregate_library( + name = "prod_microkernels", + aarch32_deps = [ + ":armsimd32_prod_microkernels", + ":neon_prod_microkernels", + ":neonfp16_prod_microkernels", + ":neonfma_prod_microkernels", + ":neonv8_prod_microkernels", + ":asm_microkernels", + ], + aarch64_deps = [ + ":neon_prod_microkernels", + ":neonfp16_prod_microkernels", + ":neonfma_prod_microkernels", + ":neonv8_prod_microkernels", + ":asm_microkernels", + ], + defines = select({ + ":arm_fp16_scalar_enabled": ["XNN_ENABLE_ARM_FP16_SCALAR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_SCALAR=0"], + }) + select({ + ":arm_fp16_vector_enabled": ["XNN_ENABLE_ARM_FP16_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_VECTOR=0"], + }) + select({ + ":arm_bf16_enabled": ["XNN_ENABLE_ARM_BF16=1"], + "//conditions:default": ["XNN_ENABLE_ARM_BF16=0"], + }) + select({ + ":arm_dotprod_enabled": ["XNN_ENABLE_ARM_DOTPROD=1"], + "//conditions:default": ["XNN_ENABLE_ARM_DOTPROD=0"], + }), + generic_deps = [ + ":scalar_prod_microkernels", + ] + select({ + ":arm_fp16_scalar_enabled": [":fp16arith_prod_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_fp16_vector_enabled": [":neonfp16arith_prod_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_bf16_enabled": [":neonbf16_prod_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_dotprod_enabled": [":neondot_prod_microkernels"], + "//conditions:default": [], + }), + wasm_deps = [ + ":wasm_prod_microkernels", + ":asm_microkernels", + ], + wasmrelaxedsimd_deps = [ + ":wasm_prod_microkernels", + ":asm_microkernels", + ], + wasmsimd_deps = [ + ":wasm_prod_microkernels", + ":asm_microkernels", + ], + x86_deps = [ + ":sse2_prod_microkernels", + ":ssse3_prod_microkernels", + ":sse41_prod_microkernels", + ":avx_prod_microkernels", + ":f16c_prod_microkernels", + ":xop_prod_microkernels", + ":fma3_prod_microkernels", + ":avx2_prod_microkernels", + ":avx512f_prod_microkernels", + ":avx512skx_prod_microkernels", + ":avx512vbmi_prod_microkernels", + ], +) + +xnnpack_aggregate_library( + name = "test_microkernels", + aarch32_deps = [ + ":armsimd32_test_microkernels", + ":neon_test_microkernels", + ":neonfp16_test_microkernels", + ":neonfma_test_microkernels", + ":neonv8_test_microkernels", + ":asm_microkernels", + ], + aarch64_deps = [ + ":neon_test_microkernels", + ":neonfp16_test_microkernels", + ":neonfma_test_microkernels", + ":neonv8_test_microkernels", + ":asm_microkernels", + ], + defines = select({ + ":arm_fp16_scalar_enabled": ["XNN_ENABLE_ARM_FP16_SCALAR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_SCALAR=0"], + }) + select({ + ":arm_fp16_vector_enabled": ["XNN_ENABLE_ARM_FP16_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_ARM_FP16_VECTOR=0"], + }) + select({ + ":arm_bf16_enabled": ["XNN_ENABLE_ARM_BF16=1"], + "//conditions:default": ["XNN_ENABLE_ARM_BF16=0"], + }) + select({ + ":arm_dotprod_enabled": ["XNN_ENABLE_ARM_DOTPROD=1"], + "//conditions:default": ["XNN_ENABLE_ARM_DOTPROD=0"], + }) + select({ + ":riscv_vector_enabled": ["XNN_ENABLE_RISCV_VECTOR=1"], + "//conditions:default": ["XNN_ENABLE_RISCV_VECTOR=0"], + }), + generic_deps = [ + ":scalar_test_microkernels", + ] + select({ + ":arm_fp16_scalar_enabled": [":fp16arith_test_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_fp16_vector_enabled": [":neonfp16arith_test_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_bf16_enabled": [":neonbf16_test_microkernels"], + "//conditions:default": [], + }) + select({ + ":arm_dotprod_enabled": [":neondot_test_microkernels"], + "//conditions:default": [], + }) + select({ + ":riscv_vector_enabled": [":rvv_test_microkernels"], + "//conditions:default": [], + }), + wasm_deps = [ + ":wasm_test_microkernels", + ":asm_microkernels", + ], + wasmrelaxedsimd_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", + ":f16c_test_microkernels", + ":xop_test_microkernels", + ":fma3_test_microkernels", + ":avx2_test_microkernels", + ":avx512f_test_microkernels", + ":avx512skx_test_microkernels", + ":avx512vbmi_test_microkernels", + ], +) + +xnnpack_cc_library( + name = "im2col", + srcs = ["src/im2col.c"], + hdrs = [ + "src/xnnpack/im2col.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [":common"], +) + +xnnpack_cc_library( + name = "indirection", + srcs = ["src/indirection.c"], + hdrs = ["src/xnnpack/indirection.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":operator_h", + ":xnnpack_h", + "@FP16", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "indirection_test_mode", + srcs = ["src/indirection.c"], + hdrs = ["src/xnnpack/indirection.h"], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":operator_h", + "@FP16", + "@FXdiv", + ], +) + +xnnpack_cc_library( + name = "packing", + srcs = ["src/packing.c"], + hdrs = ["src/xnnpack/pack.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":operator_h", + ":unaligned", + "@FP16", + ], +) + +xnnpack_cc_library( + name = "packing_test_mode", + srcs = ["src/packing.c"], + hdrs = ["src/xnnpack/pack.h"], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":operator_h", + ":unaligned", + "@FP16", + ], +) + +cc_library( + name = "enable_assembly", + defines = select({ + ":xnn_enable_assembly_explicit_true": ["XNN_ENABLE_ASSEMBLY=1"], + ":xnn_enable_assembly_explicit_false": ["XNN_ENABLE_ASSEMBLY=0"], + "//conditions:default": ["XNN_ENABLE_ASSEMBLY=1"], + }), +) + +cc_library( + name = "enable_sparse", + defines = select({ + ":xnn_enable_sparse_explicit_true": ["XNN_ENABLE_SPARSE=1"], + ":xnn_enable_sparse_explicit_false": ["XNN_ENABLE_SPARSE=0"], + "//conditions:default": ["XNN_ENABLE_SPARSE=1"], + }), +) + +cc_library( + name = "enable_jit", + defines = select({ + ":xnn_enable_jit_explicit_true": ["XNN_ENABLE_JIT=1"], + ":xnn_enable_jit_explicit_false": ["XNN_ENABLE_JIT=0"], + "//conditions:default": ["XNN_ENABLE_JIT=0"], + }), +) + +cc_library( + name = "enable_gemm_m_specialization", + defines = select({ + ":xnn_enable_gemm_m_specialization_explicit_true": ["XNN_ENABLE_GEMM_M_SPECIALIZATION=1"], + ":xnn_enable_gemm_m_specialization_explicit_false": ["XNN_ENABLE_GEMM_M_SPECIALIZATION=0"], + "//conditions:default": ["XNN_ENABLE_GEMM_M_SPECIALIZATION=1"], + }), +) + +cc_library( + name = "enable_dwconv_multipass", + defines = select({ + ":xnn_enable_dwconv_multipass_explicit_true": ["XNN_ENABLE_DWCONV_MULTIPASS=1"], + ":xnn_enable_dwconv_multipass_explicit_false": ["XNN_ENABLE_DWCONV_MULTIPASS=0"], + "//conditions:default": ["XNN_ENABLE_DWCONV_MULTIPASS=0"], + }), +) + +cc_library( + name = "platform_jit", + defines = select({ + ":xnn_platform_jit_explicit_true": ["XNN_PLATFORM_JIT=1"], + ":xnn_platform_jit_explicit_false": ["XNN_PLATFORM_JIT=0"], + # A constant that is ignored and not used anywhere so that by default we set XNN_PLATFORM_JIT based on actual platform values. + "//conditions:default": ["XNN_IGNORED_PLATFORM_JIT=0"], + }), +) + +xnnpack_cc_library( + name = "cache", + srcs = ["src/cache.c"], + hdrs = ["src/xnnpack/cache.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":allocator", + ":common", + ":logging", + ":math", + ":memory", + ":mutex", + ":xnnpack_h", + ], +) + +# Define a library with just the header to remove circular dependencies: +# operator-run (compute) <-> operators. +xnnpack_cc_library( + name = "compute_h", + hdrs = [ + "src/xnnpack/compute.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":params", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "microkernel_utils", + srcs = ["src/microkernel-utils.c"], + hdrs = ["src/xnnpack/microkernel-utils.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ], +) + +xnnpack_cc_library( + name = "post_operation", + srcs = [ + "src/operators/post-operation.c", + ], + hdrs = [ + "src/xnnpack/post-operation.h", + ], + deps = [ + ":allocator", + ":microkernel_configs", + ":microparams", + ":params", + ], +) + +xnnpack_cc_library( + name = "post_operation_test_mode", + srcs = [ + "src/operators/post-operation.c", + ], + hdrs = [ + "src/xnnpack/post-operation.h", + ], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ] + select({ + ":debug_build": [], + "//conditions:default": xnnpack_min_size_copts(), + }), + deps = [ + ":allocator", + ":microkernel_configs_test_mode", + ":microparams", + ":params", + ], +) + +# Define a library with just the header to remove circular dependencies: +# indirection <-> operators. +xnnpack_cc_library( + name = "operator_h", + hdrs = [ + "src/xnnpack/operator.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":allocator", + ":cache", + ":compute_h", + ":microkernel_type", + ":operator_type", + ":params", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "operator_utils", + srcs = ["src/operator-utils.c"], + hdrs = ["src/xnnpack/operator-utils.h"], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":cache", + ":common", + ":math", + ":operator_h", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "operators", + srcs = OPERATOR_SRCS, + hdrs = [ + "src/xnnpack/compute.h", + "src/xnnpack/operator.h", + ], + copts = 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 = [ + ":allocator", + ":cache", + ":common", + ":enable_gemm_m_specialization", + ":enable_jit", + ":indirection", + ":jit", + ":logging", + ":math", + ":microkernel_configs", + ":microkernel_type", + ":microkernel_utils", + ":microparams_init", + ":normalization", + ":operator_type", + ":operator_utils", + ":packing", + ":params", + ":post_operation", + ":xnnpack_h", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "operators_test_mode", + srcs = OPERATOR_SRCS, + hdrs = [ + "src/xnnpack/compute.h", + "src/xnnpack/operator.h", + ], + copts = [ + "-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 = [ + ":allocator", + ":cache", + ":common", + ":enable_gemm_m_specialization", + ":enable_jit", + ":indirection_test_mode", + ":jit_test_mode", + ":logging", + ":math", + ":microkernel_configs_test_mode", + ":microkernel_type", + ":microkernel_utils", + ":microparams_init", + ":normalization_test_mode", + ":operator_utils", + ":packing_test_mode", + ":params", + ":post_operation_test_mode", + ":xnnpack_h", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "jit", + srcs = [ + "src/jit/aarch32-assembler.cc", + "src/jit/aarch64-assembler.cc", + "src/jit/assembler.cc", + "src/jit/wasm-assembler.cc", + ], + hdrs = [ + "src/xnnpack/aarch32-assembler.h", + "src/xnnpack/aarch64-assembler.h", + "src/xnnpack/array-helpers.h", + "src/xnnpack/assembler.h", + "src/xnnpack/leb128.h", + "src/xnnpack/wasm-assembler.h", + ], + aarch32_srcs = AARCH32_JIT_MICROKERNEL_SRCS, + aarch64_srcs = AARCH64_JIT_MICROKERNEL_SRCS, + linkopts = select({ + "xnn_enable_jit_explicit_true_on_emscripten": WASM_JIT_LINKOPTS, + "//conditions:default": [], + }), + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = JIT_WASM32_SRCS, + wasmrelaxedsimd_srcs = JIT_WASMRELAXEDSIMD32_SRCS, + wasmsimd_srcs = JIT_WASMSIMD32_SRCS, + deps = [ + ":common", + ":logging", + ":math", + ":memory", + ":microkernels_h", + ":microparams", + ":post_operation", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "jit_test_mode", + srcs = [ + "src/jit/aarch32-assembler.cc", + "src/jit/aarch64-assembler.cc", + "src/jit/assembler.cc", + "src/jit/wasm-assembler.cc", + ], + hdrs = [ + "src/xnnpack/aarch32-assembler.h", + "src/xnnpack/aarch64-assembler.h", + "src/xnnpack/array-helpers.h", + "src/xnnpack/assembler.h", + "src/xnnpack/leb128.h", + "src/xnnpack/wasm-assembler.h", + ], + aarch32_srcs = AARCH32_JIT_MICROKERNEL_SRCS, + aarch64_srcs = AARCH64_JIT_MICROKERNEL_SRCS, + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + linkopts = select({ + "emscripten": WASM_JIT_LINKOPTS, + "//conditions:default": [], + }), + msvc_copts = xnnpack_msvc_std_copts(), + wasm_srcs = JIT_WASM32_SRCS, + wasmrelaxedsimd_srcs = JIT_WASMRELAXEDSIMD32_SRCS, + wasmsimd_srcs = JIT_WASMSIMD32_SRCS, + deps = [ + ":common", + ":logging", + ":math", + ":memory", + ":microkernels_h", + ":microparams", + ":post_operation_test_mode", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "subgraph", + srcs = SUBGRAPH_SRCS, + hdrs = [ + "src/xnnpack/memory-planner.h", + "src/xnnpack/subgraph.h", + "src/xnnpack/subgraph-validation.h", + ], + 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 = [ + ":allocator", + ":cache", + ":common", + ":enable_jit", + ":enable_sparse", + ":logging", + ":math", + ":node_type", + ":operators", + ":params", + ":requantization", + ":xnnpack_h", + "@FP16", + ], +) + +xnnpack_cc_library( + name = "subgraph_test_mode", + srcs = SUBGRAPH_SRCS, + hdrs = [ + "src/xnnpack/memory-planner.h", + "src/xnnpack/subgraph.h", + "src/xnnpack/subgraph-validation.h", + ], + 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 = [ + ":allocator", + ":cache", + ":common", + ":enable_jit", + ":enable_sparse", + ":logging", + ":math", + ":node_type", + ":operators_test_mode", + ":params", + ":requantization", + ":xnnpack_h", + "@FP16", + ], +) + +xnnpack_cc_library( + name = "mutex", + srcs = [ + "src/mutex.c", + ], + hdrs = [ + "src/xnnpack/mutex.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "mutex_test_mode", + srcs = [ + "src/mutex.c", + ], + hdrs = [ + "src/xnnpack/mutex.h", + ], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":logging", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "normalization", + srcs = ["src/normalization.c"], + hdrs = [ + "src/xnnpack/normalization.h", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":common", + ":math", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "normalization_test_mode", + srcs = ["src/normalization.c"], + hdrs = ["src/xnnpack/normalization.h"], + copts = [ + "-UNDEBUG", + "-DXNN_TEST_MODE=1", + ], + gcc_copts = xnnpack_gcc_std_copts(), + msvc_copts = xnnpack_msvc_std_copts(), + deps = [ + ":math", + ":xnnpack_h", + ], +) + +xnnpack_cc_library( + name = "XNNPACK", + srcs = [ + "src/init.c", + ], + hdrs = ["include/xnnpack.h"], + copts = 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(), + visibility = xnnpack_visibility(), + deps = [ + ":allocator", + ":common", + ":hardware_config", + ":logging", + ":math", + ":microkernels_h", + ":microparams", + ":microparams_init", + ":normalization", + ":operators", + ":params", + ":prod_microkernels", + ":subgraph", + ] + select({ + ":emscripten": [], + "//conditions:default": ["@cpuinfo"], + }), +) + +xnnpack_cc_library( + name = "XNNPACK_test_mode", + srcs = [ + "src/init.c", + ], + hdrs = ["include/xnnpack.h"], + copts = [ + "-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(), + visibility = xnnpack_visibility(), + deps = [ + ":allocator", + ":common", + ":hardware_config_test_mode", + ":logging", + ":math", + ":microkernels_h", + ":microparams", + ":microparams_init", + ":operators_test_mode", + ":params", + ":subgraph_test_mode", + ":test_microkernels", + ] + select({ + ":emscripten": [], + "//conditions:default": ["@cpuinfo"], + }), +) + +# Specialized XNNPACK version for TensorFlow Lite. Excludes operators currently +# not used by the TensorFlow Lite XNNPACK delegate to minimize code size. +xnnpack_cc_library( + name = "xnnpack_for_tflite", + srcs = [ + "src/init.c", + ], + hdrs = ["include/xnnpack.h"], + copts = 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(), + visibility = xnnpack_visibility(), + deps = [ + ":allocator", + ":amalgam_microkernels", + ":common", + ":logging", + ":math", + ":microkernels_h", + ":microparams", + ":microparams_init", + ":operators", + ":params", + ":subgraph", + ] + select({ + ":emscripten": [], + "//conditions:default": [ + "@cpuinfo", + "@pthreadpool", + ], + }), +) + +# Specialized XNNPACK version for TensorFlow.js. Excludes operators currently +# not used by the TensorFlow.js WebAssembly backend to minimize code size. +xnnpack_cc_library( + name = "xnnpack_for_tfjs", + srcs = [ + "src/init.c", + ], + hdrs = ["include/xnnpack.h"], + copts = 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(), + visibility = xnnpack_visibility(), + deps = [ + ":allocator", + ":common", + ":logging", + ":math", + ":microkernels_h", + ":microparams", + ":microparams_init", + ":operators", + ":params", + ":prod_microkernels", + ] + select({ + ":emscripten": [], + "//conditions:default": ["@cpuinfo"], + }), +) + +xnnpack_cc_library( + name = "bench_utils", + srcs = ["bench/utils.cc"], + hdrs = ["bench/utils.h"], + deps = [ + ":XNNPACK", + ":allocator", + ":common", + ":params", + "@com_google_benchmark//:benchmark", + "@cpuinfo", + ], +) + +######################### Benchmarks for micro-kernels ######################### + +xnnpack_benchmark( + name = "f32_vcmul_bench", + srcs = [ + "bench/f32-vcmul.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_dwconv_bench", + srcs = [ + "bench/dwconv.h", + "bench/qs8-dwconv.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":microkernel_utils", + ":operators", + ], +) + +xnnpack_benchmark( + name = "qs8_f32_vcvt_bench", + srcs = [ + "bench/qs8-f32-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_gemm_bench", + srcs = [ + "bench/gemm.h", + "bench/qs8-gemm.cc", + ], + copts = xnnpack_optional_ruy_copts() + xnnpack_optional_gemmlowp_copts(), + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":enable_jit", + ":math", + ] + xnnpack_optional_ruy_deps() + xnnpack_optional_gemmlowp_deps(), +) + +xnnpack_benchmark( + name = "qs8_requantization_bench", + srcs = [ + "bench/qs8-requantization.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [":requantization_stubs"], +) + +xnnpack_benchmark( + name = "qs8_vadd_bench", + srcs = [ + "bench/qs8-vadd.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vaddc_bench", + srcs = [ + "bench/qs8-vaddc.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vcvt_bench", + srcs = [ + "bench/qs8-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs16_qs8_vcvt_bench", + srcs = [ + "bench/qs16-qs8-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vhswish_bench", + srcs = [ + "bench/qs8-vhswish.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vlrelu_bench", + srcs = [ + "bench/qs8-vlrelu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vmul_bench", + srcs = [ + "bench/qs8-vmul.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qs8_vmulc_bench", + srcs = [ + "bench/qs8-vmulc.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_f32_vcvt_bench", + srcs = [ + "bench/qu8-f32-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_gemm_bench", + srcs = [ + "bench/gemm.h", + "bench/qu8-gemm.cc", + ], + copts = xnnpack_optional_ruy_copts() + xnnpack_optional_gemmlowp_copts(), + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":math", + ] + xnnpack_optional_ruy_deps() + xnnpack_optional_gemmlowp_deps(), +) + +xnnpack_benchmark( + name = "qu8_requantization_bench", + srcs = [ + "bench/qu8-requantization.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [":requantization_stubs"], +) + +xnnpack_benchmark( + name = "qu8_vadd_bench", + srcs = [ + "bench/qu8-vadd.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vaddc_bench", + srcs = [ + "bench/qu8-vaddc.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vcvt_bench", + srcs = [ + "bench/qu8-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vhswish_bench", + srcs = [ + "bench/qu8-vhswish.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vlrelu_bench", + srcs = [ + "bench/qu8-vlrelu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vmul_bench", + srcs = [ + "bench/qu8-vmul.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "qu8_vmulc_bench", + srcs = [ + "bench/qu8-vmulc.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "bf16_gemm_bench", + srcs = [ + "bench/bf16-gemm.cc", + "bench/gemm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":math", + ], +) + +xnnpack_benchmark( + name = "f16_f32acc_igemm_bench", + srcs = [ + "bench/conv.h", + "bench/f16-f32acc-igemm.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f16_igemm_bench", + srcs = [ + "bench/conv.h", + "bench/f16-igemm.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f16_f32acc_gemm_bench", + srcs = [ + "bench/f16-f32acc-gemm.cc", + "bench/gemm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":math", + ], +) + +xnnpack_benchmark( + name = "f16_gemm_bench", + srcs = [ + "bench/f16-gemm.cc", + "bench/gemm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":math", + ], +) + +xnnpack_benchmark( + name = "f16_raddstoreexpminusmax_bench", + srcs = [ + "bench/f16-raddstoreexpminusmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_rsum_bench", + srcs = [ + "bench/f16-rsum.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_f32acc_rsum_bench", + srcs = [ + "bench/f16-f32acc-rsum.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_spmm_bench", + srcs = [ + "bench/f16-spmm.cc", + "bench/spmm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_vsigmoid_bench", + srcs = [ + "bench/f16-vsigmoid.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_vtanh_bench", + srcs = [ + "bench/f16-vtanh.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_f32_vcvt_bench", + srcs = [ + "bench/f16-f32-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_igemm_bench", + srcs = [ + "bench/conv.h", + "bench/f32-igemm.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f32_conv_hwc_bench", + srcs = [ + "bench/dconv.h", + "bench/f32-conv-hwc.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ], +) + +xnnpack_benchmark( + name = "f16_conv_hwc2chw_bench", + srcs = [ + "bench/dconv.h", + "bench/f16-conv-hwc2chw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ], +) + +xnnpack_benchmark( + name = "f16_gavgpool_cw_bench", + srcs = [ + "bench/f16-gavgpool-cw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_gavgpool_cw_bench", + srcs = [ + "bench/f32-gavgpool-cw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_conv_hwc2chw_bench", + srcs = [ + "bench/dconv.h", + "bench/f32-conv-hwc2chw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ], +) + +xnnpack_benchmark( + name = "f16_dwconv_bench", + srcs = [ + "bench/dwconv.h", + "bench/f16-dwconv.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":microkernel_utils", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f32_dwconv_bench", + srcs = [ + "bench/dwconv.h", + "bench/f32-dwconv.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":microkernel_utils", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f32_dwconv2d_chw_bench", + srcs = [ + "bench/dwconv.h", + "bench/f32-dwconv2d-chw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f16_dwconv2d_chw_bench", + srcs = [ + "bench/dwconv.h", + "bench/f16-dwconv2d-chw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":indirection", + ":operators", + ], +) + +xnnpack_benchmark( + name = "f32_f16_vcvt_bench", + srcs = [ + "bench/f32-f16-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "xx_transposev_bench", + srcs = [ + "bench/xx-transposev.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x8_transpose_bench", + srcs = [ + "bench/x8-transpose.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x16_transpose_bench", + srcs = [ + "bench/x16-transpose.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x24_transpose_bench", + srcs = [ + "bench/x24-transpose.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x32_transpose_bench", + srcs = [ + "bench/x32-transpose.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x64_transpose_bench", + srcs = [ + "bench/x64-transpose.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_bgemm_bench", + srcs = [ + "bench/bgemm.h", + "bench/f32-bgemm.cc", + ], + copts = xnnpack_optional_ruy_copts(), + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ] + xnnpack_optional_ruy_deps(), +) + +xnnpack_benchmark( + name = "f32_gemm_bench", + srcs = [ + "bench/f32-gemm.cc", + "bench/gemm.h", + ], + copts = xnnpack_optional_ruy_copts(), + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ] + xnnpack_optional_ruy_deps(), +) + +xnnpack_benchmark( + name = "f32_qc4w_gemm_bench", + srcs = [ + "bench/f32-qc4w-gemm.cc", + "bench/gemm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ], +) + +xnnpack_benchmark( + name = "f32_qc8w_gemm_bench", + srcs = [ + "bench/f32-qc8w-gemm.cc", + "bench/gemm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ], +) + +xnnpack_benchmark( + name = "f32_qs8_vcvt_bench", + srcs = [ + "bench/f32-qs8-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_qu8_vcvt_bench", + srcs = [ + "bench/f32-qu8-vcvt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_raddexpminusmax_bench", + srcs = [ + "bench/f32-raddexpminusmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_raddextexp_bench", + srcs = [ + "bench/f32-raddextexp.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_raddstoreexpminusmax_bench", + srcs = [ + "bench/f32-raddstoreexpminusmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_rmax_bench", + srcs = [ + "bench/f32-rmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_rminmax_bench", + srcs = [ + "bench/f32-rminmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_rmin_bench", + srcs = [ + "bench/f32-rmin.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_rsum_bench", + srcs = [ + "bench/f32-rsum.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_spmm_bench", + srcs = [ + "bench/f32-spmm.cc", + "bench/spmm.h", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_softmax_bench", + srcs = [ + "bench/f32-softmax.cc", + ], + copts = xnnpack_optional_dnnl_copts(), + deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_dnnl_deps(), +) + +xnnpack_benchmark( + name = "f16_velu_bench", + srcs = [ + "bench/f16-velu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_velu_bench", + srcs = [ + "bench/f32-velu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vhswish_bench", + srcs = [ + "bench/f32-vhswish.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vlrelu_bench", + srcs = [ + "bench/f32-vlrelu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vrelu_bench", + srcs = [ + "bench/f32-vrelu.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [":jit_test_mode"], +) + +xnnpack_benchmark( + name = "f32_vscaleexpminusmax_bench", + srcs = [ + "bench/f32-vscaleexpminusmax.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vscaleextexp_bench", + srcs = [ + "bench/f32-vscaleextexp.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vsigmoid_bench", + srcs = [ + "bench/f32-vsigmoid.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f16_vsqrt_bench", + srcs = [ + "bench/f16-vsqrt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vsqrt_bench", + srcs = [ + "bench/f32-vsqrt.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_vtanh_bench", + srcs = [ + "bench/f32-vtanh.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "f32_im2col_gemm_bench", + srcs = [ + "bench/conv.h", + "bench/f32-im2col-gemm.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":im2col", + ":math", + ], +) + +xnnpack_benchmark( + name = "rounding_bench", + srcs = [ + "bench/rounding.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "s16_rmaxabs_bench", + srcs = [ + "bench/s16-rmaxabs.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "s16_window_bench", + srcs = [ + "bench/s16-window.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "u32_filterbank_accumulate_bench", + srcs = [ + "bench/u32-filterbank-accumulate.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "u32_filterbank_subtract_bench", + srcs = [ + "bench/u32-filterbank-subtract.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "u32_vlog_bench", + srcs = [ + "bench/u32-vlog.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "u64_u32_vsqrtshift_bench", + srcs = [ + "bench/u64-u32-vsqrtshift.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "i16_vlshift_bench", + srcs = [ + "bench/i16-vlshift.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "cs16_vsquareabs_bench", + srcs = [ + "bench/cs16-vsquareabs.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "cs16_bfly4_bench", + srcs = [ + "bench/cs16-bfly4.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "cs16_fftr_bench", + srcs = [ + "bench/cs16-fftr.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x8_lut_bench", + srcs = [ + "bench/x8-lut.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "x8_packw_bench", + srcs = [ + "bench/bgemm.h", + "bench/x8-packw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ], +) + +xnnpack_benchmark( + name = "x16_packw_bench", + srcs = [ + "bench/bgemm.h", + "bench/x16-packw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ], +) + +xnnpack_benchmark( + name = "x32_packw_bench", + srcs = [ + "bench/bgemm.h", + "bench/x32-packw.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":allocator", + ":math", + ], +) + +########################### Benchmarks for operators ########################### + +xnnpack_benchmark( + name = "abs_bench", + srcs = ["bench/abs.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "average_pooling_bench", + srcs = ["bench/average-pooling.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "bankers_rounding_bench", + srcs = ["bench/bankers-rounding.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "batch_matrix_multiply_bench", + srcs = ["bench/batch-matrix-multiply.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "ceiling_bench", + srcs = ["bench/ceiling.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "channel_shuffle_bench", + srcs = ["bench/channel-shuffle.cc"], + deps = OPERATOR_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "convert_bench", + srcs = [ + "bench/convert.cc", + ], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "convolution_bench", + srcs = ["bench/convolution.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "deconvolution_bench", + srcs = ["bench/deconvolution.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "elu_bench", + srcs = ["bench/elu.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "floor_bench", + srcs = ["bench/floor.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "fully_connected_bench", + srcs = ["bench/fully-connected.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "global_average_pooling_bench", + srcs = ["bench/global-average-pooling.cc"], + deps = OPERATOR_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "hardswish_bench", + srcs = ["bench/hardswish.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "leaky_relu_bench", + srcs = ["bench/leaky-relu.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "max_pooling_bench", + srcs = ["bench/max-pooling.cc"], + deps = OPERATOR_BENCHMARK_DEPS, +) + +xnnpack_benchmark( + name = "negate_bench", + srcs = ["bench/negate.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "prelu_bench", + srcs = ["bench/prelu.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "sigmoid_bench", + srcs = ["bench/sigmoid.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "softmax_bench", + srcs = ["bench/softmax.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "square_bench", + srcs = ["bench/square.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "square_root_bench", + srcs = ["bench/square-root.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "tanh_bench", + srcs = ["bench/tanh.cc"], + copts = xnnpack_optional_tflite_copts(), + tags = ["nowin32"], + deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(), +) + +xnnpack_benchmark( + name = "truncation_bench", + srcs = ["bench/truncation.cc"], + deps = OPERATOR_BENCHMARK_DEPS, +) + +############################# End-to-end benchmarks ############################ + +xnnpack_cc_library( + name = "fp16_mobilenet_v1", + srcs = ["models/fp16-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_mobilenet_v1", + srcs = ["models/fp32-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_sparse_mobilenet_v1", + srcs = ["models/fp16-sparse-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_sparse_mobilenet_v1", + srcs = ["models/fp32-sparse-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qs8_qc8w_mobilenet_v1", + srcs = ["models/qs8-qc8w-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qs8_qc8w_mobilenet_v2", + srcs = ["models/qs8-qc8w-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qs8_mobilenet_v1", + srcs = ["models/qs8-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qs8_mobilenet_v2", + srcs = ["models/qs8-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qu8_mobilenet_v1", + srcs = ["models/qu8-mobilenet-v1.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "qu8_mobilenet_v2", + srcs = ["models/qu8-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_mobilenet_v2", + srcs = ["models/fp16-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_mobilenet_v2", + srcs = ["models/fp32-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_sparse_mobilenet_v2", + srcs = ["models/fp16-sparse-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_sparse_mobilenet_v2", + srcs = ["models/fp32-sparse-mobilenet-v2.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_mobilenet_v3_large", + srcs = ["models/fp16-mobilenet-v3-large.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_mobilenet_v3_large", + srcs = ["models/fp32-mobilenet-v3-large.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_sparse_mobilenet_v3_large", + srcs = ["models/fp16-sparse-mobilenet-v3-large.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_sparse_mobilenet_v3_large", + srcs = ["models/fp32-sparse-mobilenet-v3-large.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_mobilenet_v3_small", + srcs = ["models/fp16-mobilenet-v3-small.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@FP16", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_mobilenet_v3_small", + srcs = ["models/fp32-mobilenet-v3-small.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_mobilenet_v3_small_fused", + srcs = ["models/fp32-mobilenet-v3-small-fused.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + ":post_operation", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp16_sparse_mobilenet_v3_small", + srcs = ["models/fp16-sparse-mobilenet-v3-small.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_cc_library( + name = "fp32_sparse_mobilenet_v3_small", + srcs = ["models/fp32-sparse-mobilenet-v3-small.cc"], + hdrs = ["src/xnnpack/models.h"], + copts = xnnpack_std_cxxopts(), + deps = [ + ":XNNPACK", + ":cache", + "@pthreadpool", + ], +) + +xnnpack_benchmark( + name = "f16_dwconv_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/f16-dwconv-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":fp16_mobilenet_v1", + ":fp16_mobilenet_v2", + ":fp16_mobilenet_v3_large", + ":fp16_mobilenet_v3_small", + ], +) + +xnnpack_benchmark( + name = "f16_gemm_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/f16-gemm-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":fp16_mobilenet_v1", + ":fp16_mobilenet_v2", + ":fp16_mobilenet_v3_large", + ":fp16_mobilenet_v3_small", + ], +) + +xnnpack_benchmark( + name = "f32_dwconv_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/f32-dwconv-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":fp32_mobilenet_v1", + ":fp32_mobilenet_v2", + ":fp32_mobilenet_v3_large", + ":fp32_mobilenet_v3_small", + ], +) + +xnnpack_benchmark( + name = "f32_gemm_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/f32-gemm-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":fp32_mobilenet_v1", + ":fp32_mobilenet_v2", + ":fp32_mobilenet_v3_large", + ":fp32_mobilenet_v3_small", + ], +) + +xnnpack_benchmark( + name = "qs8_dwconv_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/qs8-dwconv-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":qs8_mobilenet_v1", + ":qs8_mobilenet_v2", + ], +) + +xnnpack_benchmark( + name = "qs8_gemm_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/qs8-gemm-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":qs8_mobilenet_v1", + ":qs8_mobilenet_v2", + ], +) + +xnnpack_benchmark( + name = "qu8_gemm_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/qu8-gemm-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":qu8_mobilenet_v1", + ":qu8_mobilenet_v2", + ], +) + +xnnpack_benchmark( + name = "qu8_dwconv_e2e_bench", + srcs = [ + "bench/end2end.h", + "bench/qu8-dwconv-e2e.cc", + ], + deps = MICROKERNEL_BENCHMARK_DEPS + [ + ":XNNPACK", + ":qu8_mobilenet_v1", + ":qu8_mobilenet_v2", + ], +) + +xnnpack_benchmark( + name = "end2end_bench", + srcs = ["bench/end2end.cc"], + deps = [ + ":XNNPACK", + ":bench_utils", + ":fp16_mobilenet_v1", + ":fp16_mobilenet_v2", + ":fp16_mobilenet_v3_large", + ":fp16_mobilenet_v3_small", + ":fp16_sparse_mobilenet_v1", + ":fp16_sparse_mobilenet_v2", + ":fp16_sparse_mobilenet_v3_large", + ":fp16_sparse_mobilenet_v3_small", + ":fp32_mobilenet_v1", + ":fp32_mobilenet_v2", + ":fp32_mobilenet_v3_large", + ":fp32_mobilenet_v3_small", + ":fp32_mobilenet_v3_small_fused", + ":fp32_sparse_mobilenet_v1", + ":fp32_sparse_mobilenet_v2", + ":fp32_sparse_mobilenet_v3_large", + ":fp32_sparse_mobilenet_v3_small", + ":qs8_mobilenet_v1", + ":qs8_mobilenet_v2", + ":qs8_qc8w_mobilenet_v1", + ":qs8_qc8w_mobilenet_v2", + ":qu8_mobilenet_v1", + ":qu8_mobilenet_v2", + "@pthreadpool", + ], +) + +#################### Accuracy evaluation for math functions #################### + +xnnpack_benchmark( + name = "f16_exp_ulp_eval", + srcs = [ + "eval/f16-exp-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f16_expminus_ulp_eval", + srcs = [ + "eval/f16-expminus-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f16_expm1minus_ulp_eval", + srcs = [ + "eval/f16-expm1minus-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f16_sigmoid_ulp_eval", + srcs = [ + "eval/f16-sigmoid-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f16_sqrt_ulp_eval", + srcs = [ + "eval/f16-sqrt-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f16_tanh_ulp_eval", + srcs = [ + "eval/f16-tanh-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_exp_ulp_eval", + srcs = [ + "eval/f32-exp-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_expminus_ulp_eval", + srcs = [ + "eval/f32-expminus-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_expm1minus_ulp_eval", + srcs = [ + "eval/f32-expm1minus-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_extexp_ulp_eval", + srcs = [ + "eval/f32-extexp-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_sigmoid_ulp_eval", + srcs = [ + "eval/f32-sigmoid-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_sqrt_ulp_eval", + srcs = [ + "eval/f32-sqrt-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_benchmark( + name = "f32_tanh_ulp_eval", + srcs = [ + "eval/f32-tanh-ulp.cc", + ], + deps = ACCURACY_EVAL_DEPS, +) + +############################### Other benchmarks ############################### + +xnnpack_benchmark( + name = "jit_bench", + srcs = ["bench/jit.cc"], + deps = OPERATOR_BENCHMARK_DEPS + [ + ":memory", + ":microkernels_h", + ":microparams", + ], +) + +################### Accuracy verification for math functions ################## + +xnnpack_cc_library( + name = "math_evaluation_tester", + testonly = True, + srcs = ["eval/math-evaluation-tester.cc"], + hdrs = ["eval/math-evaluation-tester.h"], + deps = [ + ":aligned_allocator", + ":common", + ":math", + ":math_stubs", + "@FP16", + "@pthreadpool", + "@com_google_googletest//:gtest_main", + ], +) + +xnnpack_unit_test( + name = "f16_sqrt_eval", + srcs = [ + "eval/f16-sqrt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f16_tanh_eval", + srcs = [ + "eval/f16-tanh.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS + [ + ":math_evaluation_tester", + ], +) + +xnnpack_unit_test( + name = "f16_f32_cvt_eval", + srcs = [ + "eval/f16-f32-cvt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_f16_cvt_eval", + srcs = [ + "eval/f32-f16-cvt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_qs8_cvt_eval", + srcs = [ + "eval/f32-qs8-cvt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_qu8_cvt_eval", + srcs = [ + "eval/f32-qu8-cvt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_exp_eval", + srcs = [ + "eval/f32-exp.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS + [ + ":math_evaluation_tester", + ], +) + +xnnpack_unit_test( + name = "f32_expm1minus_eval", + srcs = [ + "eval/f32-expm1minus.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS + [ + ":math_evaluation_tester", + ], +) + +xnnpack_unit_test( + name = "f32_expminus_eval", + srcs = [ + "eval/f32-expminus.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS + [ + ":math_evaluation_tester", + ], +) + +xnnpack_unit_test( + name = "f32_roundne_eval", + srcs = [ + "eval/f32-roundne.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_roundd_eval", + srcs = [ + "eval/f32-roundd.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_roundu_eval", + srcs = [ + "eval/f32-roundu.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_roundz_eval", + srcs = [ + "eval/f32-roundz.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "f32_tanh_eval", + srcs = [ + "eval/f32-tanh.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS + [ + ":math_evaluation_tester", + ], +) + +xnnpack_unit_test( + name = "u32_sqrt_eval", + srcs = [ + "eval/u32-sqrt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +xnnpack_unit_test( + name = "u64_sqrt_eval", + srcs = [ + "eval/u64-sqrt.cc", + ], + automatic = False, + deps = ACCURACY_EVAL_DEPS, +) + +######################### Unit tests for micro-kernels ######################### + +xnnpack_cc_library( + name = "gemm_microkernel_tester", + testonly = True, + srcs = ["test/gemm-microkernel-tester.cc"], + hdrs = ["test/gemm-microkernel-tester.h"], + deps = MICROKERNEL_TEST_DEPS + [ + ":XNNPACK_test_mode", + ":packing", + "@com_google_googletest//:gtest_main", + ], +) + +xnnpack_unit_test( + name = "bf16_gemm_minmax_test", + srcs = [ + "test/bf16-gemm-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_f32_vcvt_test", + srcs = [ + "test/f16-f32-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_avgpool_minmax_test", + srcs = [ + "test/avgpool-microkernel-tester.h", + "test/f16-avgpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_dwconv_minmax_multipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f16-dwconv-minmax-multipass.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f16_dwconv_minmax_unipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f16-dwconv-minmax-unipass.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f16_gavgpool_cw_test", + srcs = [ + "test/f16-gavgpool-cw.cc", + "test/gavgpool-cw-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_gavgpool_minmax_test", + srcs = [ + "test/f16-gavgpool-minmax.cc", + "test/gavgpool-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_f32acc_gemm_minmax_test", + srcs = [ + "test/f16-f32acc-gemm-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_gemm_jit_test", + srcs = [ + "test/f16-gemm-jit.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_gemm_minmax_test", + srcs = [ + "test/f16-gemm-minmax.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_ibilinear_test", + srcs = [ + "test/f16-ibilinear.cc", + "test/ibilinear-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_ibilinear_chw_test", + srcs = [ + "test/f16-ibilinear-chw.cc", + "test/ibilinear-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_igemm_jit_test", + srcs = [ + "test/f16-igemm-jit.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_f32acc_igemm_minmax_test", + srcs = [ + "test/f16-f32acc-igemm-minmax.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_igemm_minmax_test", + srcs = [ + "test/f16-igemm-minmax.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f16_maxpool_minmax_test", + srcs = [ + "test/f16-maxpool-minmax.cc", + "test/maxpool-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_pavgpool_minmax_test", + srcs = [ + "test/avgpool-microkernel-tester.h", + "test/f16-pavgpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_prelu_test", + srcs = [ + "test/f16-prelu.cc", + "test/prelu-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_spmm_minmax_test", + srcs = [ + "test/f16-spmm-minmax.cc", + "test/spmm-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vabs_test", + srcs = [ + "test/f16-vabs.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vadd_minmax_test", + srcs = [ + "test/f16-vadd-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vaddc_minmax_test", + srcs = [ + "test/f16-vaddc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vclamp_test", + srcs = [ + "test/f16-vclamp.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vdiv_minmax_test", + srcs = [ + "test/f16-vdiv-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vdivc_minmax_test", + srcs = [ + "test/f16-vdivc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrdivc_minmax_test", + srcs = [ + "test/f16-vrdivc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_velu_test", + srcs = [ + "test/f16-velu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vhswish_test", + srcs = [ + "test/f16-vhswish.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vlrelu_test", + srcs = [ + "test/f16-vlrelu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmax_test", + srcs = [ + "test/f16-vmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmaxc_test", + srcs = [ + "test/f16-vmaxc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmin_test", + srcs = [ + "test/f16-vmin.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vminc_test", + srcs = [ + "test/f16-vminc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmul_minmax_test", + srcs = [ + "test/f16-vmul-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmulc_minmax_test", + srcs = [ + "test/f16-vmulc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vmulcaddc_minmax_test", + srcs = [ + "test/f16-vmulcaddc-minmax.cc", + "test/vmulcaddc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f16_vneg_test", + srcs = [ + "test/f16-vneg.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrndne_test", + srcs = [ + "test/f16-vrndne.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrndz_test", + srcs = [ + "test/f16-vrndz.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrndu_test", + srcs = [ + "test/f16-vrndu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrndd_test", + srcs = [ + "test/f16-vrndd.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vsqrt_test", + srcs = [ + "test/f16-vsqrt.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_raddstoreexpminusmax_test", + srcs = [ + "test/f16-raddstoreexpminusmax.cc", + "test/raddstoreexpminusmax-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_rmax_test", + srcs = [ + "test/f16-rmax.cc", + "test/rmax-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_rsum_test", + srcs = [ + "test/f16-rsum.cc", + "test/rsum-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_f32acc_rsum_test", + srcs = [ + "test/f16-f32acc-rsum.cc", + "test/rsum-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vsigmoid_test", + srcs = [ + "test/f16-vsigmoid.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vsqr_test", + srcs = [ + "test/f16-vsqr.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vsub_minmax_test", + srcs = [ + "test/f16-vsub-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vsubc_minmax_test", + srcs = [ + "test/f16-vsubc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vrsubc_minmax_test", + srcs = [ + "test/f16-vrsubc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f16_vtanh_test", + srcs = [ + "test/f16-vtanh.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_argmaxpool_test", + srcs = [ + "test/argmaxpool-microkernel-tester.h", + "test/f32-argmaxpool.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_avgpool_minmax_test", + srcs = [ + "test/avgpool-microkernel-tester.h", + "test/f32-avgpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_ibilinear_test", + srcs = [ + "test/f32-ibilinear.cc", + "test/ibilinear-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_ibilinear_chw_test", + srcs = [ + "test/f32-ibilinear-chw.cc", + "test/ibilinear-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_igemm_test", + srcs = [ + "test/f32-igemm.cc", + "test/f32-igemm-2.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_igemm_relu_test", + srcs = [ + "test/f32-igemm-relu.cc", + "test/f32-igemm-relu-2.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_igemm_minmax_test", + srcs = [ + "test/f32-igemm-minmax.cc", + "test/f32-igemm-minmax-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_igemm_jit_test", + srcs = [ + "test/f32-igemm-jit.cc", + ], + shard_count = 10, + tags = ["not_run:arm"], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "f32_conv_hwc_test", + srcs = [ + "test/conv-hwc-microkernel-tester.h", + "test/f32-conv-hwc.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f16_conv_hwc2chw_test", + srcs = [ + "test/conv-hwc2chw-microkernel-tester.h", + "test/f16-conv-hwc2chw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f32_conv_hwc2chw_test", + srcs = [ + "test/conv-hwc2chw-microkernel-tester.h", + "test/f32-conv-hwc2chw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f32_dwconv_unipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f32-dwconv-unipass.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f32_dwconv_multipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f32-dwconv-multipass.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f32_dwconv_minmax_multipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f32-dwconv-minmax-multipass.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f32_dwconv_minmax_unipass_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/f32-dwconv-minmax-unipass.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "f16_dwconv2d_chw_test", + srcs = [ + "test/dwconv2d-microkernel-tester.h", + "test/f16-dwconv2d-chw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f32_dwconv2d_chw_test", + srcs = [ + "test/dwconv2d-microkernel-tester.h", + "test/f32-dwconv2d-chw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f32_f16_vcvt_test", + srcs = [ + "test/f32-f16-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_gavgpool_minmax_test", + srcs = [ + "test/f32-gavgpool-minmax.cc", + "test/gavgpool-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_gavgpool_cw_test", + srcs = [ + "test/f32-gavgpool-cw.cc", + "test/gavgpool-cw-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_gemm_test", + srcs = [ + "test/f32-gemm.cc", + "test/f32-gemm-2.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_gemm_relu_test", + srcs = [ + "test/f32-gemm-relu.cc", + "test/f32-gemm-relu-2.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_gemm_minmax_test", + srcs = [ + "test/f32-gemm-minmax.cc", + "test/f32-gemm-minmax-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "f32_gemm_goi_minmax_test", + srcs = [ + "test/f32-gemm-goi-minmax.cc", + "test/gemm-goi-microkernel-tester.h", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "f32_qc8w_gemm_test", + srcs = [ + "test/f32-qc8w-gemm.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_qc8w_gemm_relu_test", + srcs = [ + "test/f32-qc8w-gemm-relu.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_qc4w_gemm_minmax_test", + srcs = [ + "test/f32-qc4w-gemm-minmax.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_qc8w_gemm_minmax_test", + srcs = [ + "test/f32-qc8w-gemm-minmax.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_gemm_jit_test", + srcs = [ + "test/f32-gemm-jit.cc", + ], + shard_count = 10, + tags = ["not_run:arm"], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "f32_gemminc_minmax_test", + srcs = [ + "test/f32-gemminc-minmax.cc", + "test/f32-gemminc-minmax-2.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_vhswish_test", + srcs = [ + "test/f32-vhswish.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_maxpool_minmax_test", + srcs = [ + "test/f32-maxpool-minmax.cc", + "test/maxpool-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_pavgpool_minmax_test", + srcs = [ + "test/avgpool-microkernel-tester.h", + "test/f32-pavgpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_ppmm_minmax_test", + srcs = [ + "test/f32-ppmm-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "f32_prelu_test", + srcs = [ + "test/f32-prelu.cc", + "test/prelu-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_qs8_vcvt_test", + srcs = [ + "test/f32-qs8-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_qu8_vcvt_test", + srcs = [ + "test/f32-qu8-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_raddexpminusmax_test", + srcs = [ + "test/f32-raddexpminusmax.cc", + "test/raddexpminusmax-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_raddextexp_test", + srcs = [ + "test/f32-raddextexp.cc", + "test/raddextexp-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_raddstoreexpminusmax_test", + srcs = [ + "test/f32-raddstoreexpminusmax.cc", + "test/raddstoreexpminusmax-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_rmax_test", + srcs = [ + "test/f32-rmax.cc", + "test/reduce-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_rminmax_test", + srcs = [ + "test/f32-rminmax.cc", + "test/reduce-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_rmin_test", + srcs = [ + "test/f32-rmin.cc", + "test/reduce-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_rsum_test", + srcs = [ + "test/f32-rsum.cc", + "test/rsum-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_spmm_minmax_test", + srcs = [ + "test/f32-spmm-minmax.cc", + "test/spmm-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vabs_test", + srcs = [ + "test/f32-vabs.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vadd_test", + srcs = [ + "test/f32-vadd.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vadd_minmax_test", + srcs = [ + "test/f32-vadd-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vadd_relu_test", + srcs = [ + "test/f32-vadd-relu.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vaddc_test", + srcs = [ + "test/f32-vaddc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vaddc_minmax_test", + srcs = [ + "test/f32-vaddc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vaddc_relu_test", + srcs = [ + "test/f32-vaddc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vclamp_test", + srcs = [ + "test/f32-vclamp.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vcmul_test", + srcs = [ + "test/f32-vcmul.cc", + "test/vcmul-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdiv_test", + srcs = [ + "test/f32-vdiv.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdiv_minmax_test", + srcs = [ + "test/f32-vdiv-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdiv_relu_test", + srcs = [ + "test/f32-vdiv-relu.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdivc_test", + srcs = [ + "test/f32-vdivc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdivc_minmax_test", + srcs = [ + "test/f32-vdivc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vdivc_relu_test", + srcs = [ + "test/f32-vdivc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrdivc_test", + srcs = [ + "test/f32-vrdivc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrdivc_minmax_test", + srcs = [ + "test/f32-vrdivc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrdivc_relu_test", + srcs = [ + "test/f32-vrdivc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_velu_test", + srcs = [ + "test/f32-velu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmax_test", + srcs = [ + "test/f32-vmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmaxc_test", + srcs = [ + "test/f32-vmaxc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmin_test", + srcs = [ + "test/f32-vmin.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vminc_test", + srcs = [ + "test/f32-vminc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmul_test", + srcs = [ + "test/f32-vmul.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmul_minmax_test", + srcs = [ + "test/f32-vmul-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmul_relu_test", + srcs = [ + "test/f32-vmul-relu.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmulc_test", + srcs = [ + "test/f32-vmulc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmulc_minmax_test", + srcs = [ + "test/f32-vmulc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmulc_relu_test", + srcs = [ + "test/f32-vmulc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vmulcaddc_minmax_test", + srcs = [ + "test/f32-vmulcaddc-minmax.cc", + "test/vmulcaddc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS + [":packing"], +) + +xnnpack_unit_test( + name = "f32_vlrelu_test", + srcs = [ + "test/f32-vlrelu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vneg_test", + srcs = [ + "test/f32-vneg.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrelu_test", + srcs = [ + "test/f32-vrelu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS + [":jit_test_mode"], +) + +xnnpack_unit_test( + name = "f32_vrndne_test", + srcs = [ + "test/f32-vrndne.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrndz_test", + srcs = [ + "test/f32-vrndz.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrndu_test", + srcs = [ + "test/f32-vrndu.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrndd_test", + srcs = [ + "test/f32-vrndd.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vscaleexpminusmax_test", + srcs = [ + "test/f32-vscaleexpminusmax.cc", + "test/vscaleexpminusmax-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vscaleextexp_test", + srcs = [ + "test/f32-vscaleextexp.cc", + "test/vscaleextexp-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsigmoid_test", + srcs = [ + "test/f32-vsigmoid.cc", + "test/vunary-microkernel-tester.h", + ], + shard_count = 3, + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsqr_test", + srcs = [ + "test/f32-vsqr.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsqrdiff_test", + srcs = [ + "test/f32-vsqrdiff.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsqrdiffc_test", + srcs = [ + "test/f32-vsqrdiffc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsqrt_test", + srcs = [ + "test/f32-vsqrt.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsub_test", + srcs = [ + "test/f32-vsub.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsub_minmax_test", + srcs = [ + "test/f32-vsub-minmax.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsub_relu_test", + srcs = [ + "test/f32-vsub-relu.cc", + "test/vbinary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsubc_test", + srcs = [ + "test/f32-vsubc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsubc_minmax_test", + srcs = [ + "test/f32-vsubc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vsubc_relu_test", + srcs = [ + "test/f32-vsubc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrsubc_test", + srcs = [ + "test/f32-vrsubc.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrsubc_minmax_test", + srcs = [ + "test/f32-vrsubc-minmax.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vrsubc_relu_test", + srcs = [ + "test/f32-vrsubc-relu.cc", + "test/vbinaryc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "f32_vtanh_test", + srcs = [ + "test/f32-vtanh.cc", + "test/vunary-microkernel-tester.h", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qd8_f32_qc8w_gemm_minmax_test", + timeout = "moderate", + srcs = [ + "test/qd8-f32-qc8w-gemm-minmax.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_dwconv_minmax_multipass_fp32_test", + timeout = "moderate", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-qc8w-dwconv-minmax-multipass-fp32.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_dwconv_minmax_unipass_fp32_test", + timeout = "moderate", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-qc8w-dwconv-minmax-unipass-fp32.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_gemm_jit_fp32_test", + srcs = [ + "test/qs8-qc8w-gemm-jit-fp32.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_gemm_minmax_fp32_test", + timeout = "moderate", + srcs = [ + "test/qs8-qc8w-gemm-minmax-fp32.cc", + "test/qs8-qc8w-gemm-minmax-fp32-2.cc", + "test/qs8-qc8w-gemm-minmax-fp32-3.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_igemm_jit_fp32_test", + srcs = [ + "test/qs8-qc8w-igemm-jit-fp32.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "qs8_qc8w_igemm_minmax_fp32_test", + timeout = "moderate", + srcs = [ + "test/qs8-qc8w-igemm-minmax-fp32.cc", + "test/qs8-qc8w-igemm-minmax-fp32-2.cc", + "test/qs8-qc8w-igemm-minmax-fp32-3.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_dwconv_minmax_multipass_fp32_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-dwconv-minmax-multipass-fp32.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_dwconv_minmax_multipass_rndnu_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-dwconv-minmax-multipass-rndnu.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_dwconv_minmax_unipass_fp32_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-dwconv-minmax-unipass-fp32.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_dwconv_minmax_unipass_rndnu_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qs8-dwconv-minmax-unipass-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qs8_f32_vcvt_test", + srcs = [ + "test/qs8-f32-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_gavgpool_minmax_fp32_test", + srcs = [ + "test/gavgpool-microkernel-tester.h", + "test/qs8-gavgpool-minmax-fp32.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_gavgpool_minmax_rndnu_test", + srcs = [ + "test/gavgpool-microkernel-tester.h", + "test/qs8-gavgpool-minmax-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_gemm_minmax_fp32_test", + timeout = "moderate", + srcs = [ + "test/qs8-gemm-minmax-fp32.cc", + "test/qs8-gemm-minmax-fp32-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_gemm_jit_rndnu_test", + srcs = [ + "test/qs8-gemm-jit-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "qs8_gemm_minmax_rndnu_test", + timeout = "moderate", + srcs = [ + "test/qs8-gemm-minmax-rndnu.cc", + "test/qs8-gemm-minmax-rndnu-2.cc", + "test/qs8-gemm-minmax-rndnu-3.cc", + "test/qs8-gemm-minmax-rndnu-4.cc", + "test/qs8-gemm-minmax-rndnu-5.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_igemm_minmax_fp32_test", + timeout = "moderate", + srcs = [ + "test/qs8-igemm-minmax-fp32.cc", + "test/qs8-igemm-minmax-fp32-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_igemm_jit_rndnu_test", + srcs = [ + "test/qs8-igemm-jit-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ":jit_test_mode", + ], +) + +xnnpack_unit_test( + name = "qs8_igemm_minmax_rndnu_test", + timeout = "moderate", + srcs = [ + "test/qs8-igemm-minmax-rndnu.cc", + "test/qs8-igemm-minmax-rndnu-2.cc", + "test/qs8-igemm-minmax-rndnu-3.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qs8_requantization_test", + srcs = [ + "test/qs8-requantization.cc", + "test/requantization-tester.h", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [":requantization_stubs"], +) + +xnnpack_unit_test( + name = "qs8_vadd_minmax_test", + srcs = [ + "test/qs8-vadd-minmax.cc", + "test/vadd-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vaddc_minmax_test", + srcs = [ + "test/qs8-vaddc-minmax.cc", + "test/vaddc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vcvt_test", + srcs = [ + "test/qs8-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs16_qs8_vcvt_test", + srcs = [ + "test/qs16-qs8-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vhswish_test", + srcs = [ + "test/qs8-vhswish.cc", + "test/vhswish-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vlrelu_test", + srcs = [ + "test/qs8-vlrelu.cc", + "test/vlrelu-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vmul_minmax_fp32_test", + srcs = [ + "test/qs8-vmul-minmax-fp32.cc", + "test/vmul-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vmul_minmax_rndnu_test", + srcs = [ + "test/qs8-vmul-minmax-rndnu.cc", + "test/vmul-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vmulc_minmax_fp32_test", + srcs = [ + "test/qs8-vmulc-minmax-fp32.cc", + "test/vmulc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qs8_vmulc_minmax_rndnu_test", + srcs = [ + "test/qs8-vmulc-minmax-rndnu.cc", + "test/vmulc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_avgpool_minmax_fp32_test", + srcs = [ + "test/avgpool-microkernel-tester.h", + "test/qu8-avgpool-minmax-fp32.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_dwconv_minmax_multipass_fp32_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qu8-dwconv-minmax-multipass-fp32.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qu8_dwconv_minmax_multipass_rndnu_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qu8-dwconv-minmax-multipass-rndnu.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qu8_dwconv_minmax_unipass_fp32_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qu8-dwconv-minmax-unipass-fp32.cc", + ], + shard_count = 5, + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qu8_dwconv_minmax_unipass_rndnu_test", + srcs = [ + "test/dwconv-microkernel-tester.h", + "test/qu8-dwconv-minmax-unipass-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":packing", + ], +) + +xnnpack_unit_test( + name = "qu8_f32_vcvt_test", + srcs = [ + "test/qu8-f32-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_gavgpool_minmax_fp32_test", + srcs = [ + "test/gavgpool-microkernel-tester.h", + "test/qu8-gavgpool-minmax-fp32.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_gavgpool_minmax_rndnu_test", + srcs = [ + "test/gavgpool-microkernel-tester.h", + "test/qu8-gavgpool-minmax-rndnu.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_gemm_minmax_fp32_test", + srcs = [ + "test/qu8-gemm-minmax-fp32.cc", + "test/qu8-gemm-minmax-fp32-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qu8_gemm_minmax_rndnu_test", + srcs = [ + "test/qu8-gemm-minmax-rndnu.cc", + "test/qu8-gemm-minmax-rndnu-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qu8_igemm_minmax_fp32_test", + srcs = [ + "test/qu8-igemm-minmax-fp32.cc", + "test/qu8-igemm-minmax-fp32-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qu8_igemm_minmax_rndnu_test", + srcs = [ + "test/qu8-igemm-minmax-rndnu.cc", + "test/qu8-igemm-minmax-rndnu-2.cc", + ], + shard_count = 10, + deps = MICROKERNEL_TEST_DEPS + [ + ":gemm_microkernel_tester", + ], +) + +xnnpack_unit_test( + name = "qu8_requantization_test", + srcs = [ + "test/qu8-requantization.cc", + "test/requantization-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS + [":requantization_stubs"], +) + +xnnpack_unit_test( + name = "qu8_vadd_minmax_test", + srcs = [ + "test/qu8-vadd-minmax.cc", + "test/vadd-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vaddc_minmax_test", + srcs = [ + "test/qu8-vaddc-minmax.cc", + "test/vaddc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vcvt_test", + srcs = [ + "test/qu8-vcvt.cc", + "test/vcvt-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vhswish_test", + srcs = [ + "test/qu8-vhswish.cc", + "test/vhswish-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vlrelu_test", + srcs = [ + "test/qu8-vlrelu.cc", + "test/vlrelu-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vmul_minmax_fp32_test", + srcs = [ + "test/qu8-vmul-minmax-fp32.cc", + "test/vmul-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vmul_minmax_rndnu_test", + srcs = [ + "test/qu8-vmul-minmax-rndnu.cc", + "test/vmul-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vmulc_minmax_fp32_test", + srcs = [ + "test/qu8-vmulc-minmax-fp32.cc", + "test/vmulc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "qu8_vmulc_minmax_rndnu_test", + srcs = [ + "test/qu8-vmulc-minmax-rndnu.cc", + "test/vmulc-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "s16_rmaxabs_test", + srcs = [ + "test/rmaxabs-microkernel-tester.h", + "test/s16-rmaxabs.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "s16_window_test", + srcs = [ + "test/s16-window.cc", + "test/window-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u32_filterbank_accumulate_test", + srcs = [ + "test/filterbank-accumulate-microkernel-tester.h", + "test/u32-filterbank-accumulate.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u32_filterbank_subtract_test", + srcs = [ + "test/filterbank-subtract-microkernel-tester.h", + "test/u32-filterbank-subtract.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u32_vlog_test", + srcs = [ + "test/u32-vlog.cc", + "test/vlog-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "i16_vlshift_test", + srcs = [ + "test/i16-vlshift.cc", + "test/vlshift-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "cs16_vsquareabs_test", + srcs = [ + "test/cs16-vsquareabs.cc", + "test/vsquareabs-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "cs16_bfly4_test", + srcs = [ + "test/bfly4-microkernel-tester.h", + "test/cs16-bfly4.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "cs16_fftr_test", + srcs = [ + "test/cs16-fftr.cc", + "test/fftr-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "s8_ibilinear_test", + srcs = [ + "test/ibilinear-microkernel-tester.h", + "test/s8-ibilinear.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "s8_maxpool_minmax_test", + srcs = [ + "test/maxpool-microkernel-tester.h", + "test/s8-maxpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "s8_vclamp_test", + srcs = [ + "test/s8-vclamp.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u8_ibilinear_test", + srcs = [ + "test/ibilinear-microkernel-tester.h", + "test/u8-ibilinear.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u8_lut32norm_test", + srcs = [ + "test/lut-norm-microkernel-tester.h", + "test/u8-lut32norm.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u8_maxpool_minmax_test", + srcs = [ + "test/maxpool-microkernel-tester.h", + "test/u8-maxpool-minmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u8_rmax_test", + srcs = [ + "test/rmax-microkernel-tester.h", + "test/u8-rmax.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u8_vclamp_test", + srcs = [ + "test/u8-vclamp.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "u64_u32_vsqrtshift_test", + srcs = [ + "test/u64-u32-vsqrtshift.cc", + "test/vunary-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x8_lut_test", + srcs = [ + "test/lut-microkernel-tester.h", + "test/x8-lut.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x8_zip_test", + srcs = [ + "test/x8-zip.cc", + "test/zip-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x32_packb_test", + srcs = [ + "test/packb-microkernel-tester.h", + "test/x32-packb.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "x8_packw_test", + srcs = [ + "test/packw-microkernel-tester.h", + "test/x8-packw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "x16_packw_test", + srcs = [ + "test/packw-microkernel-tester.h", + "test/x16-packw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "x32_packw_test", + srcs = [ + "test/packw-microkernel-tester.h", + "test/x32-packw.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "x32_packx_test", + srcs = [ + "test/pack-microkernel-tester.h", + "test/x32-packx.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x8_transpose_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/x8-transpose.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x16_transpose_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/x16-transpose.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x24_transpose_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/x24-transpose.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x32_transpose_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/x32-transpose.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x64_transpose_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/x64-transpose.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "xx_transposev_test", + srcs = [ + "test/transpose-microkernel-tester.h", + "test/xx-transposev.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x32_unpool_test", + srcs = [ + "test/unpool-microkernel-tester.h", + "test/x32-unpool.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "x32_zerob_test", + srcs = [ + "test/packb-microkernel-tester.h", + "test/x32-zerob.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":packing", + ], +) + +xnnpack_unit_test( + name = "x32_zip_test", + srcs = [ + "test/x32-zip.cc", + "test/zip-microkernel-tester.h", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "xx_fill_test", + srcs = [ + "test/fill-microkernel-tester.h", + "test/xx-fill.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +xnnpack_unit_test( + name = "xx_pad_test", + srcs = [ + "test/pad-microkernel-tester.h", + "test/xx-pad.cc", + ], + deps = MICROKERNEL_TEST_DEPS, +) + +########################## Size tests for the library ######################### + +xnnpack_binary( + name = "operator_size_test", + srcs = ["test/operator-size.c"], + deps = [":xnnpack_for_tfjs"], +) + +xnnpack_binary( + name = "subgraph_size_test", + srcs = ["test/subgraph-size.c"], + deps = [ + ":XNNPACK", + ], +) + +########################### Unit tests for operators ########################## + +xnnpack_unit_test( + name = "abs_nc_test", + srcs = [ + "test/abs-nc.cc", + "test/abs-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "abs_nc_eager_test", + srcs = [ + "test/abs-nc-eager.cc", + "test/abs-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "add_nd_test", + timeout = "moderate", + srcs = [ + "test/add-nd.cc", + "test/binary-elementwise-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "add_nd_eager_test", + timeout = "moderate", + srcs = [ + "test/add-nd-eager.cc", + "test/binary-elementwise-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "argmax_pooling_nhwc_test", + srcs = [ + "test/argmax-pooling-nhwc.cc", + "test/argmax-pooling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "average_pooling_nhwc_test", + srcs = [ + "test/average-pooling-nhwc.cc", + "test/average-pooling-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "bankers_rounding_nc_test", + srcs = [ + "test/bankers-rounding-nc.cc", + "test/bankers-rounding-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "bankers_rounding_nc_eager_test", + srcs = [ + "test/bankers-rounding-nc-eager.cc", + "test/bankers-rounding-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "batch_matrix_multiply_nc_test", + srcs = [ + "test/batch-matrix-multiply-nc.cc", + "test/batch-matrix-multiply-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS + [":aligned_allocator"], +) + +xnnpack_unit_test( + name = "ceiling_nc_test", + srcs = [ + "test/ceiling-nc.cc", + "test/ceiling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "ceiling_nc_eager_test", + srcs = [ + "test/ceiling-nc-eager.cc", + "test/ceiling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "channel_shuffle_nc_test", + srcs = [ + "test/channel-shuffle-nc.cc", + "test/channel-shuffle-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "clamp_nc_test", + srcs = [ + "test/clamp-nc.cc", + "test/clamp-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "clamp_nc_eager_test", + srcs = [ + "test/clamp-nc-eager.cc", + "test/clamp-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "constant_pad_nd_test", + srcs = [ + "test/constant-pad-nd.cc", + "test/constant-pad-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "constant_pad_nd_eager_test", + srcs = [ + "test/constant-pad-nd-eager.cc", + "test/constant-pad-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "convert_nc_test", + srcs = [ + "test/convert-nc.cc", + "test/convert-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "convert_nc_eager_test", + srcs = [ + "test/convert-nc-eager.cc", + "test/convert-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS + [":math"], +) + +xnnpack_unit_test( + name = "convolution_nhwc_test", + timeout = "moderate", + srcs = [ + "test/convolution-nhwc.cc", + "test/convolution-operator-tester.h", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS + [ + ":convolution_test_helpers", + ], +) + +xnnpack_unit_test( + name = "convolution_nchw_test", + timeout = "moderate", + srcs = [ + "test/convolution-nchw.cc", + "test/convolution-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS + [ + ":convolution_test_helpers", + ], +) + +xnnpack_unit_test( + name = "copy_nc_test", + srcs = [ + "test/copy-nc.cc", + "test/copy-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "copy_nc_eager_test", + srcs = [ + "test/copy-nc-eager.cc", + "test/copy-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "deconvolution_nhwc_test", + timeout = "moderate", + srcs = [ + "test/deconvolution-nhwc.cc", + "test/deconvolution-operator-tester.h", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS + [ + ":convolution_test_helpers", + ], +) + +xnnpack_unit_test( + name = "depth_to_space_nchw2nhwc_test", + srcs = [ + "test/depth-to-space-nchw2nhwc.cc", + "test/depth-to-space-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "depth_to_space_nhwc_test", + srcs = [ + "test/depth-to-space-nhwc.cc", + "test/depth-to-space-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "divide_nd_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/divide-nd.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "divide_nd_eager_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/divide-nd-eager.cc", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "dynamic_fully_connected_nc_test", + srcs = [ + "test/dynamic-fully-connected-nc.cc", + "test/dynamic-fully-connected-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS + [":aligned_allocator"], +) + +xnnpack_unit_test( + name = "elu_nc_test", + srcs = [ + "test/elu-nc.cc", + "test/elu-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "elu_nc_eager_test", + srcs = [ + "test/elu-nc-eager.cc", + "test/elu-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "fully_connected_nc_test", + srcs = [ + "test/fully-connected-nc.cc", + "test/fully-connected-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "floor_nc_test", + srcs = [ + "test/floor-nc.cc", + "test/floor-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "floor_nc_eager_test", + srcs = [ + "test/floor-nc-eager.cc", + "test/floor-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "global_average_pooling_nwc_test", + srcs = [ + "test/global-average-pooling-nwc.cc", + "test/global-average-pooling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "global_average_pooling_ncw_test", + srcs = [ + "test/global-average-pooling-ncw.cc", + "test/global-average-pooling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "global_sum_pooling_nwc_test", + srcs = [ + "test/global-sum-pooling-nwc.cc", + "test/global-sum-pooling-operator-tester.h", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "hardswish_nc_test", + srcs = [ + "test/hardswish-nc.cc", + "test/hardswish-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "hardswish_nc_eager_test", + srcs = [ + "test/hardswish-nc-eager.cc", + "test/hardswish-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "leaky_relu_nc_test", + srcs = [ + "test/leaky-relu-nc.cc", + "test/leaky-relu-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "leaky_relu_nc_eager_test", + srcs = [ + "test/leaky-relu-nc-eager.cc", + "test/leaky-relu-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "max_pooling_nhwc_test", + timeout = "moderate", + srcs = [ + "test/max-pooling-nhwc.cc", + "test/max-pooling-operator-tester.h", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "maximum_nd_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/maximum-nd.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "maximum_nd_eager_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/maximum-nd-eager.cc", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "mean_nd_test", + timeout = "moderate", + srcs = [ + "test/mean-nd.cc", + "test/mean-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "minimum_nd_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/minimum-nd.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "minimum_nd_eager_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/minimum-nd-eager.cc", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "multiply_nd_test", + timeout = "moderate", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/multiply-nd.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "multiply_nd_eager_test", + timeout = "moderate", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/multiply-nd-eager.cc", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "negate_nc_test", + srcs = [ + "test/negate-nc.cc", + "test/negate-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "negate_nc_eager_test", + srcs = [ + "test/negate-nc-eager.cc", + "test/negate-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "slice_normalization_test", + srcs = [ + "test/slice-normalization.cc", + "test/slice-normalization-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "reduce_normalization_test", + srcs = [ + "test/reduce-normalization.cc", + "test/reduce-normalization-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "transpose_normalization_test", + srcs = [ + "test/transpose-normalization.cc", + "test/transpose-normalization-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "prelu_nc_test", + srcs = [ + "test/prelu-nc.cc", + "test/prelu-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "resize_bilinear_nhwc_test", + srcs = [ + "test/resize-bilinear-nhwc.cc", + "test/resize-bilinear-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "resize_bilinear_nchw_test", + srcs = [ + "test/resize-bilinear-nchw.cc", + "test/resize-bilinear-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "rope_nthc_test", + srcs = [ + "test/rope-nthc.cc", + "test/rope-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "sigmoid_nc_test", + srcs = [ + "test/sigmoid-nc.cc", + "test/sigmoid-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "sigmoid_nc_eager_test", + srcs = [ + "test/sigmoid-nc-eager.cc", + "test/sigmoid-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "slice_nd_test", + timeout = "moderate", + srcs = [ + "test/slice-nd.cc", + "test/slice-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "slice_nd_eager_test", + timeout = "moderate", + srcs = [ + "test/slice-nd-eager.cc", + "test/slice-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "softmax_nc_test", + srcs = [ + "test/softmax-nc.cc", + "test/softmax-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "space_to_depth_nhwc_test", + srcs = [ + "test/space-to-depth-nhwc.cc", + "test/space-to-depth-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "square_nc_test", + srcs = [ + "test/square-nc.cc", + "test/square-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "square_nc_eager_test", + srcs = [ + "test/square-nc-eager.cc", + "test/square-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "square_root_nc_test", + srcs = [ + "test/square-root-nc.cc", + "test/square-root-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "square_root_nc_eager_test", + srcs = [ + "test/square-root-nc-eager.cc", + "test/square-root-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "squared_difference_nd_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/squared-difference-nd.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "squared_difference_nd_eager_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/squared-difference-nd-eager.cc", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "subtract_nd_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/subtract-nd.cc", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "subtract_nd_eager_test", + srcs = [ + "test/binary-elementwise-operator-tester.h", + "test/subtract-nd-eager.cc", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "tanh_nc_test", + srcs = [ + "test/tanh-nc.cc", + "test/tanh-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "tanh_nc_eager_test", + srcs = [ + "test/tanh-nc-eager.cc", + "test/tanh-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "transpose_nd_test", + srcs = [ + "test/transpose-nd.cc", + "test/transpose-operator-tester.h", + ], + shard_count = 10, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "transpose_nd_eager_test", + srcs = [ + "test/transpose-nd-eager.cc", + "test/transpose-operator-tester.h", + ], + shard_count = 5, + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "truncation_nc_test", + srcs = [ + "test/truncation-nc.cc", + "test/truncation-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "truncation_nc_eager_test", + srcs = [ + "test/truncation-nc-eager.cc", + "test/truncation-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +xnnpack_unit_test( + name = "unpooling_nhwc_test", + srcs = [ + "test/unpooling-nhwc.cc", + "test/unpooling-operator-tester.h", + ], + deps = OPERATOR_TEST_DEPS, +) + +########################### Unit tests for subgraph ########################### + +xnnpack_cc_library( + name = "convolution_test_helpers", + testonly = True, + srcs = [ + "test/convolution-test-helpers.cc", + ], + hdrs = [ + "test/convolution-test-helpers.h", + ], +) + +xnnpack_cc_library( + name = "subgraph_unary_tester", + testonly = True, + hdrs = [ + "test/subgraph-unary-tester.h", + ], + deps = [ + ":node_type", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ":xnnpack_h", + "@com_google_googletest//:gtest_main", + ], +) + +xnnpack_cc_library( + name = "subgraph_binary_tester", + testonly = True, + hdrs = [ + "test/subgraph-binary-tester.h", + ], + deps = [ + ":node_type", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ":xnnpack_h", + "@com_google_googletest//:gtest_main", + ], +) + +xnnpack_unit_test( + name = "workspace_test", + srcs = [ + "test/workspace.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":math", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "abs_test", + srcs = [ + "test/abs.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "add2_test", + srcs = [ + "test/add2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "argmax_pooling_2d_test", + srcs = [ + "test/argmax-pooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "average_pooling_2d_test", + srcs = [ + "test/average-pooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operator_utils", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "bankers_rounding_test", + srcs = [ + "test/bankers-rounding.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "batch_matrix_multiply_test", + srcs = [ + "test/batch-matrix-multiply.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":aligned_allocator", + ":common", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "ceiling_test", + srcs = [ + "test/ceiling.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "clamp_test", + srcs = [ + "test/clamp.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "concatenate2_test", + srcs = [ + "test/concatenate2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "concatenate3_test", + srcs = [ + "test/concatenate3.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "concatenate4_test", + srcs = [ + "test/concatenate4.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "convert_test", + srcs = [ + "test/convert.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "convolution_2d_test", + srcs = [ + "test/convolution-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":convolution_test_helpers", + ":operator_utils", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "copy_test", + srcs = [ + "test/copy.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "deconvolution_2d_test", + timeout = "moderate", + srcs = [ + "test/deconvolution-2d.cc", + ], + shard_count = 5, + deps = [ + ":XNNPACK_test_mode", + ":operator_utils", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "depth_to_space_test", + srcs = [ + "test/depth-to-space.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "depthwise_convolution_2d_test", + srcs = [ + "test/depthwise-convolution-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":convolution_test_helpers", + ":operator_utils", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "divide2_test", + srcs = [ + "test/divide2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "elu_test", + srcs = [ + "test/elu.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "even_split2_test", + srcs = [ + "test/even-split2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "even_split3_test", + srcs = [ + "test/even-split3.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "even_split4_test", + srcs = [ + "test/even-split4.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "floor_test", + srcs = [ + "test/floor.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "fully_connected_test", + srcs = [ + "test/fully-connected.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":aligned_allocator", + ":common", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "global_average_pooling_1d_test", + srcs = [ + "test/global-average-pooling-1d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "global_average_pooling_2d_test", + srcs = [ + "test/global-average-pooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "global_sum_pooling_1d_test", + srcs = [ + "test/global-sum-pooling-1d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "global_sum_pooling_2d_test", + srcs = [ + "test/global-sum-pooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "hardswish_test", + srcs = [ + "test/hardswish.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "leaky_relu_test", + srcs = [ + "test/leaky-relu.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "max_pooling_2d_test", + srcs = [ + "test/max-pooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operator_utils", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "maximum2_test", + srcs = [ + "test/maximum2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "minimum2_test", + srcs = [ + "test/minimum2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "multiply2_test", + srcs = [ + "test/multiply2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "negate_test", + srcs = [ + "test/negate.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "prelu_test", + srcs = [ + "test/prelu.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "rope_test", + srcs = [ + "test/rope.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "sigmoid_test", + srcs = [ + "test/sigmoid.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "softmax_test", + srcs = [ + "test/softmax.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "space_to_depth_2d_test", + srcs = [ + "test/space-to-depth-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "square_test", + srcs = [ + "test/square.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "square_root_test", + srcs = [ + "test/square-root.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "squared_difference_test", + srcs = [ + "test/squared-difference.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "static_constant_pad_test", + srcs = [ + "test/static-constant-pad.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + "@FP16", + ], +) + +xnnpack_unit_test( + name = "static_mean_test", + srcs = [ + "test/static-mean.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "static_reshape_test", + srcs = [ + "test/static-reshape.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "static_resize_bilinear_2d_test", + srcs = [ + "test/static-resize-bilinear-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "static_slice_test", + srcs = [ + "test/static-slice.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "static_transpose_test", + srcs = [ + "test/static-transpose.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "subtract2_test", + srcs = [ + "test/subtract2.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_binary_tester", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "tanh_test", + srcs = [ + "test/tanh.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operators_test_mode", + ":subgraph_test_mode", + ":subgraph_unary_tester", + ], +) + +xnnpack_unit_test( + name = "unpooling_2d_test", + srcs = [ + "test/unpooling-2d.cc", + ], + deps = [ + ":XNNPACK_test_mode", + ":node_type", + ":operator_utils", + ":operators_test_mode", + ":requantization", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "fusion_test", + srcs = [ + "test/fusion.cc", + "test/runtime-tester.h", + "test/subgraph-tester.h", + ], + deps = [ + ":XNNPACK_test_mode", + ":subgraph_test_mode", + ], +) + +############################### Misc unit tests ############################### + +xnnpack_unit_test( + name = "subgraph_test", + srcs = [ + "test/runtime-tester.h", + "test/subgraph.cc", + "test/subgraph-tester.h", + ], + deps = [ + ":XNNPACK", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "memory_planner_test", + srcs = [ + "test/memory-planner-test.cc", + "test/runtime-tester.h", + "test/subgraph-tester.h", + ], + deps = [ + ":XNNPACK", + ":common", + ":math", + ":node_type", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "subgraph_nchw_test", + srcs = [ + "test/subgraph-nchw.cc", + "test/subgraph-tester.h", + ], + deps = [ + ":XNNPACK", + ":subgraph_test_mode", + ], +) + +xnnpack_unit_test( + name = "subgraph_fp16_test", + srcs = [ + "test/mock-allocator.h", + "test/runtime-tester.h", + "test/subgraph-fp16.cc", + "test/subgraph-tester.h", + ], + deps = [ + ":XNNPACK", + ":allocator", + ":node_type", + ":subgraph_test_mode", + "@FP16", + ], +) + +xnnpack_unit_test( + name = "jit_test", + srcs = [ + "test/jit.cc", + ], + deps = [ + ":common", + ":jit_test_mode", + ":memory", + ], +) + +xnnpack_unit_test( + name = "aarch32_assembler_test", + srcs = [ + "test/aarch32-assembler.cc", + "test/assembler-helpers.h", + ], + deps = [ + ":common", + ":jit_test_mode", + ":memory", + ":microparams", + ":microparams_init", + ], +) + +xnnpack_unit_test( + name = "aarch64_assembler_test", + srcs = [ + "test/aarch64-assembler.cc", + "test/assembler-helpers.h", + ], + deps = [ + ":common", + ":jit_test_mode", + ":memory", + ":microparams", + ":microparams_init", + ], +) + +xnnpack_unit_test( + name = "wasm_assembler_test", + srcs = [ + "test/wasm-assembler.cc", + ], + deps = [ + ":common", + ":jit_test_mode", + ":memory", + ], +) + +xnnpack_unit_test( + name = "code_cache_test", + srcs = ["test/code-cache.cc"], + deps = [ + ":XNNPACK", + ":cache", + ], +) + +xnnpack_unit_test( + name = "weights_cache_test", + srcs = ["test/weights-cache.cc"], + deps = [ + ":XNNPACK", + ":cache", + ":common", + ], +) + +xnnpack_unit_test( + name = "mutex_test", + srcs = ["test/mutex.cc"], + deps = [ + ":common", + ":mutex_test_mode", + ":xnnpack_h", + ], +) + +xnnpack_unit_test( + name = "microkernel_utils_test", + srcs = ["test/microkernel-utils.cc"], + deps = [ + ":common", + ":microkernel_utils", + ":params", + ], +) + +xnnpack_unit_test( + name = "operator_utils_test", + srcs = ["test/operator-utils.cc"], + deps = [ + ":common", + ":operator_utils", + ":operators_test_mode", + ":params", + ], +) + +xnnpack_unit_test( + name = "packing_test", + srcs = [ + "test/packing.cc", + ], + deps = MICROKERNEL_TEST_DEPS + [ + ":microkernel_utils", + ":operator_utils", + ":packing_test_mode", + ], +) + +xnnpack_unit_test( + name = "indirection_test", + srcs = [ + "test/indirection.cc", + ], + deps = [ + ":allocator", + ":indirection_test_mode", + ":operator_utils", + ":operators_test_mode", + ":xnnpack_h", + ], +) + +############################# Build configurations ############################# + +# Enables usage of ARM FP16 (FP16 arithmetics) scalar kernels. +config_setting( + name = "xnn_enable_arm_fp16_scalar_explicit_true", + define_values = {"xnn_enable_arm_fp16_scalar": "true"}, +) + +# Disables usage of ARM FP16 (FP16 arithmetics) scalar kernels. +config_setting( + name = "xnn_enable_arm_fp16_scalar_explicit_false", + define_values = {"xnn_enable_arm_fp16_scalar": "false"}, +) + +# Enables usage of ARM FP16 (FP16 arithmetics) vector kernels. +config_setting( + name = "xnn_enable_arm_fp16_vector_explicit_true", + define_values = {"xnn_enable_arm_fp16_vector": "true"}, +) + +# Disables usage of ARM FP16 (FP16 arithmetics) vector kernels. +config_setting( + name = "xnn_enable_arm_fp16_vector_explicit_false", + define_values = {"xnn_enable_arm_fp16_vector": "false"}, +) + +# Enables usage of ARM BF16 (BF16 arithmetics) kernels. +config_setting( + name = "xnn_enable_arm_bf16_explicit_true", + define_values = {"xnn_enable_arm_bf16": "true"}, +) + +# Disables usage of ARM BF16 (BF16 arithmetics) kernels. +config_setting( + name = "xnn_enable_arm_bf16_explicit_false", + define_values = {"xnn_enable_arm_bf16": "false"}, +) + +# Enables usage of ARM DotProd (integer dot product) kernels. +config_setting( + name = "xnn_enable_arm_dotprod_explicit_true", + define_values = {"xnn_enable_arm_dotprod": "true"}, +) + +# Disables usage of ARM DotProd (integer dot product) kernels. +config_setting( + name = "xnn_enable_arm_dotprod_explicit_false", + define_values = {"xnn_enable_arm_dotprod": "false"}, +) + +# Enables usage of RISC-V Vector kernels. +config_setting( + name = "xnn_enable_riscv_vector_explicit_true", + define_values = {"xnn_enable_riscv_vector": "true"}, +) + +# Disables usage of RISC-V Vector kernels. +config_setting( + name = "xnn_enable_riscv_vector_explicit_false", + define_values = {"xnn_enable_riscv_vector": "false"}, +) + +# Enables usage of assembly kernels. +config_setting( + name = "xnn_enable_assembly_explicit_true", + define_values = {"xnn_enable_assembly": "true"}, +) + +# Disables usage of assembly kernels. +config_setting( + name = "xnn_enable_assembly_explicit_false", + define_values = {"xnn_enable_assembly": "false"}, +) + +# Enables usage of sparse inference. +config_setting( + name = "xnn_enable_sparse_explicit_true", + define_values = {"xnn_enable_sparse": "true"}, +) + +# Disables usage of sparse inference. +config_setting( + name = "xnn_enable_sparse_explicit_false", + define_values = {"xnn_enable_sparse": "false"}, +) + +# Disables usage of HMP-aware optimizations. +config_setting( + name = "xnn_enable_hmp_explicit_false", + define_values = {"xnn_enable_hmp": "false"}, +) + +# Enable usage of optimized memory allocation +config_setting( + name = "xnn_enable_memopt_explicit_true", + define_values = {"xnn_enable_memopt": "true"}, +) + +# Disable usage of optimized memory allocation +config_setting( + name = "xnn_enable_memopt_explicit_false", + define_values = {"xnn_enable_memopt": "false"}, +) + +# Enable QS8 inference in TFLite-specific version +config_setting( + name = "xnn_enable_qs8_explicit_true", + define_values = {"xnn_enable_qs8": "true"}, +) + +# Disable QS8 inference in TFLite-specific version +config_setting( + name = "xnn_enable_qs8_explicit_false", + define_values = {"xnn_enable_qs8": "false"}, +) + +# Enable QU8 inference in TFLite-specific version +config_setting( + name = "xnn_enable_qu8_explicit_true", + define_values = {"xnn_enable_qu8": "true"}, +) + +# Disable QU8 inference in TFLite-specific version +config_setting( + name = "xnn_enable_qu8_explicit_false", + define_values = {"xnn_enable_qu8": "false"}, +) + +# Enables usage of JIT kernels. +config_setting( + name = "xnn_enable_jit_explicit_true", + define_values = {"xnn_enable_jit": "true"}, +) + +selects.config_setting_group( + name = "xnn_enable_jit_explicit_true_on_emscripten", + match_all = [ + ":xnn_enable_jit_explicit_true", + ":emscripten", + ], +) + +# Disables usage of JIT kernels. +config_setting( + name = "xnn_enable_jit_explicit_false", + define_values = {"xnn_enable_jit": "false"}, +) + +# Enables usage of mr heuristic to select microkernels. +config_setting( + name = "xnn_enable_gemm_m_specialization_explicit_true", + define_values = {"xnn_enable_gemm_m_specialization": "true"}, +) + +# Disables usage of mr heuristic to select microkernels. +config_setting( + name = "xnn_enable_gemm_m_specialization_explicit_false", + define_values = {"xnn_enable_gemm_m_specialization": "false"}, +) + +# Enables usage of DWCONV multipass kernels. +config_setting( + name = "xnn_enable_dwconv_multipass_explicit_true", + define_values = {"xnn_enable_dwconv_multipass": "true"}, +) + +# Disables usage of DWCONV multipass kernels. +config_setting( + name = "xnn_enable_dwconv_multipass_explicit_false", + define_values = {"xnn_enable_dwconv_multipass": "false"}, +) + +# Force logging to stderr/stdout +config_setting( + name = "xnn_log_to_stdio_explicit_true", + define_values = {"xnn_log_to_stdio": "true"}, +) + +# Fully disable logging +config_setting( + name = "xnn_log_level_explicit_none", + define_values = {"xnn_log_level": "none"}, +) + +# Log fatal errors only +config_setting( + name = "xnn_log_level_explicit_fatal", + define_values = {"xnn_log_level": "fatal"}, +) + +# Log fatal and non-fatal errors +config_setting( + name = "xnn_log_level_explicit_error", + define_values = {"xnn_log_level": "error"}, +) + +# Log warnings and errors +config_setting( + name = "xnn_log_level_explicit_warning", + define_values = {"xnn_log_level": "warning"}, +) + +# Log information messages, warnings and errors +config_setting( + name = "xnn_log_level_explicit_info", + define_values = {"xnn_log_level": "info"}, +) + +# Log all messages, including debug messages +config_setting( + name = "xnn_log_level_explicit_debug", + define_values = {"xnn_log_level": "debug"}, +) + +config_setting( + name = "xnn_platform_jit_explicit_true", + define_values = {"xnn_platform_jit": "true"}, +) + +config_setting( + name = "xnn_platform_jit_explicit_false", + define_values = {"xnn_platform_jit": "false"}, +) + +# Builds with -c dbg +config_setting( + name = "debug_build", + values = { + "compilation_mode": "dbg", + }, +) + +# Builds with -c opt +config_setting( + name = "optimized_build", + values = { + "compilation_mode": "opt", + }, +) + +config_setting( + name = "linux_arm64", + values = {"cpu": "aarch64"}, +) + +config_setting( + name = "linux_k8", + values = {"cpu": "k8"}, +) + +config_setting( + name = "linux_arm", + values = {"cpu": "arm"}, +) + +config_setting( + name = "linux_armeabi", + values = {"cpu": "armeabi"}, +) + +config_setting( + name = "linux_armhf", + values = {"cpu": "armhf"}, +) + +config_setting( + name = "linux_armv7a", + values = {"cpu": "armv7a"}, +) + +config_setting( + name = "linux_riscv64", + values = {"cpu": "riscv64"}, +) + +config_setting( + name = "android", + values = {"crosstool_top": "//external:android/crosstool"}, +) + +config_setting( + name = "android_armv7", + values = { + "crosstool_top": "//external:android/crosstool", + "cpu": "armeabi-v7a", + }, +) + +config_setting( + name = "android_arm64", + values = { + "crosstool_top": "//external:android/crosstool", + "cpu": "arm64-v8a", + }, +) + +config_setting( + name = "android_x86", + values = { + "crosstool_top": "//external:android/crosstool", + "cpu": "x86", + }, +) + +config_setting( + name = "android_x86_64", + values = { + "crosstool_top": "//external:android/crosstool", + "cpu": "x86_64", + }, +) + +config_setting( + name = "windows_x86_64", + values = {"cpu": "x64_windows"}, +) + +config_setting( + name = "windows_x86_64_clang", + values = { + "compiler": "clang-cl", + "cpu": "x64_windows", + }, +) + +config_setting( + name = "windows_x86_64_mingw", + values = { + "compiler": "mingw-gcc", + "cpu": "x64_windows", + }, +) + +config_setting( + name = "windows_x86_64_msys", + values = { + "compiler": "msys-gcc", + "cpu": "x64_windows", + }, +) + +config_setting( + name = "macos_x86_64", + values = { + "apple_platform_type": "macos", + "cpu": "darwin", + }, +) + +config_setting( + name = "macos_arm64", + values = { + "apple_platform_type": "macos", + "cpu": "darwin_arm64", + }, +) + +config_setting( + name = "emscripten", + values = {"crosstool_top": "@emsdk//emscripten_toolchain:everything"}, +) + +config_setting( + name = "emscripten_wasm", + values = { + "crosstool_top": "@emsdk//emscripten_toolchain:everything", + "cpu": "wasm", + }, +) + +config_setting( + name = "emscripten_wasmsimd", + values = { + "crosstool_top": "@emsdk//emscripten_toolchain:everything", + "cpu": "wasm", + "features": "wasm_simd", + }, +) + +config_setting( + name = "emscripten_wasmrelaxedsimd", + values = { + "crosstool_top": "@emsdk//emscripten_toolchain:everything", + "cpu": "wasm", + "features": "wasm_relaxed_simd", + }, +) + +config_setting( + name = "ios_arm64", + values = { + "apple_platform_type": "ios", + "cpu": "ios_arm64", + }, +) + +config_setting( + name = "ios_arm64e", + values = { + "apple_platform_type": "ios", + "cpu": "ios_arm64e", + }, +) + +config_setting( + name = "ios_sim_arm64", + values = { + "apple_platform_type": "ios", + "cpu": "ios_sim_arm64", + }, +) + +config_setting( + name = "ios_x86_64", + values = { + "apple_platform_type": "ios", + "cpu": "ios_x86_64", + }, +) + +config_setting( + name = "watchos_arm64_32", + values = { + "apple_platform_type": "watchos", + "cpu": "watchos_arm64_32", + }, +) + +config_setting( + name = "watchos_x86_64", + values = { + "apple_platform_type": "watchos", + "cpu": "watchos_x86_64", + }, +) + +config_setting( + name = "tvos_arm64", + values = { + "apple_platform_type": "tvos", + "cpu": "tvos_arm64", + }, +) + +config_setting( + name = "tvos_x86_64", + values = { + "apple_platform_type": "tvos", + "cpu": "tvos_x86_64", + }, +) + +######################## Composite build configurations ####################### + +selects.config_setting_group( + name = "aarch32", + match_any = [ + ":android_armv7", + ":linux_arm", + ":linux_armeabi", + ":linux_armhf", + ":linux_armv7a", + ], +) + +selects.config_setting_group( + name = "aarch64", + match_any = [ + ":android_arm64", + ":ios_arm64", + ":ios_arm64e", + ":ios_sim_arm64", + ":linux_arm64", + ":macos_arm64", + ":tvos_arm64", + ":watchos_arm64_32", + ], +) + +selects.config_setting_group( + name = "x86", + match_any = [ + ":android_x86", + ":android_x86_64", + ":ios_x86_64", + ":linux_k8", + ":macos_x86_64", + ":tvos_x86_64", + ":watchos_x86_64", + ":windows_x86_64", + ":windows_x86_64_clang", + ":windows_x86_64_mingw", + ":windows_x86_64_msys", + ], +) + +selects.config_setting_group( + name = "riscv", + match_any = [":linux_riscv64"], +) + +selects.config_setting_group( + name = "arm_fp16_scalar_enabled_by_default", + match_any = [ + ":aarch32", + ":aarch64", + ], +) + +selects.config_setting_group( + name = "arm_fp16_vector_enabled_by_default", + match_any = [ + ":aarch32", + ":aarch64", + ], +) + +alias( + name = "arm_fp16_scalar_enabled", + actual = select({ + ":xnn_enable_arm_fp16_scalar_explicit_true": ":xnn_enable_arm_fp16_scalar_explicit_true", + ":xnn_enable_arm_fp16_scalar_explicit_false": ":xnn_enable_arm_fp16_scalar_explicit_true", + "//conditions:default": ":arm_fp16_scalar_enabled_by_default", + }), +) + +alias( + name = "arm_fp16_vector_enabled", + actual = select({ + ":xnn_enable_arm_fp16_vector_explicit_true": ":xnn_enable_arm_fp16_vector_explicit_true", + ":xnn_enable_arm_fp16_vector_explicit_false": ":xnn_enable_arm_fp16_vector_explicit_true", + "//conditions:default": ":arm_fp16_vector_enabled_by_default", + }), +) + +selects.config_setting_group( + name = "arm_bf16_enabled_by_default", + match_any = [ + ":aarch64", + ], +) + +alias( + name = "arm_bf16_enabled", + actual = select({ + ":xnn_enable_arm_bf16_explicit_true": ":xnn_enable_arm_bf16_explicit_true", + ":xnn_enable_arm_bf16_explicit_false": ":xnn_enable_arm_bf16_explicit_true", + "//conditions:default": ":arm_bf16_enabled_by_default", + }), +) + +selects.config_setting_group( + name = "arm_dotprod_enabled_by_default", + match_any = [ + ":aarch32", + ":aarch64", + ], +) + +alias( + name = "arm_dotprod_enabled", + actual = select({ + ":xnn_enable_arm_dotprod_explicit_true": ":xnn_enable_arm_dotprod_explicit_true", + ":xnn_enable_arm_dotprod_explicit_false": ":xnn_enable_arm_dotprod_explicit_true", + "//conditions:default": ":arm_dotprod_enabled_by_default", + }), +) + +selects.config_setting_group( + name = "riscv_vector_enabled_by_default", + match_any = [ + ":riscv", + ], +) + +alias( + name = "riscv_vector_enabled", + actual = select({ + ":xnn_enable_riscv_vector_explicit_true": ":xnn_enable_riscv_vector_explicit_true", + ":xnn_enable_riscv_vector_explicit_false": ":xnn_enable_riscv_vector_explicit_true", + "//conditions:default": ":riscv_vector_enabled_by_default", + }), +) + +bzl_library( + name = "build_defs_bzl", + srcs = ["build_defs.bzl"], + visibility = ["//visibility:private"], +)