blob: b01bcf7f364c4055845a29f4395e67ceca397392 [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// 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
18extern "C" {
19#endif
20
21
Frank Barchardb1966592020-05-12 13:47:06 -070022#define DECLARE_F16_CLAMP_UKERNEL_FUNCTION(fn_name) \
23 XNN_INTERNAL void fn_name( \
24 size_t n, \
25 const void* x, \
26 void* y, \
27 const struct xnn_f16_minmax_params* params);
28
29DECLARE_F16_CLAMP_UKERNEL_FUNCTION(xnn_f16_clamp_ukernel__neonfp16arith_x8)
30DECLARE_F16_CLAMP_UKERNEL_FUNCTION(xnn_f16_clamp_ukernel__neonfp16arith_x16)
31
XNNPACK Teamb455b122019-09-27 18:10:33 -070032#define DECLARE_F32_CLAMP_UKERNEL_FUNCTION(fn_name) \
33 XNN_INTERNAL void fn_name( \
34 size_t n, \
35 const float* x, \
36 float* y, \
Marat Dukhaneb09a6b2020-04-08 17:34:32 -070037 const union xnn_f32_minmax_params* params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070038
Marat Dukhan5c5fa962020-03-10 18:38:33 -070039DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__neon_x4)
40DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__neon_x8)
41DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__sse_x4)
42DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__sse_x8)
43DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__avx_x8)
44DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__avx_x16)
45DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__avx512f_x16)
46DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__avx512f_x32)
Marat Dukhan3fa52c82020-07-08 12:54:33 -070047DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasmsimd_arm_x4)
48DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasmsimd_arm_x8)
49DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasmsimd_x86_x4)
50DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasmsimd_x86_x8)
Marat Dukhan5c5fa962020-03-10 18:38:33 -070051DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasm_x1)
52DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasm_x2)
53DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__wasm_x4)
54DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__scalar_x1)
55DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__scalar_x2)
56DECLARE_F32_CLAMP_UKERNEL_FUNCTION(xnn_f32_clamp_ukernel__scalar_x4)
XNNPACK Teamb455b122019-09-27 18:10:33 -070057
58
59#define DECLARE_U8_CLAMP_UKERNEL_FUNCTION(fn_name) \
60 XNN_INTERNAL void fn_name( \
61 size_t n, \
62 const uint8_t* x, \
63 uint8_t* y, \
Marat Dukhaneb09a6b2020-04-08 17:34:32 -070064 const union xnn_u8_minmax_params* params);
XNNPACK Teamb455b122019-09-27 18:10:33 -070065
Marat Dukhan5c5fa962020-03-10 18:38:33 -070066DECLARE_U8_CLAMP_UKERNEL_FUNCTION(xnn_u8_clamp_ukernel__neon_x64)
67DECLARE_U8_CLAMP_UKERNEL_FUNCTION(xnn_u8_clamp_ukernel__sse2_x64)
68DECLARE_U8_CLAMP_UKERNEL_FUNCTION(xnn_u8_clamp_ukernel__scalar_x4)
XNNPACK Teamb455b122019-09-27 18:10:33 -070069
70
71#ifdef __cplusplus
Marat Dukhan80fc9322019-09-29 21:06:36 -070072} // extern "C"
XNNPACK Teamb455b122019-09-27 18:10:33 -070073#endif