1 // Copyright (c) Facebook, Inc. and its affiliates. 2 // All rights reserved. 3 // 4 // Copyright 2019 Google LLC 5 // 6 // This source code is licensed under the BSD-style license found in the 7 // LICENSE file in the root directory of this source tree. 8 9 #pragma once 10 11 #include <stddef.h> 12 #include <stdint.h> 13 14 #include <xnnpack/params.h> 15 #include <xnnpack/common.h> 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 22 #define DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(fn_name) \ 23 XNN_INTERNAL void fn_name( \ 24 size_t n, \ 25 size_t ks, \ 26 size_t kc, \ 27 const float** x, \ 28 const float* zero, \ 29 float* buffer, \ 30 float* y, \ 31 size_t x_increment, \ 32 size_t y_increment, \ 33 const union xnn_f32_avgpool_params* params); 34 35 DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_mp9p8q__neon) 36 DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_mp9p8q__sse) 37 DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_mp9p8q__psimd) 38 DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_mp9p8q__wasm) 39 DECLARE_F32_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_mp9p8q__scalar) 40 41 42 #define DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(fn_name) \ 43 XNN_INTERNAL void fn_name( \ 44 size_t n, \ 45 size_t ks, \ 46 size_t kc, \ 47 const float** x, \ 48 const float* zero, \ 49 float* y, \ 50 size_t x_increment, \ 51 size_t y_increment, \ 52 const union xnn_f32_avgpool_params* params); 53 54 DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_up9__neon) 55 DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_up9__sse) 56 DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_up9__psimd) 57 DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_up9__wasm) 58 DECLARE_F32_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_avgpool_ukernel_up9__scalar) 59 60 61 #define DECLARE_Q8_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(fn_name) \ 62 XNN_INTERNAL void fn_name( \ 63 size_t n, \ 64 size_t ks, \ 65 size_t kc, \ 66 const uint8_t** x, \ 67 const uint8_t* zero, \ 68 int32_t* buffer, \ 69 uint8_t* y, \ 70 size_t x_increment, \ 71 size_t y_increment, \ 72 const union xnn_q8_avgpool_params* params); 73 74 DECLARE_Q8_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_mp9p8q__neon) 75 DECLARE_Q8_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_mp9p8q__scalar) 76 DECLARE_Q8_AVGPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_mp9p8q__sse2) 77 78 79 #define DECLARE_Q8_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(fn_name) \ 80 XNN_INTERNAL void fn_name( \ 81 size_t n, \ 82 size_t ks, \ 83 size_t kc, \ 84 const uint8_t** x, \ 85 const uint8_t* zero, \ 86 uint8_t* y, \ 87 size_t x_increment, \ 88 size_t y_increment, \ 89 const union xnn_q8_avgpool_params* params); 90 91 DECLARE_Q8_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_up9__neon) 92 DECLARE_Q8_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_up9__scalar) 93 DECLARE_Q8_AVGPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_q8_avgpool_ukernel_up9__sse2) 94 95 96 #ifdef __cplusplus 97 } // extern "C" 98 #endif 99