• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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