1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates. 2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved. 3*4bdc9457SAndroid Build Coastguard Worker // 4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 8*4bdc9457SAndroid Build Coastguard Worker 9*4bdc9457SAndroid Build Coastguard Worker #pragma once 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 15*4bdc9457SAndroid Build Coastguard Worker extern "C" { 16*4bdc9457SAndroid Build Coastguard Worker #endif 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker 19*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_requantization_function)( 20*4bdc9457SAndroid Build Coastguard Worker size_t n, 21*4bdc9457SAndroid Build Coastguard Worker const int32_t* input, 22*4bdc9457SAndroid Build Coastguard Worker float scale, 23*4bdc9457SAndroid Build Coastguard Worker uint8_t zero_point, 24*4bdc9457SAndroid Build Coastguard Worker uint8_t qmin, 25*4bdc9457SAndroid Build Coastguard Worker uint8_t qmax, 26*4bdc9457SAndroid Build Coastguard Worker uint8_t* output); 27*4bdc9457SAndroid Build Coastguard Worker 28*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_QU8_REQUANTIZATION_FUNCTION(fn_name) \ 29*4bdc9457SAndroid Build Coastguard Worker void fn_name( \ 30*4bdc9457SAndroid Build Coastguard Worker size_t n, \ 31*4bdc9457SAndroid Build Coastguard Worker const int32_t* input, \ 32*4bdc9457SAndroid Build Coastguard Worker float scale, \ 33*4bdc9457SAndroid Build Coastguard Worker uint8_t zero_point, \ 34*4bdc9457SAndroid Build Coastguard Worker uint8_t qmin, \ 35*4bdc9457SAndroid Build Coastguard Worker uint8_t qmax, \ 36*4bdc9457SAndroid Build Coastguard Worker uint8_t* output); 37*4bdc9457SAndroid Build Coastguard Worker 38*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__neon) 39*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__scalar_fmagic) 40*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__scalar_lrintf) 41*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__sse2) 42*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_fp32__wasmsimd) 43*4bdc9457SAndroid Build Coastguard Worker 44*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__neon) 45*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__scalar) 46*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__sse2) 47*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__sse4) 48*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__ssse3) 49*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_gemmlowp__wasmsimd) 50*4bdc9457SAndroid Build Coastguard Worker 51*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__neon) 52*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__scalar_signed64) 53*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__scalar_unsigned32) 54*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__scalar_unsigned64) 55*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__sse2) 56*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__sse4) 57*4bdc9457SAndroid Build Coastguard Worker DECLARE_QU8_REQUANTIZATION_FUNCTION(xnn_qu8_requantize_rndna__ssse3) 58*4bdc9457SAndroid Build Coastguard Worker 59*4bdc9457SAndroid Build Coastguard Worker 60*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_requantization_function)( 61*4bdc9457SAndroid Build Coastguard Worker size_t n, 62*4bdc9457SAndroid Build Coastguard Worker const int32_t* input, 63*4bdc9457SAndroid Build Coastguard Worker float scale, 64*4bdc9457SAndroid Build Coastguard Worker int8_t zero_point, 65*4bdc9457SAndroid Build Coastguard Worker int8_t qmin, 66*4bdc9457SAndroid Build Coastguard Worker int8_t qmax, 67*4bdc9457SAndroid Build Coastguard Worker int8_t* output); 68*4bdc9457SAndroid Build Coastguard Worker 69*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_QS8_REQUANTIZATION_FUNCTION(fn_name) \ 70*4bdc9457SAndroid Build Coastguard Worker void fn_name( \ 71*4bdc9457SAndroid Build Coastguard Worker size_t n, \ 72*4bdc9457SAndroid Build Coastguard Worker const int32_t* input, \ 73*4bdc9457SAndroid Build Coastguard Worker float scale, \ 74*4bdc9457SAndroid Build Coastguard Worker int8_t zero_point, \ 75*4bdc9457SAndroid Build Coastguard Worker int8_t qmin, \ 76*4bdc9457SAndroid Build Coastguard Worker int8_t qmax, \ 77*4bdc9457SAndroid Build Coastguard Worker int8_t* output); 78*4bdc9457SAndroid Build Coastguard Worker 79*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__neon) 80*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__scalar_fmagic) 81*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__scalar_lrintf) 82*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__sse2) 83*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__sse4) 84*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_fp32__wasmsimd) 85*4bdc9457SAndroid Build Coastguard Worker 86*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__neon) 87*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__scalar) 88*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__sse2) 89*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__sse4) 90*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__ssse3) 91*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_gemmlowp__wasmsimd) 92*4bdc9457SAndroid Build Coastguard Worker 93*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__neon) 94*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__scalar_signed64) 95*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__scalar_unsigned32) 96*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__scalar_unsigned64) 97*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__sse2) 98*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__sse4) 99*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndna__ssse3) 100*4bdc9457SAndroid Build Coastguard Worker 101*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndnu__neon_mull) 102*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndnu__neon_qdmulh) 103*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndnu__scalar) 104*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndnu__sse4_sra) 105*4bdc9457SAndroid Build Coastguard Worker DECLARE_QS8_REQUANTIZATION_FUNCTION(xnn_qs8_requantize_rndnu__sse4_srl) 106*4bdc9457SAndroid Build Coastguard Worker 107*4bdc9457SAndroid Build Coastguard Worker 108*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 109*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 110*4bdc9457SAndroid Build Coastguard Worker #endif 111