1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 2*4bdc9457SAndroid Build Coastguard Worker // 3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 5*4bdc9457SAndroid Build Coastguard Worker 6*4bdc9457SAndroid Build Coastguard Worker #pragma once 7*4bdc9457SAndroid Build Coastguard Worker 8*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 9*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams.h> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 15*4bdc9457SAndroid Build Coastguard Worker extern "C" { 16*4bdc9457SAndroid Build Coastguard Worker #endif 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker 19*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(fn_name) \ 20*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 21*4bdc9457SAndroid Build Coastguard Worker size_t mc, \ 22*4bdc9457SAndroid Build Coastguard Worker size_t nc, \ 23*4bdc9457SAndroid Build Coastguard Worker const float* input, \ 24*4bdc9457SAndroid Build Coastguard Worker const float* weights, \ 25*4bdc9457SAndroid Build Coastguard Worker const int32_t* widx_dmap, \ 26*4bdc9457SAndroid Build Coastguard Worker const uint32_t* nidx_nnzmap, \ 27*4bdc9457SAndroid Build Coastguard Worker float* output, \ 28*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, \ 29*4bdc9457SAndroid Build Coastguard Worker const union xnn_f32_minmax_params* params); 30*4bdc9457SAndroid Build Coastguard Worker 31*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_1x1__scalar) 32*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_1x1__scalar_pipelined) 33*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_2x1__scalar) 34*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_2x1__scalar_pipelined) 35*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neon) 36*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neon_pipelined) 37*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neon_x2) 38*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neonfma) 39*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neonfma_pipelined) 40*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__neonfma_x2) 41*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__scalar) 42*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__scalar_pipelined) 43*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__sse) 44*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm) 45*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_pipelined) 46*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_pipelined_x2) 47*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_x2) 48*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_x4) 49*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86) 50*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_pipelined) 51*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_pipelined_x2) 52*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_x2) 53*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_x4) 54*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x2__neonfma) 55*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_4x4__neonfma) 56*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neon) 57*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neon_pipelined) 58*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neon_x2) 59*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neonfma) 60*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neonfma_pipelined) 61*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__neonfma_x2) 62*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__scalar) 63*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__scalar_pipelined) 64*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__sse) 65*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm) 66*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_pipelined) 67*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_pipelined_x2) 68*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_x2) 69*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_x4) 70*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86) 71*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_pipelined) 72*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_pipelined_x2) 73*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_x2) 74*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_x4) 75*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x2__neonfma) 76*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x2__scalar) 77*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x4__neonfma) 78*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_8x4__scalar) 79*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_12x1__neon) 80*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_12x1__neonfma) 81*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_12x2__neonfma) 82*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_12x4__neonfma) 83*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neon) 84*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neon_pipelined) 85*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neon_x2) 86*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neonfma) 87*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neonfma_pipelined) 88*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__neonfma_x2) 89*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__sse) 90*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm) 91*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_pipelined) 92*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_pipelined_x2) 93*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_x2) 94*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_x4) 95*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86) 96*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_pipelined) 97*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_pipelined_x2) 98*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_x2) 99*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_x4) 100*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x2__neonfma) 101*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_16x4__neonfma) 102*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neon) 103*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neon_pipelined) 104*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neon_x2) 105*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neonfma) 106*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neonfma_pipelined) 107*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__neonfma_x2) 108*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__sse) 109*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm) 110*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_pipelined) 111*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_pipelined_x2) 112*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_x2) 113*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_x4) 114*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86) 115*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_pipelined) 116*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_pipelined_x2) 117*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_x2) 118*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_x4) 119*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x2__neonfma) 120*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f32_spmm_minmax_ukernel_32x4__neonfma) 121*4bdc9457SAndroid Build Coastguard Worker 122*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(fn_name) \ 123*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 124*4bdc9457SAndroid Build Coastguard Worker size_t mc, \ 125*4bdc9457SAndroid Build Coastguard Worker size_t nc, \ 126*4bdc9457SAndroid Build Coastguard Worker const void* input, \ 127*4bdc9457SAndroid Build Coastguard Worker const void* weights, \ 128*4bdc9457SAndroid Build Coastguard Worker const int32_t* widx_dmap, \ 129*4bdc9457SAndroid Build Coastguard Worker const uint32_t* nidx_nnzmap, \ 130*4bdc9457SAndroid Build Coastguard Worker void* output, \ 131*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, \ 132*4bdc9457SAndroid Build Coastguard Worker const union xnn_f16_minmax_params* params); 133*4bdc9457SAndroid Build Coastguard Worker 134*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_8x1__neonfp16arith) 135*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_8x1__neonfp16arith_x2) 136*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_16x1__neonfp16arith) 137*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_16x1__neonfp16arith_x2) 138*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_24x1__neonfp16arith) 139*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_24x1__neonfp16arith_x2) 140*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_32x1__neonfp16arith) 141*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_SPMM_MINMAX_UKERNEL_FUNCTION(xnn_f16_spmm_minmax_ukernel_32x1__neonfp16arith_x2) 142*4bdc9457SAndroid Build Coastguard Worker 143*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 144*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 145*4bdc9457SAndroid Build Coastguard Worker #endif 146