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 <stddef.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 15*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams.h> 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 18*4bdc9457SAndroid Build Coastguard Worker extern "C" { 19*4bdc9457SAndroid Build Coastguard Worker #endif 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Worker 22*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(fn_name) \ 23*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 24*4bdc9457SAndroid Build Coastguard Worker size_t input_height, \ 25*4bdc9457SAndroid Build Coastguard Worker size_t input_width, \ 26*4bdc9457SAndroid Build Coastguard Worker size_t output_y_start, \ 27*4bdc9457SAndroid Build Coastguard Worker size_t output_y_end, \ 28*4bdc9457SAndroid Build Coastguard Worker const float* input, \ 29*4bdc9457SAndroid Build Coastguard Worker const float* zero, \ 30*4bdc9457SAndroid Build Coastguard Worker const float* weights, \ 31*4bdc9457SAndroid Build Coastguard Worker float* output, \ 32*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, \ 33*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, \ 34*4bdc9457SAndroid Build Coastguard Worker size_t output_height_stride, \ 35*4bdc9457SAndroid Build Coastguard Worker size_t output_width_stride, \ 36*4bdc9457SAndroid Build Coastguard Worker const union xnn_f32_minmax_params* params); 37*4bdc9457SAndroid Build Coastguard Worker 38*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x4__neon_2x1) 39*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x4__neon_2x2) 40*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x4__neonfma_2x1) 41*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x4__neonfma_2x2) 42*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x4__scalar_1x1) 43*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x8__neon_2x1) 44*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x8__neon_2x2) 45*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x8__neonfma_2x1) 46*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p1c3x8__neonfma_2x2) 47*4bdc9457SAndroid Build Coastguard Worker 48*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x4__neon_2x1) 49*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x4__neon_2x2) 50*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x4__neonfma_2x1) 51*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x4__neonfma_2x2) 52*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x4__scalar_1x1) 53*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x8__neon_2x1) 54*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x8__neon_2x2) 55*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x8__neonfma_2x1) 56*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC_UKERNEL_FUNCTION(xnn_f32_conv_hwc_ukernel_3x3s2p0p1c3x8__neonfma_2x2) 57*4bdc9457SAndroid Build Coastguard Worker 58*4bdc9457SAndroid Build Coastguard Worker 59*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(fn_name) \ 60*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 61*4bdc9457SAndroid Build Coastguard Worker size_t input_height, \ 62*4bdc9457SAndroid Build Coastguard Worker size_t input_width, \ 63*4bdc9457SAndroid Build Coastguard Worker size_t output_y_start, \ 64*4bdc9457SAndroid Build Coastguard Worker size_t output_y_end, \ 65*4bdc9457SAndroid Build Coastguard Worker const float* input, \ 66*4bdc9457SAndroid Build Coastguard Worker const float* zero, \ 67*4bdc9457SAndroid Build Coastguard Worker const float* weights, \ 68*4bdc9457SAndroid Build Coastguard Worker float* output, \ 69*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, \ 70*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, \ 71*4bdc9457SAndroid Build Coastguard Worker size_t output_height_stride, \ 72*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, \ 73*4bdc9457SAndroid Build Coastguard Worker const union xnn_f32_minmax_params* params); 74*4bdc9457SAndroid Build Coastguard Worker 75*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__neon_2x2) 76*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__neonfma_2x2) 77*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__scalar_1x1) 78*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__sse_1x1) 79*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__sse_2x2) 80*4bdc9457SAndroid Build Coastguard Worker DECLARE_F32_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f32_conv_hwc2chw_ukernel_3x3s2p1c3x4__wasmsimd_2x2) 81*4bdc9457SAndroid Build Coastguard Worker 82*4bdc9457SAndroid Build Coastguard Worker #define DECLARE_F16_CONV_HWC2CHW_UKERNEL_FUNCTION(fn_name) \ 83*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void fn_name( \ 84*4bdc9457SAndroid Build Coastguard Worker size_t input_height, \ 85*4bdc9457SAndroid Build Coastguard Worker size_t input_width, \ 86*4bdc9457SAndroid Build Coastguard Worker size_t output_y_start, \ 87*4bdc9457SAndroid Build Coastguard Worker size_t output_y_end, \ 88*4bdc9457SAndroid Build Coastguard Worker const void* input, \ 89*4bdc9457SAndroid Build Coastguard Worker const void* zero, \ 90*4bdc9457SAndroid Build Coastguard Worker const void* weights, \ 91*4bdc9457SAndroid Build Coastguard Worker void* output, \ 92*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, \ 93*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, \ 94*4bdc9457SAndroid Build Coastguard Worker size_t output_height_stride, \ 95*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, \ 96*4bdc9457SAndroid Build Coastguard Worker const union xnn_f16_minmax_params* params); 97*4bdc9457SAndroid Build Coastguard Worker 98*4bdc9457SAndroid Build Coastguard Worker DECLARE_F16_CONV_HWC2CHW_UKERNEL_FUNCTION(xnn_f16_conv_hwc2chw_ukernel_3x3s2p1c3x4__neonfp16arith_2x2) 99*4bdc9457SAndroid Build Coastguard Worker 100*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 101*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 102*4bdc9457SAndroid Build Coastguard Worker #endif 103