1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates. 2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved. 3*4bdc9457SAndroid Build Coastguard Worker // 4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 8*4bdc9457SAndroid Build Coastguard Worker 9*4bdc9457SAndroid Build Coastguard Worker #pragma once 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 15*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams.h> 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 18*4bdc9457SAndroid Build Coastguard Worker extern "C" { 19*4bdc9457SAndroid Build Coastguard Worker #endif 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Worker 22*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(fn_name) \ 23*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 24*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 25*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 26*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 27*4bdc9457SAndroid Build Coastguard Worker const void** input, \ 28*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 29*4bdc9457SAndroid Build Coastguard Worker const void* zero, \ 30*4bdc9457SAndroid Build Coastguard Worker void* buffer, \ 31*4bdc9457SAndroid Build Coastguard Worker void* output, \ 32*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 33*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 34*4bdc9457SAndroid Build Coastguard Worker const union xnn_f16_scaleminmax_params* params); 35*4bdc9457SAndroid Build Coastguard Worker 36*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f16_avgpool_minmax_ukernel_9p8x__f16c_c8) 37*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f16_avgpool_minmax_ukernel_9p8x__neonfp16arith_c8) 38*4bdc9457SAndroid Build Coastguard Worker 39*4bdc9457SAndroid Build Coastguard Worker 40*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(fn_name) \ 41*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 42*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 43*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 44*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 45*4bdc9457SAndroid Build Coastguard Worker const void** input, \ 46*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 47*4bdc9457SAndroid Build Coastguard Worker const void* zero, \ 48*4bdc9457SAndroid Build Coastguard Worker void* output, \ 49*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 50*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 51*4bdc9457SAndroid Build Coastguard Worker const union xnn_f16_scaleminmax_params* params); 52*4bdc9457SAndroid Build Coastguard Worker 53*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f16_avgpool_minmax_ukernel_9x__f16c_c8) 54*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f16_avgpool_minmax_ukernel_9x__neonfp16arith_c8) 55*4bdc9457SAndroid Build Coastguard Worker 56*4bdc9457SAndroid Build Coastguard Worker 57*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(fn_name) \ 58*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 59*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 60*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 61*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 62*4bdc9457SAndroid Build Coastguard Worker const float** input, \ 63*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 64*4bdc9457SAndroid Build Coastguard Worker const float* zero, \ 65*4bdc9457SAndroid Build Coastguard Worker float* buffer, \ 66*4bdc9457SAndroid Build Coastguard Worker float* output, \ 67*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 68*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 69*4bdc9457SAndroid Build Coastguard Worker const union xnn_f32_scaleminmax_params* params); 70*4bdc9457SAndroid Build Coastguard Worker 71*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4) 72*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1) 73*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4) 74*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1) 75*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4) 76*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4) 77*4bdc9457SAndroid Build Coastguard Worker 78*4bdc9457SAndroid Build Coastguard Worker 79*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(fn_name) \ 80*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 81*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 82*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 83*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 84*4bdc9457SAndroid Build Coastguard Worker const float** input, \ 85*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 86*4bdc9457SAndroid Build Coastguard Worker const float* zero, \ 87*4bdc9457SAndroid Build Coastguard Worker float* output, \ 88*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 89*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 90*4bdc9457SAndroid Build Coastguard Worker const union xnn_f32_scaleminmax_params* params); 91*4bdc9457SAndroid Build Coastguard Worker 92*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4) 93*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1) 94*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4) 95*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1) 96*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4) 97*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4) 98*4bdc9457SAndroid Build Coastguard Worker 99*4bdc9457SAndroid Build Coastguard Worker 100*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_QU8_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(fn_name) \ 101*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 102*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 103*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 104*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 105*4bdc9457SAndroid Build Coastguard Worker const uint8_t** input, \ 106*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 107*4bdc9457SAndroid Build Coastguard Worker const uint8_t* zero, \ 108*4bdc9457SAndroid Build Coastguard Worker int32_t* buffer, \ 109*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, \ 110*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 111*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 112*4bdc9457SAndroid Build Coastguard Worker const union xnn_qu8_avgpool_minmax_params* params); 113*4bdc9457SAndroid Build Coastguard Worker 114*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8) 115*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1) 116*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_MULTIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8) 117*4bdc9457SAndroid Build Coastguard Worker 118*4bdc9457SAndroid Build Coastguard Worker 119*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_QU8_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(fn_name) \ 120*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 121*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 122*4bdc9457SAndroid Build Coastguard Worker size_t kernel_elements, \ 123*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 124*4bdc9457SAndroid Build Coastguard Worker const uint8_t** input, \ 125*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 126*4bdc9457SAndroid Build Coastguard Worker const uint8_t* zero, \ 127*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, \ 128*4bdc9457SAndroid Build Coastguard Worker size_t input_increment, \ 129*4bdc9457SAndroid Build Coastguard Worker size_t output_increment, \ 130*4bdc9457SAndroid Build Coastguard Worker const union xnn_qu8_avgpool_minmax_params* params); 131*4bdc9457SAndroid Build Coastguard Worker 132*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8) 133*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1) 134*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_AVGPOOL_MINMAX_UNIPASS_UKERNEL_FUNCTION(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8) 135*4bdc9457SAndroid Build Coastguard Worker 136*4bdc9457SAndroid Build Coastguard Worker 137*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 138*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 139*4bdc9457SAndroid Build Coastguard Worker #endif 140