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/common.h> 15 #include <xnnpack/microparams.h> 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 22 #define DECLARE_F16_MAXPOOL_MINMAX_UKERNEL_FUNCTION(fn_name) \ 23 XNN_INTERNAL void fn_name( \ 24 size_t output_pixels, \ 25 size_t kernel_size, \ 26 size_t channels, \ 27 const void** input, \ 28 size_t input_offset, \ 29 void* output, \ 30 size_t input_increment, \ 31 size_t output_increment, \ 32 const union xnn_f16_minmax_params* params); 33 34 DECLARE_F16_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f16_maxpool_minmax_ukernel_9p8x__f16c_c8) 35 DECLARE_F16_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f16_maxpool_minmax_ukernel_9p8x__neonfp16arith_c8) 36 37 38 #define DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(fn_name) \ 39 XNN_INTERNAL void fn_name( \ 40 size_t output_pixels, \ 41 size_t kernel_size, \ 42 size_t channels, \ 43 const float** input, \ 44 size_t input_offset, \ 45 float* output, \ 46 size_t input_increment, \ 47 size_t output_increment, \ 48 const union xnn_f32_minmax_params* params); 49 50 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__neon_c4) 51 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__scalar_c1) 52 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__sse_c4) 53 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__wasm_c1) 54 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_arm_c4) 55 DECLARE_F32_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_f32_maxpool_minmax_ukernel_9p8x__wasmsimd_x86_c4) 56 57 58 #define DECLARE_U8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(fn_name) \ 59 XNN_INTERNAL void fn_name( \ 60 size_t output_pixels, \ 61 size_t kernel_size, \ 62 size_t channels, \ 63 const uint8_t** input, \ 64 size_t input_offset, \ 65 uint8_t* output, \ 66 size_t input_increment, \ 67 size_t output_increment, \ 68 const union xnn_u8_minmax_params* params); 69 70 DECLARE_U8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16) 71 DECLARE_U8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_u8_maxpool_minmax_ukernel_9p8x__scalar_c1) 72 DECLARE_U8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_u8_maxpool_minmax_ukernel_9p8x__sse2_c16) 73 DECLARE_U8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_u8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16) 74 75 76 #define DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(fn_name) \ 77 XNN_INTERNAL void fn_name( \ 78 size_t output_pixels, \ 79 size_t kernel_size, \ 80 size_t channels, \ 81 const int8_t** input, \ 82 size_t input_offset, \ 83 int8_t* output, \ 84 size_t input_increment, \ 85 size_t output_increment, \ 86 const union xnn_s8_minmax_params* params); 87 88 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_2p2x__neon_c16) 89 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_4p3x__neon_c16) 90 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_9p8x__neon_c16) 91 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_9p8x__scalar_c1) 92 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_9p8x__sse2_c16) 93 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_9p8x__sse41_c16) 94 DECLARE_S8_MAXPOOL_MINMAX_UKERNEL_FUNCTION(xnn_s8_maxpool_minmax_ukernel_9p8x__wasmsimd_c16) 95 96 97 #ifdef __cplusplus 98 } // extern "C" 99 #endif 100