blob: 08b85beee3fcdc81010bd030a6edb282e57c044d [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright 2019 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
5
6#pragma once
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include <xnnpack/params.h>
12#include <xnnpack/common.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18
19#define DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(fn_name) \
20 XNN_INTERNAL void fn_name( \
Marat Dukhan329da642019-11-19 21:44:39 -080021 size_t output_pixels, \
22 size_t kernel_elements, \
23 size_t channels, \
24 const float** input, \
25 size_t input_offset, \
26 float* output, \
27 uint32_t* index, \
28 size_t input_increment, \
Marat Dukhan447c4f52020-07-17 01:07:28 -070029 size_t output_increment);
XNNPACK Teamb455b122019-09-27 18:10:33 -070030
Marat Dukhanef25c6d2020-07-24 00:59:40 -070031DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_4x__neon_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080032DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_4x__sse2_c4)
Marat Dukhan40f05522020-07-16 22:33:12 -070033DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_4x__wasmsimd_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080034DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_4x__scalar_c1)
35
Marat Dukhanef25c6d2020-07-24 00:59:40 -070036DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9x__neon_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080037DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9x__sse2_c4)
Marat Dukhan40f05522020-07-16 22:33:12 -070038DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9x__wasmsimd_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080039DECLARE_F32_ARGMAXPOOL_UNIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9x__scalar_c1)
XNNPACK Teamb455b122019-09-27 18:10:33 -070040
41
42#define DECLARE_F32_ARGMAXPOOL_MULTIPASS_UKERNEL_FUNCTION(fn_name) \
43 XNN_INTERNAL void fn_name( \
Marat Dukhan329da642019-11-19 21:44:39 -080044 size_t output_pixels, \
45 size_t kernel_elements, \
46 size_t channels, \
47 const float** input, \
48 size_t input_offset, \
49 float* accumulation_buffer, \
50 uint32_t* index_buffer, \
51 float* output, \
52 uint32_t* index, \
53 size_t input_increment, \
Marat Dukhan447c4f52020-07-17 01:07:28 -070054 size_t output_increment);
XNNPACK Teamb455b122019-09-27 18:10:33 -070055
Marat Dukhanef25c6d2020-07-24 00:59:40 -070056DECLARE_F32_ARGMAXPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9p8x__neon_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080057DECLARE_F32_ARGMAXPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9p8x__sse2_c4)
Marat Dukhan40f05522020-07-16 22:33:12 -070058DECLARE_F32_ARGMAXPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9p8x__wasmsimd_c4)
Marat Dukhan329da642019-11-19 21:44:39 -080059DECLARE_F32_ARGMAXPOOL_MULTIPASS_UKERNEL_FUNCTION(xnn_f32_argmaxpool_ukernel_9p8x__scalar_c1)
XNNPACK Teamb455b122019-09-27 18:10:33 -070060
61
62#ifdef __cplusplus
Marat Dukhan80fc9322019-09-29 21:06:36 -070063} // extern "C"
XNNPACK Teamb455b122019-09-27 18:10:33 -070064#endif