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 <cstddef> 12*4bdc9457SAndroid Build Coastguard Worker #include <cstdint> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microfnptr.h> 15*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/requantization.h> 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker class GemmMicrokernelTester { 19*4bdc9457SAndroid Build Coastguard Worker public: mr(size_t mr)20*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& mr(size_t mr) { 21*4bdc9457SAndroid Build Coastguard Worker this->mr_ = mr; 22*4bdc9457SAndroid Build Coastguard Worker return *this; 23*4bdc9457SAndroid Build Coastguard Worker } 24*4bdc9457SAndroid Build Coastguard Worker mr()25*4bdc9457SAndroid Build Coastguard Worker inline size_t mr() const { 26*4bdc9457SAndroid Build Coastguard Worker return this->mr_; 27*4bdc9457SAndroid Build Coastguard Worker } 28*4bdc9457SAndroid Build Coastguard Worker nr(size_t nr)29*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& nr(size_t nr) { 30*4bdc9457SAndroid Build Coastguard Worker this->nr_ = nr; 31*4bdc9457SAndroid Build Coastguard Worker return *this; 32*4bdc9457SAndroid Build Coastguard Worker } 33*4bdc9457SAndroid Build Coastguard Worker nr()34*4bdc9457SAndroid Build Coastguard Worker inline size_t nr() const { 35*4bdc9457SAndroid Build Coastguard Worker return this->nr_; 36*4bdc9457SAndroid Build Coastguard Worker } 37*4bdc9457SAndroid Build Coastguard Worker 38*4bdc9457SAndroid Build Coastguard Worker kr(size_t kr)39*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& kr(size_t kr) { 40*4bdc9457SAndroid Build Coastguard Worker this->kr_ = kr; 41*4bdc9457SAndroid Build Coastguard Worker return *this; 42*4bdc9457SAndroid Build Coastguard Worker } 43*4bdc9457SAndroid Build Coastguard Worker kr()44*4bdc9457SAndroid Build Coastguard Worker inline size_t kr() const { 45*4bdc9457SAndroid Build Coastguard Worker return this->kr_; 46*4bdc9457SAndroid Build Coastguard Worker } 47*4bdc9457SAndroid Build Coastguard Worker sr(size_t sr)48*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& sr(size_t sr) { 49*4bdc9457SAndroid Build Coastguard Worker this->sr_ = sr; 50*4bdc9457SAndroid Build Coastguard Worker return *this; 51*4bdc9457SAndroid Build Coastguard Worker } 52*4bdc9457SAndroid Build Coastguard Worker sr()53*4bdc9457SAndroid Build Coastguard Worker inline size_t sr() const { 54*4bdc9457SAndroid Build Coastguard Worker return this->sr_; 55*4bdc9457SAndroid Build Coastguard Worker } 56*4bdc9457SAndroid Build Coastguard Worker m(size_t m)57*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& m(size_t m) { 58*4bdc9457SAndroid Build Coastguard Worker this->m_ = m; 59*4bdc9457SAndroid Build Coastguard Worker return *this; 60*4bdc9457SAndroid Build Coastguard Worker } 61*4bdc9457SAndroid Build Coastguard Worker m()62*4bdc9457SAndroid Build Coastguard Worker inline size_t m() const { 63*4bdc9457SAndroid Build Coastguard Worker return this->m_; 64*4bdc9457SAndroid Build Coastguard Worker } 65*4bdc9457SAndroid Build Coastguard Worker n(size_t n)66*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& n(size_t n) { 67*4bdc9457SAndroid Build Coastguard Worker this->n_ = n; 68*4bdc9457SAndroid Build Coastguard Worker return *this; 69*4bdc9457SAndroid Build Coastguard Worker } 70*4bdc9457SAndroid Build Coastguard Worker n()71*4bdc9457SAndroid Build Coastguard Worker inline size_t n() const { 72*4bdc9457SAndroid Build Coastguard Worker return this->n_; 73*4bdc9457SAndroid Build Coastguard Worker } 74*4bdc9457SAndroid Build Coastguard Worker k(size_t k)75*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& k(size_t k) { 76*4bdc9457SAndroid Build Coastguard Worker this->k_ = k; 77*4bdc9457SAndroid Build Coastguard Worker return *this; 78*4bdc9457SAndroid Build Coastguard Worker } 79*4bdc9457SAndroid Build Coastguard Worker k()80*4bdc9457SAndroid Build Coastguard Worker inline size_t k() const { 81*4bdc9457SAndroid Build Coastguard Worker return this->k_; 82*4bdc9457SAndroid Build Coastguard Worker } 83*4bdc9457SAndroid Build Coastguard Worker ks(size_t ks)84*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& ks(size_t ks) { 85*4bdc9457SAndroid Build Coastguard Worker this->ks_ = ks; 86*4bdc9457SAndroid Build Coastguard Worker return *this; 87*4bdc9457SAndroid Build Coastguard Worker } 88*4bdc9457SAndroid Build Coastguard Worker ks()89*4bdc9457SAndroid Build Coastguard Worker inline size_t ks() const { 90*4bdc9457SAndroid Build Coastguard Worker return this->ks_; 91*4bdc9457SAndroid Build Coastguard Worker } 92*4bdc9457SAndroid Build Coastguard Worker packed_k()93*4bdc9457SAndroid Build Coastguard Worker inline size_t packed_k() const { 94*4bdc9457SAndroid Build Coastguard Worker return round_up_po2(k(), kr() * sr()); 95*4bdc9457SAndroid Build Coastguard Worker } 96*4bdc9457SAndroid Build Coastguard Worker packed_n()97*4bdc9457SAndroid Build Coastguard Worker inline size_t packed_n() const { 98*4bdc9457SAndroid Build Coastguard Worker return round_up(n(), nr()); 99*4bdc9457SAndroid Build Coastguard Worker } 100*4bdc9457SAndroid Build Coastguard Worker a_stride(size_t a_stride)101*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& a_stride(size_t a_stride) { 102*4bdc9457SAndroid Build Coastguard Worker this->a_stride_ = a_stride; 103*4bdc9457SAndroid Build Coastguard Worker return *this; 104*4bdc9457SAndroid Build Coastguard Worker } 105*4bdc9457SAndroid Build Coastguard Worker a_stride()106*4bdc9457SAndroid Build Coastguard Worker inline size_t a_stride() const { 107*4bdc9457SAndroid Build Coastguard Worker return this->a_stride_ == 0 ? k() : this->a_stride_; 108*4bdc9457SAndroid Build Coastguard Worker } 109*4bdc9457SAndroid Build Coastguard Worker cm_stride(size_t cm_stride)110*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& cm_stride(size_t cm_stride) { 111*4bdc9457SAndroid Build Coastguard Worker this->cm_stride_ = cm_stride; 112*4bdc9457SAndroid Build Coastguard Worker return *this; 113*4bdc9457SAndroid Build Coastguard Worker } 114*4bdc9457SAndroid Build Coastguard Worker cm_stride()115*4bdc9457SAndroid Build Coastguard Worker inline size_t cm_stride() const { 116*4bdc9457SAndroid Build Coastguard Worker return this->cm_stride_ == 0 ? cn_stride() * ((n() - 1) / nr()) + (n() - 1) % nr() + 1 : this->cm_stride_; 117*4bdc9457SAndroid Build Coastguard Worker } 118*4bdc9457SAndroid Build Coastguard Worker cn_stride(size_t cn_stride)119*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& cn_stride(size_t cn_stride) { 120*4bdc9457SAndroid Build Coastguard Worker this->cn_stride_ = cn_stride; 121*4bdc9457SAndroid Build Coastguard Worker return *this; 122*4bdc9457SAndroid Build Coastguard Worker } 123*4bdc9457SAndroid Build Coastguard Worker cn_stride()124*4bdc9457SAndroid Build Coastguard Worker inline size_t cn_stride() const { 125*4bdc9457SAndroid Build Coastguard Worker return this->cn_stride_ == 0 ? nr() : this->cn_stride_; 126*4bdc9457SAndroid Build Coastguard Worker } 127*4bdc9457SAndroid Build Coastguard Worker a_zero_point(uint8_t a_zero_point)128*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& a_zero_point(uint8_t a_zero_point) { 129*4bdc9457SAndroid Build Coastguard Worker this->a_zero_point_ = a_zero_point; 130*4bdc9457SAndroid Build Coastguard Worker return *this; 131*4bdc9457SAndroid Build Coastguard Worker } 132*4bdc9457SAndroid Build Coastguard Worker a_zero_point()133*4bdc9457SAndroid Build Coastguard Worker inline uint8_t a_zero_point() const { 134*4bdc9457SAndroid Build Coastguard Worker return this->a_zero_point_; 135*4bdc9457SAndroid Build Coastguard Worker } 136*4bdc9457SAndroid Build Coastguard Worker b_zero_point(uint8_t b_zero_point)137*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& b_zero_point(uint8_t b_zero_point) { 138*4bdc9457SAndroid Build Coastguard Worker this->b_zero_point_ = b_zero_point; 139*4bdc9457SAndroid Build Coastguard Worker return *this; 140*4bdc9457SAndroid Build Coastguard Worker } 141*4bdc9457SAndroid Build Coastguard Worker b_zero_point()142*4bdc9457SAndroid Build Coastguard Worker inline uint8_t b_zero_point() const { 143*4bdc9457SAndroid Build Coastguard Worker return this->b_zero_point_; 144*4bdc9457SAndroid Build Coastguard Worker } 145*4bdc9457SAndroid Build Coastguard Worker qmin(uint8_t qmin)146*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& qmin(uint8_t qmin) { 147*4bdc9457SAndroid Build Coastguard Worker this->qmin_ = qmin; 148*4bdc9457SAndroid Build Coastguard Worker return *this; 149*4bdc9457SAndroid Build Coastguard Worker } 150*4bdc9457SAndroid Build Coastguard Worker qmin()151*4bdc9457SAndroid Build Coastguard Worker inline uint8_t qmin() const { 152*4bdc9457SAndroid Build Coastguard Worker return this->qmin_; 153*4bdc9457SAndroid Build Coastguard Worker } 154*4bdc9457SAndroid Build Coastguard Worker qmax(uint8_t qmax)155*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& qmax(uint8_t qmax) { 156*4bdc9457SAndroid Build Coastguard Worker this->qmax_ = qmax; 157*4bdc9457SAndroid Build Coastguard Worker return *this; 158*4bdc9457SAndroid Build Coastguard Worker } 159*4bdc9457SAndroid Build Coastguard Worker qmax()160*4bdc9457SAndroid Build Coastguard Worker inline uint8_t qmax() const { 161*4bdc9457SAndroid Build Coastguard Worker return this->qmax_; 162*4bdc9457SAndroid Build Coastguard Worker } 163*4bdc9457SAndroid Build Coastguard Worker a_offset(size_t a_offset)164*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& a_offset(size_t a_offset) { 165*4bdc9457SAndroid Build Coastguard Worker this->a_offset_ = a_offset; 166*4bdc9457SAndroid Build Coastguard Worker return *this; 167*4bdc9457SAndroid Build Coastguard Worker } 168*4bdc9457SAndroid Build Coastguard Worker a_offset()169*4bdc9457SAndroid Build Coastguard Worker inline size_t a_offset() const { 170*4bdc9457SAndroid Build Coastguard Worker return this->a_offset_; 171*4bdc9457SAndroid Build Coastguard Worker } 172*4bdc9457SAndroid Build Coastguard Worker zero_index(size_t zero_index)173*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& zero_index(size_t zero_index) { 174*4bdc9457SAndroid Build Coastguard Worker this->zero_index_ = zero_index; 175*4bdc9457SAndroid Build Coastguard Worker return *this; 176*4bdc9457SAndroid Build Coastguard Worker } 177*4bdc9457SAndroid Build Coastguard Worker zero_index()178*4bdc9457SAndroid Build Coastguard Worker inline size_t zero_index() const { 179*4bdc9457SAndroid Build Coastguard Worker return this->zero_index_; 180*4bdc9457SAndroid Build Coastguard Worker } 181*4bdc9457SAndroid Build Coastguard Worker extended_weights(bool extended_weights)182*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& extended_weights(bool extended_weights) { 183*4bdc9457SAndroid Build Coastguard Worker this->extended_weights_ = extended_weights; 184*4bdc9457SAndroid Build Coastguard Worker return *this; 185*4bdc9457SAndroid Build Coastguard Worker } 186*4bdc9457SAndroid Build Coastguard Worker extended_weights()187*4bdc9457SAndroid Build Coastguard Worker inline bool extended_weights() const { 188*4bdc9457SAndroid Build Coastguard Worker return this->extended_weights_; 189*4bdc9457SAndroid Build Coastguard Worker } 190*4bdc9457SAndroid Build Coastguard Worker iterations(size_t iterations)191*4bdc9457SAndroid Build Coastguard Worker inline GemmMicrokernelTester& iterations(size_t iterations) { 192*4bdc9457SAndroid Build Coastguard Worker this->iterations_ = iterations; 193*4bdc9457SAndroid Build Coastguard Worker return *this; 194*4bdc9457SAndroid Build Coastguard Worker } 195*4bdc9457SAndroid Build Coastguard Worker iterations()196*4bdc9457SAndroid Build Coastguard Worker inline size_t iterations() const { 197*4bdc9457SAndroid Build Coastguard Worker return this->iterations_; 198*4bdc9457SAndroid Build Coastguard Worker } 199*4bdc9457SAndroid Build Coastguard Worker 200*4bdc9457SAndroid Build Coastguard Worker void Test( 201*4bdc9457SAndroid Build Coastguard Worker xnn_qu8_gemm_minmax_ukernel_function gemm, 202*4bdc9457SAndroid Build Coastguard Worker xnn_init_qu8_conv_minmax_params_fn init_params, 203*4bdc9457SAndroid Build Coastguard Worker xnn_qu8_requantize_fn requantize) const; 204*4bdc9457SAndroid Build Coastguard Worker 205*4bdc9457SAndroid Build Coastguard Worker void Test( 206*4bdc9457SAndroid Build Coastguard Worker xnn_qu8_igemm_minmax_ukernel_function igemm, 207*4bdc9457SAndroid Build Coastguard Worker xnn_init_qu8_conv_minmax_params_fn init_params, 208*4bdc9457SAndroid Build Coastguard Worker xnn_qu8_requantize_fn requantize); 209*4bdc9457SAndroid Build Coastguard Worker 210*4bdc9457SAndroid Build Coastguard Worker void Test( 211*4bdc9457SAndroid Build Coastguard Worker xnn_qc8_gemm_minmax_ukernel_function gemm, 212*4bdc9457SAndroid Build Coastguard Worker xnn_init_qc8_conv_minmax_params_fn init_params, 213*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 214*4bdc9457SAndroid Build Coastguard Worker 215*4bdc9457SAndroid Build Coastguard Worker void Test( 216*4bdc9457SAndroid Build Coastguard Worker xnn_qc8_igemm_minmax_ukernel_function igemm, 217*4bdc9457SAndroid Build Coastguard Worker xnn_init_qc8_conv_minmax_params_fn init_params, 218*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 219*4bdc9457SAndroid Build Coastguard Worker 220*4bdc9457SAndroid Build Coastguard Worker void Test( 221*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_gemm_minmax_ukernel_function gemm, 222*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params, 223*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 224*4bdc9457SAndroid Build Coastguard Worker 225*4bdc9457SAndroid Build Coastguard Worker void Test( 226*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_igemm_minmax_ukernel_function igemm, 227*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params, 228*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 229*4bdc9457SAndroid Build Coastguard Worker 230*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_bf16_gemm_minmax_ukernel_function gemm_minmax, xnn_init_bf16_minmax_params_fn init_params) const; 231*4bdc9457SAndroid Build Coastguard Worker 232*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f16_gemm_minmax_ukernel_function gemm_minmax, xnn_init_f16_minmax_params_fn init_params) const; 233*4bdc9457SAndroid Build Coastguard Worker 234*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f16_igemm_minmax_ukernel_function igemm_minmax, xnn_init_f16_minmax_params_fn init_params) const; 235*4bdc9457SAndroid Build Coastguard Worker 236*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_ppmm_minmax_ukernel_function ppmm_minmax, xnn_init_f32_minmax_params_fn init_params) const; 237*4bdc9457SAndroid Build Coastguard Worker 238*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_gemm_ukernel_function gemm) const; 239*4bdc9457SAndroid Build Coastguard Worker 240*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_gemm_relu_ukernel_function gemm_relu) const; 241*4bdc9457SAndroid Build Coastguard Worker 242*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_gemm_minmax_ukernel_function gemm_minmax, xnn_init_f32_minmax_params_fn init_params) const; 243*4bdc9457SAndroid Build Coastguard Worker 244*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_gemminc_minmax_ukernel_function gemminc, xnn_init_f32_minmax_params_fn init_params) const; 245*4bdc9457SAndroid Build Coastguard Worker 246*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_igemm_ukernel_function igemm) const; 247*4bdc9457SAndroid Build Coastguard Worker 248*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_igemm_relu_ukernel_function igemm_relu) const; 249*4bdc9457SAndroid Build Coastguard Worker 250*4bdc9457SAndroid Build Coastguard Worker void Test(xnn_f32_igemm_minmax_ukernel_function igemm_minmax, xnn_init_f32_minmax_params_fn init_params) const; 251*4bdc9457SAndroid Build Coastguard Worker 252*4bdc9457SAndroid Build Coastguard Worker #if XNN_PLATFORM_JIT 253*4bdc9457SAndroid Build Coastguard Worker void Test( 254*4bdc9457SAndroid Build Coastguard Worker xnn_jit_gemm_code_generator_function gemm_generator, 255*4bdc9457SAndroid Build Coastguard Worker xnn_init_f32_minmax_params_fn init_params) const; 256*4bdc9457SAndroid Build Coastguard Worker void Test( 257*4bdc9457SAndroid Build Coastguard Worker xnn_jit_igemm_code_generator_function igemm_generator, 258*4bdc9457SAndroid Build Coastguard Worker xnn_init_f32_minmax_params_fn init_params) const; 259*4bdc9457SAndroid Build Coastguard Worker void Test( 260*4bdc9457SAndroid Build Coastguard Worker xnn_jit_gemm_code_generator_function gemm_generator, 261*4bdc9457SAndroid Build Coastguard Worker xnn_init_qc8_conv_minmax_params_fn init_params, 262*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 263*4bdc9457SAndroid Build Coastguard Worker void Test( 264*4bdc9457SAndroid Build Coastguard Worker xnn_jit_igemm_code_generator_function igemm_generator, 265*4bdc9457SAndroid Build Coastguard Worker xnn_init_qc8_conv_minmax_params_fn init_params, 266*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 267*4bdc9457SAndroid Build Coastguard Worker void Test( 268*4bdc9457SAndroid Build Coastguard Worker xnn_jit_gemm_code_generator_function gemm_generator, 269*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params, 270*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 271*4bdc9457SAndroid Build Coastguard Worker void Test( 272*4bdc9457SAndroid Build Coastguard Worker xnn_jit_igemm_code_generator_function igemm_generator, 273*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params, 274*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_requantize_fn requantize) const; 275*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_PLATFORM_JIT 276*4bdc9457SAndroid Build Coastguard Worker 277*4bdc9457SAndroid Build Coastguard Worker private: 278*4bdc9457SAndroid Build Coastguard Worker size_t mr_{1}; 279*4bdc9457SAndroid Build Coastguard Worker size_t nr_{1}; 280*4bdc9457SAndroid Build Coastguard Worker size_t kr_{1}; 281*4bdc9457SAndroid Build Coastguard Worker size_t sr_{1}; 282*4bdc9457SAndroid Build Coastguard Worker size_t m_{1}; 283*4bdc9457SAndroid Build Coastguard Worker size_t n_{1}; 284*4bdc9457SAndroid Build Coastguard Worker size_t k_{1}; 285*4bdc9457SAndroid Build Coastguard Worker size_t ks_{1}; 286*4bdc9457SAndroid Build Coastguard Worker size_t a_stride_{0}; 287*4bdc9457SAndroid Build Coastguard Worker size_t cm_stride_{0}; 288*4bdc9457SAndroid Build Coastguard Worker size_t cn_stride_{0}; 289*4bdc9457SAndroid Build Coastguard Worker uint8_t a_zero_point_{127}; 290*4bdc9457SAndroid Build Coastguard Worker uint8_t b_zero_point_{127}; 291*4bdc9457SAndroid Build Coastguard Worker uint8_t qmin_{0}; 292*4bdc9457SAndroid Build Coastguard Worker uint8_t qmax_{255}; 293*4bdc9457SAndroid Build Coastguard Worker size_t a_offset_{0}; 294*4bdc9457SAndroid Build Coastguard Worker size_t zero_index_{SIZE_MAX}; 295*4bdc9457SAndroid Build Coastguard Worker bool extended_weights_{false}; 296*4bdc9457SAndroid Build Coastguard Worker size_t iterations_{15}; 297*4bdc9457SAndroid Build Coastguard Worker }; 298