blob: 78c8955157f7d78d2b865ae9d1d7242b4646ee80 [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 <stdint.h>
12#include <stddef.h>
13
14#include <xnnpack/params.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
Marat Dukhan2e23d2b2020-07-29 16:01:37 -070020
Marat Dukhan5b69f8b2020-07-24 15:26:48 -070021typedef void (*xnn_qu8_requantization_function)(
XNNPACK Teamb455b122019-09-27 18:10:33 -070022 size_t n,
23 const int32_t* input,
24 float scale,
25 uint8_t zero_point,
26 uint8_t qmin,
27 uint8_t qmax,
28 uint8_t* output);
29
Marat Dukhan5b69f8b2020-07-24 15:26:48 -070030#define DECLARE_QU8_REQUANTIZATION_FUNCTION(fn_name) \
31 void fn_name( \
32 size_t n, \
33 const int32_t* input, \
34 float scale, \
35 uint8_t zero_point, \
36 uint8_t qmin, \
37 uint8_t qmax, \
XNNPACK Teamb455b122019-09-27 18:10:33 -070038 uint8_t* output);
39
Marat Dukhan5b69f8b2020-07-24 15:26:48 -070040DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__scalar_unsigned32)
41DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__scalar_unsigned64)
42DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__scalar_signed64)
43DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__sse2)
44DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__ssse3)
45DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__sse4)
46DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__neon)
47DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_precise__psimd)
XNNPACK Teamb455b122019-09-27 18:10:33 -070048
Marat Dukhan5b69f8b2020-07-24 15:26:48 -070049DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__scalar_lrintf)
50DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__scalar_magic)
51DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__sse2)
52DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__neon)
53DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__psimd)
54DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__wasmsimd)
XNNPACK Teamb455b122019-09-27 18:10:33 -070055
Marat Dukhan5b69f8b2020-07-24 15:26:48 -070056DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__scalar)
57DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__sse2)
58DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__ssse3)
59DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__sse4)
60DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__neon)
61DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__psimd)
Marat Dukhan22de5e72020-08-03 21:53:18 -070062DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_q31__wasmsimd)
XNNPACK Teamb455b122019-09-27 18:10:33 -070063
Marat Dukhan2e23d2b2020-07-29 16:01:37 -070064
65typedef void (*xnn_qs8_requantization_function)(
66 size_t n,
67 const int32_t* input,
68 float scale,
69 int8_t zero_point,
70 int8_t qmin,
71 int8_t qmax,
72 int8_t* output);
73
74#define DECLARE_QS8_REQUANTIZATION_FUNCTION(fn_name) \
75 void fn_name( \
76 size_t n, \
77 const int32_t* input, \
78 float scale, \
79 int8_t zero_point, \
80 int8_t qmin, \
81 int8_t qmax, \
82 int8_t* output);
83
84DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__scalar_unsigned32)
85DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__scalar_unsigned64)
86DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__scalar_signed64)
87DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__sse2)
88DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__ssse3)
89DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__sse4)
90DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__neon)
91DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_precise__psimd)
92
93DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__scalar_lrintf)
94DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__scalar_magic)
95DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__sse2)
96DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__sse4)
97DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__neon)
98DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__psimd)
99DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__wasmsimd)
100
101DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__scalar)
102DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__sse2)
103DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__ssse3)
104DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__sse4)
105DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__neon)
106DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__psimd)
Marat Dukhan138560c2020-08-03 18:57:34 -0700107DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_q31__wasmsimd)
Marat Dukhan2e23d2b2020-07-29 16:01:37 -0700108
XNNPACK Teamb455b122019-09-27 18:10:33 -0700109
110#ifdef __cplusplus
Marat Dukhan80fc9322019-09-29 21:06:36 -0700111} // extern "C"
XNNPACK Teamb455b122019-09-27 18:10:33 -0700112#endif