1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2022 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 <cstdint> 9*4bdc9457SAndroid Build Coastguard Worker #include <cstddef> 10*4bdc9457SAndroid Build Coastguard Worker #include <vector> 11*4bdc9457SAndroid Build Coastguard Worker 12*4bdc9457SAndroid Build Coastguard Worker namespace xnnpack { 13*4bdc9457SAndroid Build Coastguard Worker void compute_convolution_qs8_reference_results( 14*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 15*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 16*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 17*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 18*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 19*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 20*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 21*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 22*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 23*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 24*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 25*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 26*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 27*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 28*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 29*4bdc9457SAndroid Build Coastguard Worker size_t groups, 30*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 31*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 32*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 33*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 34*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& input, 35*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& filter, 36*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 37*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 38*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 39*4bdc9457SAndroid Build Coastguard Worker 40*4bdc9457SAndroid Build Coastguard Worker void compute_convolution_qs8_reference_results( 41*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 42*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 43*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 44*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 45*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 46*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 47*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 48*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 49*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 50*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 51*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 52*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 53*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 54*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 55*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 56*4bdc9457SAndroid Build Coastguard Worker size_t groups, 57*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 58*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 59*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 60*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& input, 61*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& filter, 62*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 63*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 64*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 65*4bdc9457SAndroid Build Coastguard Worker 66*4bdc9457SAndroid Build Coastguard Worker void compute_convolution_qu8_reference_results( 67*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 68*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 69*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 70*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 71*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 72*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 73*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 74*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 75*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 76*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 77*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 78*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 79*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 80*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 81*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 82*4bdc9457SAndroid Build Coastguard Worker size_t groups, 83*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 84*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 85*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 86*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 87*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& input, 88*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& filter, 89*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 90*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 91*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 92*4bdc9457SAndroid Build Coastguard Worker 93*4bdc9457SAndroid Build Coastguard Worker void compute_convolution_qu8_reference_results( 94*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 95*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 96*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 97*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 98*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 99*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 100*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 101*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 102*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 103*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 104*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 105*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 106*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 107*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 108*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 109*4bdc9457SAndroid Build Coastguard Worker size_t groups, 110*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 111*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 112*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 113*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 114*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 115*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& input, 116*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& filter, 117*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 118*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 119*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 120*4bdc9457SAndroid Build Coastguard Worker 121*4bdc9457SAndroid Build Coastguard Worker void compute_depthwise_convolution_qs8_reference_results( 122*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 123*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 124*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 125*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 126*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 127*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 128*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 129*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 130*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 131*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 132*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 133*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 134*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 135*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 136*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 137*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 138*4bdc9457SAndroid Build Coastguard Worker size_t depth_multiplier, 139*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 140*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 141*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& input, 142*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& filter, 143*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 144*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 145*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 146*4bdc9457SAndroid Build Coastguard Worker 147*4bdc9457SAndroid Build Coastguard Worker void compute_depthwise_convolution_qs8_reference_results( 148*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 149*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 150*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 151*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 152*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 153*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 154*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 155*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 156*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 157*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 158*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 159*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 160*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 161*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 162*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 163*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 164*4bdc9457SAndroid Build Coastguard Worker size_t depth_multiplier, 165*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 166*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& input, 167*4bdc9457SAndroid Build Coastguard Worker const std::vector<int8_t>& filter, 168*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 169*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 170*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 171*4bdc9457SAndroid Build Coastguard Worker 172*4bdc9457SAndroid Build Coastguard Worker void compute_depthwise_convolution_qu8_reference_results( 173*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 174*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 175*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 176*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 177*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 178*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 179*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 180*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 181*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 182*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 183*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 184*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 185*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 186*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 187*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 188*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 189*4bdc9457SAndroid Build Coastguard Worker size_t depth_multiplier, 190*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 191*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 192*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 193*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& input, 194*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& filter, 195*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 196*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 197*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 198*4bdc9457SAndroid Build Coastguard Worker 199*4bdc9457SAndroid Build Coastguard Worker void compute_depthwise_convolution_qu8_reference_results( 200*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 201*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 202*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 203*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 204*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 205*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_top, 206*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_right, 207*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_bottom, 208*4bdc9457SAndroid Build Coastguard Worker size_t input_padding_left, 209*4bdc9457SAndroid Build Coastguard Worker size_t kernel_height, 210*4bdc9457SAndroid Build Coastguard Worker size_t kernel_width, 211*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_height, 212*4bdc9457SAndroid Build Coastguard Worker size_t subsampling_width, 213*4bdc9457SAndroid Build Coastguard Worker size_t dilation_height, 214*4bdc9457SAndroid Build Coastguard Worker size_t dilation_width, 215*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 216*4bdc9457SAndroid Build Coastguard Worker size_t depth_multiplier, 217*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 218*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 219*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& input, 220*4bdc9457SAndroid Build Coastguard Worker const std::vector<uint8_t>& filter, 221*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t>& accumulators, 222*4bdc9457SAndroid Build Coastguard Worker bool has_bias, 223*4bdc9457SAndroid Build Coastguard Worker const std::vector<int32_t>& bias); 224*4bdc9457SAndroid Build Coastguard Worker } // namespace xnnpack 225