xref: /aosp_15_r20/external/XNNPACK/test/gemm-microkernel-tester.h (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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