1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 2*4bdc9457SAndroid Build Coastguard Worker // 3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 5*4bdc9457SAndroid Build Coastguard Worker 6*4bdc9457SAndroid Build Coastguard Worker #pragma once 7*4bdc9457SAndroid Build Coastguard Worker 8*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 9*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 12*4bdc9457SAndroid Build Coastguard Worker 13*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 14*4bdc9457SAndroid Build Coastguard Worker extern "C" { 15*4bdc9457SAndroid Build Coastguard Worker #endif 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_IBILINEAR_UKERNEL_FUNCTION(fn_name) \ 19*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 20*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 21*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 22*4bdc9457SAndroid Build Coastguard Worker const void** input, \ 23*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 24*4bdc9457SAndroid Build Coastguard Worker const void* weights, \ 25*4bdc9457SAndroid Build Coastguard Worker void* output, \ 26*4bdc9457SAndroid Build Coastguard Worker size_t output_increment); 27*4bdc9457SAndroid Build Coastguard Worker 28*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_UKERNEL_FUNCTION(xnn_f16_ibilinear_ukernel__fma3_c8) 29*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_UKERNEL_FUNCTION(xnn_f16_ibilinear_ukernel__fma3_c16) 30*4bdc9457SAndroid Build Coastguard Worker 31*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_UKERNEL_FUNCTION(xnn_f16_ibilinear_ukernel__neonfp16arith_c8) 32*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_UKERNEL_FUNCTION(xnn_f16_ibilinear_ukernel__neonfp16arith_c16) 33*4bdc9457SAndroid Build Coastguard Worker 34*4bdc9457SAndroid Build Coastguard Worker 35*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(fn_name) \ 36*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 37*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 38*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 39*4bdc9457SAndroid Build Coastguard Worker const float** input, \ 40*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 41*4bdc9457SAndroid Build Coastguard Worker const float* weights, \ 42*4bdc9457SAndroid Build Coastguard Worker float* output, \ 43*4bdc9457SAndroid Build Coastguard Worker size_t output_increment); 44*4bdc9457SAndroid Build Coastguard Worker 45*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__scalar_c1) 46*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__scalar_c2) 47*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__scalar_c4) 48*4bdc9457SAndroid Build Coastguard Worker 49*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__neon_c4) 50*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__neon_c8) 51*4bdc9457SAndroid Build Coastguard Worker 52*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__neonfma_c4) 53*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__neonfma_c8) 54*4bdc9457SAndroid Build Coastguard Worker 55*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__sse_c4) 56*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__sse_c8) 57*4bdc9457SAndroid Build Coastguard Worker 58*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__wasmsimd_c4) 59*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_UKERNEL_FUNCTION(xnn_f32_ibilinear_ukernel__wasmsimd_c8) 60*4bdc9457SAndroid Build Coastguard Worker 61*4bdc9457SAndroid Build Coastguard Worker 62*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(fn_name) \ 63*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 64*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 65*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 66*4bdc9457SAndroid Build Coastguard Worker const int8_t** input, \ 67*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 68*4bdc9457SAndroid Build Coastguard Worker const int16_t* weights, \ 69*4bdc9457SAndroid Build Coastguard Worker int8_t* output, \ 70*4bdc9457SAndroid Build Coastguard Worker size_t output_increment); 71*4bdc9457SAndroid Build Coastguard Worker 72*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__scalar_c1) 73*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__scalar_c2) 74*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__scalar_c4) 75*4bdc9457SAndroid Build Coastguard Worker 76*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__neon_c8) 77*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__neon_c16) 78*4bdc9457SAndroid Build Coastguard Worker 79*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__sse2_c8) 80*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__sse2_c16) 81*4bdc9457SAndroid Build Coastguard Worker 82*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__sse41_c8) 83*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__sse41_c16) 84*4bdc9457SAndroid Build Coastguard Worker 85*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__wasmsimd_dot16x2_c8) 86*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__wasmsimd_dot16x2_c16) 87*4bdc9457SAndroid Build Coastguard Worker 88*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__wasmsimd_mul32_c8) 89*4bdc9457SAndroid Build Coastguard Worker DECLARE_S8_IBILINEAR_UKERNEL_FUNCTION(xnn_s8_ibilinear_ukernel__wasmsimd_mul32_c16) 90*4bdc9457SAndroid Build Coastguard Worker 91*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(fn_name) \ 92*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 93*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 94*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 95*4bdc9457SAndroid Build Coastguard Worker const uint8_t** input, \ 96*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 97*4bdc9457SAndroid Build Coastguard Worker const int16_t* weights, \ 98*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, \ 99*4bdc9457SAndroid Build Coastguard Worker size_t output_increment); 100*4bdc9457SAndroid Build Coastguard Worker 101*4bdc9457SAndroid Build Coastguard Worker 102*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__scalar_c1) 103*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__scalar_c2) 104*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__scalar_c4) 105*4bdc9457SAndroid Build Coastguard Worker 106*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__neon_c8) 107*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__neon_c16) 108*4bdc9457SAndroid Build Coastguard Worker 109*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__sse2_c8) 110*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__sse2_c16) 111*4bdc9457SAndroid Build Coastguard Worker 112*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__sse41_c8) 113*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__sse41_c16) 114*4bdc9457SAndroid Build Coastguard Worker 115*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__wasmsimd_dot16x2_c8) 116*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__wasmsimd_dot16x2_c16) 117*4bdc9457SAndroid Build Coastguard Worker 118*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__wasmsimd_mul32_c8) 119*4bdc9457SAndroid Build Coastguard Worker DECLARE_U8_IBILINEAR_UKERNEL_FUNCTION(xnn_u8_ibilinear_ukernel__wasmsimd_mul32_c16) 120*4bdc9457SAndroid Build Coastguard Worker 121*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(fn_name) \ 122*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 123*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 124*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 125*4bdc9457SAndroid Build Coastguard Worker const float** input, \ 126*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 127*4bdc9457SAndroid Build Coastguard Worker const float* weights, \ 128*4bdc9457SAndroid Build Coastguard Worker float* output, \ 129*4bdc9457SAndroid Build Coastguard Worker size_t input_increment); 130*4bdc9457SAndroid Build Coastguard Worker 131*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__scalar_p1) 132*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__scalar_p2) 133*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__scalar_p4) 134*4bdc9457SAndroid Build Coastguard Worker 135*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__wasmsimd_p4) 136*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__wasmsimd_p8) 137*4bdc9457SAndroid Build Coastguard Worker 138*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neon_p4) 139*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neon_p8) 140*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neon_p16) 141*4bdc9457SAndroid Build Coastguard Worker 142*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neonfma_p4) 143*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neonfma_p8) 144*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__neonfma_p16) 145*4bdc9457SAndroid Build Coastguard Worker 146*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__sse_p4) 147*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f32_ibilinear_chw_ukernel__sse_p8) 148*4bdc9457SAndroid Build Coastguard Worker 149*4bdc9457SAndroid Build Coastguard Worker 150*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_IBILINEAR_CHW_UKERNEL_FUNCTION(fn_name) \ 151*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 152*4bdc9457SAndroid Build Coastguard Worker size_t output_pixels, \ 153*4bdc9457SAndroid Build Coastguard Worker size_t channels, \ 154*4bdc9457SAndroid Build Coastguard Worker const void** input, \ 155*4bdc9457SAndroid Build Coastguard Worker size_t input_offset, \ 156*4bdc9457SAndroid Build Coastguard Worker const void* weights, \ 157*4bdc9457SAndroid Build Coastguard Worker void* output, \ 158*4bdc9457SAndroid Build Coastguard Worker size_t input_increment); 159*4bdc9457SAndroid Build Coastguard Worker 160*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p4) 161*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p8) 162*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_IBILINEAR_CHW_UKERNEL_FUNCTION(xnn_f16_ibilinear_chw_ukernel__neonfp16arith_p16) 163*4bdc9457SAndroid Build Coastguard Worker 164*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 165*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 166*4bdc9457SAndroid Build Coastguard Worker #endif 167