# 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"], )