xref: /aosp_15_r20/external/XNNPACK/src/xnnpack/microfnptr.h (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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 <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 #include <xnnpack/microparams.h>
13*4bdc9457SAndroid Build Coastguard Worker 
14*4bdc9457SAndroid Build Coastguard Worker 
15*4bdc9457SAndroid Build Coastguard Worker /****************** Microkernel pointers for dense inference *****************/
16*4bdc9457SAndroid Build Coastguard Worker 
17*4bdc9457SAndroid Build Coastguard Worker // CONV-HWC: direct CONVolution in HWC layout
18*4bdc9457SAndroid Build Coastguard Worker 
19*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_conv_hwc_ukernel_function)(
20*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
21*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
22*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_start,
23*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_end,
24*4bdc9457SAndroid Build Coastguard Worker     const void* input,
25*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
26*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
27*4bdc9457SAndroid Build Coastguard Worker     void* output,
28*4bdc9457SAndroid Build Coastguard Worker     size_t input_padding_top,
29*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
30*4bdc9457SAndroid Build Coastguard Worker     size_t output_height_stride,
31*4bdc9457SAndroid Build Coastguard Worker     size_t output_width_stride,
32*4bdc9457SAndroid Build Coastguard Worker     const void* params);
33*4bdc9457SAndroid Build Coastguard Worker 
34*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_conv_hwc_ukernel_function)(
35*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
36*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
37*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_start,
38*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_end,
39*4bdc9457SAndroid Build Coastguard Worker     const float* input,
40*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
41*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
42*4bdc9457SAndroid Build Coastguard Worker     float* output,
43*4bdc9457SAndroid Build Coastguard Worker     size_t input_padding_top,
44*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
45*4bdc9457SAndroid Build Coastguard Worker     size_t output_height_stride,
46*4bdc9457SAndroid Build Coastguard Worker     size_t output_width_stride,
47*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
48*4bdc9457SAndroid Build Coastguard Worker 
49*4bdc9457SAndroid Build Coastguard Worker // GEMM: GEneral Matrix Multiplication without activations
50*4bdc9457SAndroid Build Coastguard Worker 
51*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_gemm_ukernel_function)(
52*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
53*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
54*4bdc9457SAndroid Build Coastguard Worker     size_t k,
55*4bdc9457SAndroid Build Coastguard Worker     const void* a,
56*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
57*4bdc9457SAndroid Build Coastguard Worker     const void* w,
58*4bdc9457SAndroid Build Coastguard Worker     void* c,
59*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
60*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
61*4bdc9457SAndroid Build Coastguard Worker     const void* params);
62*4bdc9457SAndroid Build Coastguard Worker 
63*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gemm_ukernel_function)(
64*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
65*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
66*4bdc9457SAndroid Build Coastguard Worker     size_t k,
67*4bdc9457SAndroid Build Coastguard Worker     const float* a,
68*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
69*4bdc9457SAndroid Build Coastguard Worker     const float* w,
70*4bdc9457SAndroid Build Coastguard Worker     float* c,
71*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
72*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
73*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_default_params* params);
74*4bdc9457SAndroid Build Coastguard Worker 
75*4bdc9457SAndroid Build Coastguard Worker // GEMM: GEneral Matrix Multiplication with ReLU activation
76*4bdc9457SAndroid Build Coastguard Worker 
77*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gemm_relu_ukernel_function)(
78*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
79*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
80*4bdc9457SAndroid Build Coastguard Worker     size_t k,
81*4bdc9457SAndroid Build Coastguard Worker     const float* a,
82*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
83*4bdc9457SAndroid Build Coastguard Worker     const float* w,
84*4bdc9457SAndroid Build Coastguard Worker     float* c,
85*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
86*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
87*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_relu_params* params);
88*4bdc9457SAndroid Build Coastguard Worker 
89*4bdc9457SAndroid Build Coastguard Worker // GEMM: GEneral Matrix Multiplication with Min+Max activation
90*4bdc9457SAndroid Build Coastguard Worker 
91*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_bf16_gemm_minmax_ukernel_function)(
92*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
93*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
94*4bdc9457SAndroid Build Coastguard Worker     size_t k,
95*4bdc9457SAndroid Build Coastguard Worker     const void* a,
96*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
97*4bdc9457SAndroid Build Coastguard Worker     const void* w,
98*4bdc9457SAndroid Build Coastguard Worker     void* c,
99*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
100*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
101*4bdc9457SAndroid Build Coastguard Worker     const union xnn_bf16_minmax_params* params);
102*4bdc9457SAndroid Build Coastguard Worker 
103*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_gemm_minmax_ukernel_function)(
104*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
105*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
106*4bdc9457SAndroid Build Coastguard Worker     size_t k,
107*4bdc9457SAndroid Build Coastguard Worker     const void* a,
108*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
109*4bdc9457SAndroid Build Coastguard Worker     const void* w,
110*4bdc9457SAndroid Build Coastguard Worker     void* c,
111*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
112*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
113*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
114*4bdc9457SAndroid Build Coastguard Worker 
115*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gemm_minmax_ukernel_function)(
116*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
117*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
118*4bdc9457SAndroid Build Coastguard Worker     size_t k,
119*4bdc9457SAndroid Build Coastguard Worker     const float* a,
120*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
121*4bdc9457SAndroid Build Coastguard Worker     const float* w,
122*4bdc9457SAndroid Build Coastguard Worker     float* c,
123*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
124*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
125*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
126*4bdc9457SAndroid Build Coastguard Worker 
127*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qc8_gemm_minmax_ukernel_function)(
128*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
129*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
130*4bdc9457SAndroid Build Coastguard Worker     size_t k,
131*4bdc9457SAndroid Build Coastguard Worker     const int8_t* a,
132*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
133*4bdc9457SAndroid Build Coastguard Worker     const void* w,
134*4bdc9457SAndroid Build Coastguard Worker     int8_t* c,
135*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
136*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
137*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qc8_conv_minmax_params* params);
138*4bdc9457SAndroid Build Coastguard Worker 
139*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_gemm_minmax_ukernel_function)(
140*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
141*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
142*4bdc9457SAndroid Build Coastguard Worker     size_t k,
143*4bdc9457SAndroid Build Coastguard Worker     const int8_t* a,
144*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
145*4bdc9457SAndroid Build Coastguard Worker     const void* w,
146*4bdc9457SAndroid Build Coastguard Worker     int8_t* c,
147*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
148*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
149*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_conv_minmax_params* params);
150*4bdc9457SAndroid Build Coastguard Worker 
151*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_gemm_minmax_ukernel_function)(
152*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
153*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
154*4bdc9457SAndroid Build Coastguard Worker     size_t k,
155*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* a,
156*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
157*4bdc9457SAndroid Build Coastguard Worker     const void* w,
158*4bdc9457SAndroid Build Coastguard Worker     uint8_t* c,
159*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
160*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
161*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_conv_minmax_params* params);
162*4bdc9457SAndroid Build Coastguard Worker 
163*4bdc9457SAndroid Build Coastguard Worker // GEMMINC: GEMM INCremental with Min+Max activation
164*4bdc9457SAndroid Build Coastguard Worker 
165*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gemminc_minmax_ukernel_function)(
166*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
167*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
168*4bdc9457SAndroid Build Coastguard Worker     size_t k,
169*4bdc9457SAndroid Build Coastguard Worker     const float* a,
170*4bdc9457SAndroid Build Coastguard Worker     size_t a_stride,
171*4bdc9457SAndroid Build Coastguard Worker     const float* w,
172*4bdc9457SAndroid Build Coastguard Worker     float* c,
173*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
174*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
175*4bdc9457SAndroid Build Coastguard Worker     const float* acc,
176*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
177*4bdc9457SAndroid Build Coastguard Worker 
178*4bdc9457SAndroid Build Coastguard Worker // IGEMM: Indirect GEMM without activation
179*4bdc9457SAndroid Build Coastguard Worker 
180*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_igemm_ukernel_function)(
181*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
182*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
183*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
184*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
185*4bdc9457SAndroid Build Coastguard Worker     const void** a,
186*4bdc9457SAndroid Build Coastguard Worker     const void* w,
187*4bdc9457SAndroid Build Coastguard Worker     void* c,
188*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
189*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
190*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
191*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
192*4bdc9457SAndroid Build Coastguard Worker     const void* params);
193*4bdc9457SAndroid Build Coastguard Worker 
194*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_igemm_ukernel_function)(
195*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
196*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
197*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
198*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
199*4bdc9457SAndroid Build Coastguard Worker     const float** a,
200*4bdc9457SAndroid Build Coastguard Worker     const float* w,
201*4bdc9457SAndroid Build Coastguard Worker     float* c,
202*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
203*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
204*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
205*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
206*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_default_params* params);
207*4bdc9457SAndroid Build Coastguard Worker 
208*4bdc9457SAndroid Build Coastguard Worker // IGEMM: Indirect GEMM with ReLU activation
209*4bdc9457SAndroid Build Coastguard Worker 
210*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_igemm_relu_ukernel_function)(
211*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
212*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
213*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
214*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
215*4bdc9457SAndroid Build Coastguard Worker     const float** a,
216*4bdc9457SAndroid Build Coastguard Worker     const float* w,
217*4bdc9457SAndroid Build Coastguard Worker     float* c,
218*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
219*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
220*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
221*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
222*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_relu_params* params);
223*4bdc9457SAndroid Build Coastguard Worker 
224*4bdc9457SAndroid Build Coastguard Worker // IGEMM: Indirect GEMM with Min+Max activation
225*4bdc9457SAndroid Build Coastguard Worker 
226*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_igemm_minmax_ukernel_function)(
227*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
228*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
229*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
230*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
231*4bdc9457SAndroid Build Coastguard Worker     const void** a,
232*4bdc9457SAndroid Build Coastguard Worker     const void* w,
233*4bdc9457SAndroid Build Coastguard Worker     void* c,
234*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
235*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
236*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
237*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
238*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
239*4bdc9457SAndroid Build Coastguard Worker 
240*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_igemm_minmax_ukernel_function)(
241*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
242*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
243*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
244*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
245*4bdc9457SAndroid Build Coastguard Worker     const float** a,
246*4bdc9457SAndroid Build Coastguard Worker     const float* w,
247*4bdc9457SAndroid Build Coastguard Worker     float* c,
248*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
249*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
250*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
251*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
252*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
253*4bdc9457SAndroid Build Coastguard Worker 
254*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qc8_igemm_minmax_ukernel_function)(
255*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
256*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
257*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
258*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
259*4bdc9457SAndroid Build Coastguard Worker     const int8_t** a,
260*4bdc9457SAndroid Build Coastguard Worker     const void* w,
261*4bdc9457SAndroid Build Coastguard Worker     int8_t* c,
262*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
263*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
264*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
265*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
266*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qc8_conv_minmax_params* params);
267*4bdc9457SAndroid Build Coastguard Worker 
268*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_igemm_minmax_ukernel_function)(
269*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
270*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
271*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
272*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
273*4bdc9457SAndroid Build Coastguard Worker     const int8_t** a,
274*4bdc9457SAndroid Build Coastguard Worker     const void* w,
275*4bdc9457SAndroid Build Coastguard Worker     int8_t* c,
276*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
277*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
278*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
279*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
280*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_conv_minmax_params* params);
281*4bdc9457SAndroid Build Coastguard Worker 
282*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_igemm_minmax_ukernel_function)(
283*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
284*4bdc9457SAndroid Build Coastguard Worker     size_t nr,
285*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
286*4bdc9457SAndroid Build Coastguard Worker     size_t ks,
287*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** a,
288*4bdc9457SAndroid Build Coastguard Worker     const void* w,
289*4bdc9457SAndroid Build Coastguard Worker     uint8_t* c,
290*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
291*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
292*4bdc9457SAndroid Build Coastguard Worker     size_t a_offset,
293*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
294*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_conv_minmax_params* params);
295*4bdc9457SAndroid Build Coastguard Worker 
296*4bdc9457SAndroid Build Coastguard Worker // PPMM: Pre-Packed Matrix Multiplication)
297*4bdc9457SAndroid Build Coastguard Worker 
298*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_ppmm_ukernel_function)(
299*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
300*4bdc9457SAndroid Build Coastguard Worker     size_t nc,
301*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
302*4bdc9457SAndroid Build Coastguard Worker     const void* a,
303*4bdc9457SAndroid Build Coastguard Worker     const void* w,
304*4bdc9457SAndroid Build Coastguard Worker     void* c,
305*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
306*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
307*4bdc9457SAndroid Build Coastguard Worker     const void* params);
308*4bdc9457SAndroid Build Coastguard Worker 
309*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_ppmm_ukernel_function)(
310*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
311*4bdc9457SAndroid Build Coastguard Worker     size_t nc,
312*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
313*4bdc9457SAndroid Build Coastguard Worker     const void* a,
314*4bdc9457SAndroid Build Coastguard Worker     const void* w,
315*4bdc9457SAndroid Build Coastguard Worker     void* c,
316*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
317*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
318*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
319*4bdc9457SAndroid Build Coastguard Worker 
320*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_ppmm_minmax_ukernel_function)(
321*4bdc9457SAndroid Build Coastguard Worker     size_t mr,
322*4bdc9457SAndroid Build Coastguard Worker     size_t nc,
323*4bdc9457SAndroid Build Coastguard Worker     size_t kc,
324*4bdc9457SAndroid Build Coastguard Worker     const float* a,
325*4bdc9457SAndroid Build Coastguard Worker     const float* w,
326*4bdc9457SAndroid Build Coastguard Worker     float* c,
327*4bdc9457SAndroid Build Coastguard Worker     size_t cm_stride,
328*4bdc9457SAndroid Build Coastguard Worker     size_t cn_stride,
329*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
330*4bdc9457SAndroid Build Coastguard Worker 
331*4bdc9457SAndroid Build Coastguard Worker // DWCONV: DepthWise CONVolution single-pass without activation
332*4bdc9457SAndroid Build Coastguard Worker 
333*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_dwconv_unipass_ukernel_function)(
334*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
335*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
336*4bdc9457SAndroid Build Coastguard Worker     const void** input,
337*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
338*4bdc9457SAndroid Build Coastguard Worker     void* output,
339*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
340*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
341*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
342*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
343*4bdc9457SAndroid Build Coastguard Worker     const void* params);
344*4bdc9457SAndroid Build Coastguard Worker 
345*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_dwconv_unipass_ukernel_function)(
346*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
347*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
348*4bdc9457SAndroid Build Coastguard Worker     const float** input,
349*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
350*4bdc9457SAndroid Build Coastguard Worker     float* output,
351*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
352*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
353*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
354*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
355*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_default_params* params);
356*4bdc9457SAndroid Build Coastguard Worker 
357*4bdc9457SAndroid Build Coastguard Worker // DWCONV: DepthWise CONVolution single-pass with Min+Max activation
358*4bdc9457SAndroid Build Coastguard Worker 
359*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_dwconv_minmax_unipass_ukernel_function)(
360*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
361*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
362*4bdc9457SAndroid Build Coastguard Worker     const void** input,
363*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
364*4bdc9457SAndroid Build Coastguard Worker     void* output,
365*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
366*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
367*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
368*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
369*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
370*4bdc9457SAndroid Build Coastguard Worker 
371*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_dwconv_minmax_unipass_ukernel_function)(
372*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
373*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
374*4bdc9457SAndroid Build Coastguard Worker     const float** input,
375*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
376*4bdc9457SAndroid Build Coastguard Worker     float* output,
377*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
378*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
379*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
380*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
381*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
382*4bdc9457SAndroid Build Coastguard Worker 
383*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qc8_dwconv_minmax_unipass_ukernel_function)(
384*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
385*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
386*4bdc9457SAndroid Build Coastguard Worker     const int8_t** input,
387*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
388*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
389*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
390*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
391*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
392*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
393*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qc8_conv_minmax_params* params);
394*4bdc9457SAndroid Build Coastguard Worker 
395*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_dwconv_minmax_unipass_ukernel_function)(
396*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
397*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
398*4bdc9457SAndroid Build Coastguard Worker     const int8_t** input,
399*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
400*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
401*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
402*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
403*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
404*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
405*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_conv_minmax_params* params);
406*4bdc9457SAndroid Build Coastguard Worker 
407*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_dwconv_minmax_unipass_ukernel_function)(
408*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
409*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
410*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** input,
411*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
412*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
413*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
414*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
415*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
416*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
417*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_conv_minmax_params* params);
418*4bdc9457SAndroid Build Coastguard Worker 
419*4bdc9457SAndroid Build Coastguard Worker // DWCONV: DepthWise CONVolution multi-pass without activation
420*4bdc9457SAndroid Build Coastguard Worker 
421*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_dwconv_multipass_ukernel_function)(
422*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
423*4bdc9457SAndroid Build Coastguard Worker     size_t output_width,
424*4bdc9457SAndroid Build Coastguard Worker     const void** input,
425*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
426*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
427*4bdc9457SAndroid Build Coastguard Worker     void* output,
428*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
429*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
430*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
431*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
432*4bdc9457SAndroid Build Coastguard Worker     const void* params);
433*4bdc9457SAndroid Build Coastguard Worker 
434*4bdc9457SAndroid Build Coastguard Worker // VMULCADDC: Vector MULtiply-by-Constant, ADD-Constant
435*4bdc9457SAndroid Build Coastguard Worker 
436*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_vmulcaddc_ukernel_function)(
437*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
438*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
439*4bdc9457SAndroid Build Coastguard Worker     const void* input,
440*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
441*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
442*4bdc9457SAndroid Build Coastguard Worker     void* output,
443*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
444*4bdc9457SAndroid Build Coastguard Worker     const void* params);
445*4bdc9457SAndroid Build Coastguard Worker 
446*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vmulcaddc_ukernel_function)(
447*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
448*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
449*4bdc9457SAndroid Build Coastguard Worker     const void* input,
450*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
451*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
452*4bdc9457SAndroid Build Coastguard Worker     void* output,
453*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
454*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
455*4bdc9457SAndroid Build Coastguard Worker 
456*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vmulcaddc_ukernel_function)(
457*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
458*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
459*4bdc9457SAndroid Build Coastguard Worker     const float* input,
460*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
461*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
462*4bdc9457SAndroid Build Coastguard Worker     float* output,
463*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
464*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
465*4bdc9457SAndroid Build Coastguard Worker 
466*4bdc9457SAndroid Build Coastguard Worker // PRELU: Parametric RELU
467*4bdc9457SAndroid Build Coastguard Worker 
468*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_prelu_ukernel_function)(
469*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
470*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
471*4bdc9457SAndroid Build Coastguard Worker     const void* input,
472*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
473*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
474*4bdc9457SAndroid Build Coastguard Worker     void* output,
475*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride);
476*4bdc9457SAndroid Build Coastguard Worker 
477*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_prelu_ukernel_function)(
478*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
479*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
480*4bdc9457SAndroid Build Coastguard Worker     const void* input,
481*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
482*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
483*4bdc9457SAndroid Build Coastguard Worker     void* output,
484*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride);
485*4bdc9457SAndroid Build Coastguard Worker 
486*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_prelu_ukernel_function)(
487*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
488*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
489*4bdc9457SAndroid Build Coastguard Worker     const float* input,
490*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
491*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
492*4bdc9457SAndroid Build Coastguard Worker     float* output,
493*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride);
494*4bdc9457SAndroid Build Coastguard Worker 
495*4bdc9457SAndroid Build Coastguard Worker // IBILINEAR: Indirect BILINEAR interpolation
496*4bdc9457SAndroid Build Coastguard Worker 
497*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_ibilinear_ukernel_function)(
498*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
499*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
500*4bdc9457SAndroid Build Coastguard Worker     const void** input,
501*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
502*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
503*4bdc9457SAndroid Build Coastguard Worker     void* output,
504*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
505*4bdc9457SAndroid Build Coastguard Worker 
506*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_ibilinear_ukernel_function)(
507*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
508*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
509*4bdc9457SAndroid Build Coastguard Worker     const void** input,
510*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
511*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
512*4bdc9457SAndroid Build Coastguard Worker     void* output,
513*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
514*4bdc9457SAndroid Build Coastguard Worker 
515*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_ibilinear_ukernel_function)(
516*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
517*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
518*4bdc9457SAndroid Build Coastguard Worker     const float** input,
519*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
520*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
521*4bdc9457SAndroid Build Coastguard Worker     float* output,
522*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
523*4bdc9457SAndroid Build Coastguard Worker 
524*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s8_ibilinear_ukernel_function)(
525*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
526*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
527*4bdc9457SAndroid Build Coastguard Worker     const int8_t** input,
528*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
529*4bdc9457SAndroid Build Coastguard Worker     const int16_t* weights,
530*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
531*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
532*4bdc9457SAndroid Build Coastguard Worker 
533*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u8_ibilinear_ukernel_function)(
534*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
535*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
536*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** input,
537*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
538*4bdc9457SAndroid Build Coastguard Worker     const int16_t* weights,
539*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
540*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
541*4bdc9457SAndroid Build Coastguard Worker 
542*4bdc9457SAndroid Build Coastguard Worker // GAVGPOOL: Global AVeraGe POOLing single-pass
543*4bdc9457SAndroid Build Coastguard Worker 
544*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_gavgpool_unipass_ukernel_function)(
545*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
546*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
547*4bdc9457SAndroid Build Coastguard Worker     const void* input,
548*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
549*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
550*4bdc9457SAndroid Build Coastguard Worker     void* output,
551*4bdc9457SAndroid Build Coastguard Worker     const void* params);
552*4bdc9457SAndroid Build Coastguard Worker 
553*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_gavgpool_minmax_unipass_ukernel_function)(
554*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
555*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
556*4bdc9457SAndroid Build Coastguard Worker     const void* input,
557*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
558*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
559*4bdc9457SAndroid Build Coastguard Worker     void* output,
560*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_scaleminmax_params* params);
561*4bdc9457SAndroid Build Coastguard Worker 
562*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gavgpool_minmax_unipass_ukernel_function)(
563*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
564*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
565*4bdc9457SAndroid Build Coastguard Worker     const float* input,
566*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
567*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
568*4bdc9457SAndroid Build Coastguard Worker     float* output,
569*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_scaleminmax_params* params);
570*4bdc9457SAndroid Build Coastguard Worker 
571*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_gavgpool_minmax_unipass_ukernel_function)(
572*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
573*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
574*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
575*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
576*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
577*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
578*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_avgpool_minmax_params* params);
579*4bdc9457SAndroid Build Coastguard Worker 
580*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_gavgpool_minmax_unipass_ukernel_function)(
581*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
582*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
583*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
584*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
585*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
586*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
587*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_avgpool_minmax_params* params);
588*4bdc9457SAndroid Build Coastguard Worker 
589*4bdc9457SAndroid Build Coastguard Worker // GAVGPOOL: Global AVeraGe POOLing multi-pass
590*4bdc9457SAndroid Build Coastguard Worker 
591*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_gavgpool_multipass_ukernel_function)(
592*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
593*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
594*4bdc9457SAndroid Build Coastguard Worker     const void* input,
595*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
596*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
597*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
598*4bdc9457SAndroid Build Coastguard Worker     void* output,
599*4bdc9457SAndroid Build Coastguard Worker     const void* params);
600*4bdc9457SAndroid Build Coastguard Worker 
601*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_gavgpool_minmax_multipass_ukernel_function)(
602*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
603*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
604*4bdc9457SAndroid Build Coastguard Worker     const void* input,
605*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
606*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
607*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
608*4bdc9457SAndroid Build Coastguard Worker     void* output,
609*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_scaleminmax_params* params);
610*4bdc9457SAndroid Build Coastguard Worker 
611*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gavgpool_minmax_multipass_ukernel_function)(
612*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
613*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
614*4bdc9457SAndroid Build Coastguard Worker     const float* input,
615*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
616*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
617*4bdc9457SAndroid Build Coastguard Worker     float* buffer,
618*4bdc9457SAndroid Build Coastguard Worker     float* output,
619*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_scaleminmax_params* params);
620*4bdc9457SAndroid Build Coastguard Worker 
621*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_gavgpool_minmax_multipass_ukernel_function)(
622*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
623*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
624*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
625*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
626*4bdc9457SAndroid Build Coastguard Worker     const int8_t* zero,
627*4bdc9457SAndroid Build Coastguard Worker     int32_t* buffer,
628*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
629*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_avgpool_minmax_params* params);
630*4bdc9457SAndroid Build Coastguard Worker 
631*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_gavgpool_minmax_multipass_ukernel_function)(
632*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
633*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
634*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
635*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
636*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
637*4bdc9457SAndroid Build Coastguard Worker     int32_t* buffer,
638*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
639*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_avgpool_minmax_params* params);
640*4bdc9457SAndroid Build Coastguard Worker 
641*4bdc9457SAndroid Build Coastguard Worker // AVGPOOL: AVeraGe POOLing single-pass
642*4bdc9457SAndroid Build Coastguard Worker 
643*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_avgpool_unipass_ukernel_function)(
644*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
645*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
646*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
647*4bdc9457SAndroid Build Coastguard Worker     const void** input,
648*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
649*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
650*4bdc9457SAndroid Build Coastguard Worker     void* output,
651*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
652*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
653*4bdc9457SAndroid Build Coastguard Worker     const void* params);
654*4bdc9457SAndroid Build Coastguard Worker 
655*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_avgpool_minmax_unipass_ukernel_function)(
656*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
657*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
658*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
659*4bdc9457SAndroid Build Coastguard Worker     const void** input,
660*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
661*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
662*4bdc9457SAndroid Build Coastguard Worker     void* output,
663*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
664*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
665*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_scaleminmax_params* params);
666*4bdc9457SAndroid Build Coastguard Worker 
667*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_avgpool_minmax_unipass_ukernel_function)(
668*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
669*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
670*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
671*4bdc9457SAndroid Build Coastguard Worker     const float** input,
672*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
673*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
674*4bdc9457SAndroid Build Coastguard Worker     float* output,
675*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
676*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
677*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_scaleminmax_params* params);
678*4bdc9457SAndroid Build Coastguard Worker 
679*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_avgpool_minmax_unipass_ukernel_function)(
680*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
681*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
682*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
683*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** input,
684*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
685*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
686*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
687*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
688*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
689*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_avgpool_minmax_params* params);
690*4bdc9457SAndroid Build Coastguard Worker 
691*4bdc9457SAndroid Build Coastguard Worker // AVGPOOL: AVeraGe POOLing multi-pass
692*4bdc9457SAndroid Build Coastguard Worker 
693*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_avgpool_multipass_ukernel_function)(
694*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
695*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
696*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
697*4bdc9457SAndroid Build Coastguard Worker     const void** input,
698*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
699*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
700*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
701*4bdc9457SAndroid Build Coastguard Worker     void* output,
702*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
703*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
704*4bdc9457SAndroid Build Coastguard Worker     const void* params);
705*4bdc9457SAndroid Build Coastguard Worker 
706*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_avgpool_minmax_multipass_ukernel_function)(
707*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
708*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
709*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
710*4bdc9457SAndroid Build Coastguard Worker     const void** input,
711*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
712*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
713*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
714*4bdc9457SAndroid Build Coastguard Worker     void* output,
715*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
716*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
717*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_scaleminmax_params* params);
718*4bdc9457SAndroid Build Coastguard Worker 
719*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_avgpool_minmax_multipass_ukernel_function)(
720*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
721*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
722*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
723*4bdc9457SAndroid Build Coastguard Worker     const float** input,
724*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
725*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
726*4bdc9457SAndroid Build Coastguard Worker     float* buffer,
727*4bdc9457SAndroid Build Coastguard Worker     float* output,
728*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
729*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
730*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_scaleminmax_params* params);
731*4bdc9457SAndroid Build Coastguard Worker 
732*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_avgpool_minmax_multipass_ukernel_function)(
733*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
734*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
735*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
736*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** input,
737*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
738*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* zero,
739*4bdc9457SAndroid Build Coastguard Worker     int32_t* buffer,
740*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
741*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
742*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
743*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_avgpool_minmax_params* params);
744*4bdc9457SAndroid Build Coastguard Worker 
745*4bdc9457SAndroid Build Coastguard Worker // PAVGPOOL: Pixelwise AVeraGe POOLing single-pass
746*4bdc9457SAndroid Build Coastguard Worker 
747*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pavgpool_unipass_ukernel_function)(
748*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
749*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
750*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
751*4bdc9457SAndroid Build Coastguard Worker     const void** input,
752*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
753*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
754*4bdc9457SAndroid Build Coastguard Worker     const void* multiplier,
755*4bdc9457SAndroid Build Coastguard Worker     void* output,
756*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
757*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
758*4bdc9457SAndroid Build Coastguard Worker     const void* params);
759*4bdc9457SAndroid Build Coastguard Worker 
760*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_pavgpool_minmax_unipass_ukernel_function)(
761*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
762*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
763*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
764*4bdc9457SAndroid Build Coastguard Worker     const void** input,
765*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
766*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
767*4bdc9457SAndroid Build Coastguard Worker     const void* multiplier,
768*4bdc9457SAndroid Build Coastguard Worker     void* output,
769*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
770*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
771*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
772*4bdc9457SAndroid Build Coastguard Worker 
773*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_pavgpool_minmax_unipass_ukernel_function)(
774*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
775*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
776*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
777*4bdc9457SAndroid Build Coastguard Worker     const float** input,
778*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
779*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
780*4bdc9457SAndroid Build Coastguard Worker     const float* multiplier,
781*4bdc9457SAndroid Build Coastguard Worker     float* output,
782*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
783*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
784*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
785*4bdc9457SAndroid Build Coastguard Worker 
786*4bdc9457SAndroid Build Coastguard Worker // PAVGPOOL: Pixelwise AVeraGe POOLing multi-pass
787*4bdc9457SAndroid Build Coastguard Worker 
788*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pavgpool_multipass_ukernel_function)(
789*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
790*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
791*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
792*4bdc9457SAndroid Build Coastguard Worker     const void** input,
793*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
794*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
795*4bdc9457SAndroid Build Coastguard Worker     const void* multiplier,
796*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
797*4bdc9457SAndroid Build Coastguard Worker     void* output,
798*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
799*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
800*4bdc9457SAndroid Build Coastguard Worker     const void* params);
801*4bdc9457SAndroid Build Coastguard Worker 
802*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_pavgpool_minmax_multipass_ukernel_function)(
803*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
804*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
805*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
806*4bdc9457SAndroid Build Coastguard Worker     const void** input,
807*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
808*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
809*4bdc9457SAndroid Build Coastguard Worker     const void* multiplier,
810*4bdc9457SAndroid Build Coastguard Worker     void* buffer,
811*4bdc9457SAndroid Build Coastguard Worker     void* output,
812*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
813*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
814*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
815*4bdc9457SAndroid Build Coastguard Worker 
816*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_pavgpool_minmax_multipass_ukernel_function)(
817*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
818*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
819*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
820*4bdc9457SAndroid Build Coastguard Worker     const float** input,
821*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
822*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
823*4bdc9457SAndroid Build Coastguard Worker     const float* multiplier,
824*4bdc9457SAndroid Build Coastguard Worker     float* buffer,
825*4bdc9457SAndroid Build Coastguard Worker     float* output,
826*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
827*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
828*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
829*4bdc9457SAndroid Build Coastguard Worker 
830*4bdc9457SAndroid Build Coastguard Worker // MAXPOOL: MAX POOLing
831*4bdc9457SAndroid Build Coastguard Worker 
832*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_maxpool_ukernel_function)(
833*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
834*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
835*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
836*4bdc9457SAndroid Build Coastguard Worker     const void** input,
837*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
838*4bdc9457SAndroid Build Coastguard Worker     void* output,
839*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
840*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
841*4bdc9457SAndroid Build Coastguard Worker     const void* params);
842*4bdc9457SAndroid Build Coastguard Worker 
843*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_maxpool_ukernel_function)(
844*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
845*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
846*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
847*4bdc9457SAndroid Build Coastguard Worker     const void** input,
848*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
849*4bdc9457SAndroid Build Coastguard Worker     void* output,
850*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
851*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
852*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
853*4bdc9457SAndroid Build Coastguard Worker 
854*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_maxpool_ukernel_function)(
855*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
856*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
857*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
858*4bdc9457SAndroid Build Coastguard Worker     const float** input,
859*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
860*4bdc9457SAndroid Build Coastguard Worker     float* output,
861*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
862*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
863*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
864*4bdc9457SAndroid Build Coastguard Worker 
865*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s8_maxpool_ukernel_function)(
866*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
867*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
868*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
869*4bdc9457SAndroid Build Coastguard Worker     const int8_t** input,
870*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
871*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
872*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
873*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
874*4bdc9457SAndroid Build Coastguard Worker     const union xnn_s8_minmax_params* params);
875*4bdc9457SAndroid Build Coastguard Worker 
876*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u8_maxpool_ukernel_function)(
877*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
878*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
879*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
880*4bdc9457SAndroid Build Coastguard Worker     const uint8_t** input,
881*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
882*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
883*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
884*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment,
885*4bdc9457SAndroid Build Coastguard Worker     const union xnn_u8_minmax_params* params);
886*4bdc9457SAndroid Build Coastguard Worker 
887*4bdc9457SAndroid Build Coastguard Worker // ARGMAXPOOL: ARG MAX POOLing single-pass
888*4bdc9457SAndroid Build Coastguard Worker 
889*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_argmaxpool_unipass_ukernel_function)(
890*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
891*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
892*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
893*4bdc9457SAndroid Build Coastguard Worker     const void** input,
894*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
895*4bdc9457SAndroid Build Coastguard Worker     void* output,
896*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index,
897*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
898*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
899*4bdc9457SAndroid Build Coastguard Worker 
900*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_argmaxpool_unipass_ukernel_function)(
901*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
902*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
903*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
904*4bdc9457SAndroid Build Coastguard Worker     const float** input,
905*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
906*4bdc9457SAndroid Build Coastguard Worker     float* output,
907*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index,
908*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
909*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
910*4bdc9457SAndroid Build Coastguard Worker 
911*4bdc9457SAndroid Build Coastguard Worker // ARGMAXPOOL: ARG MAX POOLing multi-pass
912*4bdc9457SAndroid Build Coastguard Worker 
913*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_argmaxpool_multipass_ukernel_function)(
914*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
915*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
916*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
917*4bdc9457SAndroid Build Coastguard Worker     const void** input,
918*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
919*4bdc9457SAndroid Build Coastguard Worker     void* accumulation_buffer,
920*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index_buffer,
921*4bdc9457SAndroid Build Coastguard Worker     void* output,
922*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index,
923*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
924*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
925*4bdc9457SAndroid Build Coastguard Worker 
926*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_argmaxpool_multipass_ukernel_function)(
927*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
928*4bdc9457SAndroid Build Coastguard Worker     size_t kernel_elements,
929*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
930*4bdc9457SAndroid Build Coastguard Worker     const float** input,
931*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
932*4bdc9457SAndroid Build Coastguard Worker     float* accumulation_buffer,
933*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index_buffer,
934*4bdc9457SAndroid Build Coastguard Worker     float* output,
935*4bdc9457SAndroid Build Coastguard Worker     uint32_t* index,
936*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment,
937*4bdc9457SAndroid Build Coastguard Worker     size_t output_increment);
938*4bdc9457SAndroid Build Coastguard Worker 
939*4bdc9457SAndroid Build Coastguard Worker // UNPOOL: UNPOOLing
940*4bdc9457SAndroid Build Coastguard Worker 
941*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_unpool_ukernel_function)(
942*4bdc9457SAndroid Build Coastguard Worker     size_t p,
943*4bdc9457SAndroid Build Coastguard Worker     size_t c,
944*4bdc9457SAndroid Build Coastguard Worker     uint32_t f,
945*4bdc9457SAndroid Build Coastguard Worker     const void* input,
946*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* index,
947*4bdc9457SAndroid Build Coastguard Worker     void** output);
948*4bdc9457SAndroid Build Coastguard Worker 
949*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x32_unpool_ukernel_function)(
950*4bdc9457SAndroid Build Coastguard Worker     size_t p,
951*4bdc9457SAndroid Build Coastguard Worker     size_t c,
952*4bdc9457SAndroid Build Coastguard Worker     uint32_t f,
953*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* input,
954*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* index,
955*4bdc9457SAndroid Build Coastguard Worker     uint32_t** output);
956*4bdc9457SAndroid Build Coastguard Worker 
957*4bdc9457SAndroid Build Coastguard Worker // TRANSPOSEC: TRANSPOSE Constant-size elements
958*4bdc9457SAndroid Build Coastguard Worker 
959*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x8_transposec_ukernel_function)(
960*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* a,
961*4bdc9457SAndroid Build Coastguard Worker     uint8_t* b,
962*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
963*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
964*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
965*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
966*4bdc9457SAndroid Build Coastguard Worker 
967*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x16_transposec_ukernel_function)(
968*4bdc9457SAndroid Build Coastguard Worker     const uint16_t* a,
969*4bdc9457SAndroid Build Coastguard Worker     uint16_t* b,
970*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
971*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
972*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
973*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
974*4bdc9457SAndroid Build Coastguard Worker 
975*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x24_transposec_ukernel_function)(
976*4bdc9457SAndroid Build Coastguard Worker     const void* a,
977*4bdc9457SAndroid Build Coastguard Worker     void* b,
978*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
979*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
980*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
981*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
982*4bdc9457SAndroid Build Coastguard Worker 
983*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x32_transposec_ukernel_function)(
984*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* a,
985*4bdc9457SAndroid Build Coastguard Worker     uint32_t* b,
986*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
987*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
988*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
989*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
990*4bdc9457SAndroid Build Coastguard Worker 
991*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x64_transposec_ukernel_function)(
992*4bdc9457SAndroid Build Coastguard Worker     const uint64_t* a,
993*4bdc9457SAndroid Build Coastguard Worker     uint64_t* b,
994*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
995*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
996*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
997*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
998*4bdc9457SAndroid Build Coastguard Worker 
999*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_transposec_ukernel_function)(
1000*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1001*4bdc9457SAndroid Build Coastguard Worker     void* output,
1002*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
1003*4bdc9457SAndroid Build Coastguard Worker     size_t output_size,
1004*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
1005*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
1006*4bdc9457SAndroid Build Coastguard Worker 
1007*4bdc9457SAndroid Build Coastguard Worker // TRANSPOSEV: TRANSPOSE Variable-size elements
1008*4bdc9457SAndroid Build Coastguard Worker 
1009*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_transposev_ukernel_function)(
1010*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1011*4bdc9457SAndroid Build Coastguard Worker     void* output,
1012*4bdc9457SAndroid Build Coastguard Worker     size_t input_row_stride,
1013*4bdc9457SAndroid Build Coastguard Worker     size_t output_row_stride,
1014*4bdc9457SAndroid Build Coastguard Worker     size_t input_element_stride,
1015*4bdc9457SAndroid Build Coastguard Worker     size_t output_element_stride,
1016*4bdc9457SAndroid Build Coastguard Worker     size_t element_size,
1017*4bdc9457SAndroid Build Coastguard Worker     size_t block_width,
1018*4bdc9457SAndroid Build Coastguard Worker     size_t block_height);
1019*4bdc9457SAndroid Build Coastguard Worker 
1020*4bdc9457SAndroid Build Coastguard Worker // PACKX: PACK X (input) tensor for pre-packed matrix multiplication
1021*4bdc9457SAndroid Build Coastguard Worker 
1022*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_packx_ukernel_function)(
1023*4bdc9457SAndroid Build Coastguard Worker     size_t m,
1024*4bdc9457SAndroid Build Coastguard Worker     size_t k,
1025*4bdc9457SAndroid Build Coastguard Worker     const void* x,
1026*4bdc9457SAndroid Build Coastguard Worker     size_t x_stride,
1027*4bdc9457SAndroid Build Coastguard Worker     void* y);
1028*4bdc9457SAndroid Build Coastguard Worker 
1029*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x32_packx_ukernel_function)(
1030*4bdc9457SAndroid Build Coastguard Worker     size_t m,
1031*4bdc9457SAndroid Build Coastguard Worker     size_t k,
1032*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* x,
1033*4bdc9457SAndroid Build Coastguard Worker     size_t x_stride,
1034*4bdc9457SAndroid Build Coastguard Worker     uint32_t* y);
1035*4bdc9457SAndroid Build Coastguard Worker 
1036*4bdc9457SAndroid Build Coastguard Worker // FILL: FILL array with value
1037*4bdc9457SAndroid Build Coastguard Worker 
1038*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_fill_ukernel_function)(
1039*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
1040*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1041*4bdc9457SAndroid Build Coastguard Worker     void* output,
1042*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
1043*4bdc9457SAndroid Build Coastguard Worker     const uint32_t fill_pattern);
1044*4bdc9457SAndroid Build Coastguard Worker 
1045*4bdc9457SAndroid Build Coastguard Worker // PAD: PAD array with values (fill before, copy array, fill after)
1046*4bdc9457SAndroid Build Coastguard Worker 
1047*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pad_ukernel_function)(
1048*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
1049*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1050*4bdc9457SAndroid Build Coastguard Worker     size_t pre_padding,
1051*4bdc9457SAndroid Build Coastguard Worker     size_t post_padding,
1052*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1053*4bdc9457SAndroid Build Coastguard Worker     size_t input_stride,
1054*4bdc9457SAndroid Build Coastguard Worker     void* output,
1055*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
1056*4bdc9457SAndroid Build Coastguard Worker     const uint32_t fill_value);
1057*4bdc9457SAndroid Build Coastguard Worker 
1058*4bdc9457SAndroid Build Coastguard Worker // RMAX: Reduce-MAX
1059*4bdc9457SAndroid Build Coastguard Worker 
1060*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_rmax_ukernel_function)(
1061*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1062*4bdc9457SAndroid Build Coastguard Worker     const void* x,
1063*4bdc9457SAndroid Build Coastguard Worker     void* y);
1064*4bdc9457SAndroid Build Coastguard Worker 
1065*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_rmax_ukernel_function)(
1066*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1067*4bdc9457SAndroid Build Coastguard Worker     const void* x,
1068*4bdc9457SAndroid Build Coastguard Worker     void* y);
1069*4bdc9457SAndroid Build Coastguard Worker 
1070*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_rmax_ukernel_function)(
1071*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1072*4bdc9457SAndroid Build Coastguard Worker     const float* x,
1073*4bdc9457SAndroid Build Coastguard Worker     float* y);
1074*4bdc9457SAndroid Build Coastguard Worker 
1075*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u8_rmax_ukernel_function)(
1076*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1077*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* x,
1078*4bdc9457SAndroid Build Coastguard Worker     uint8_t* y);
1079*4bdc9457SAndroid Build Coastguard Worker 
1080*4bdc9457SAndroid Build Coastguard Worker // RADDSTOREEXPMINUSMAX: Reduce-ADD & STORE EXP(x_i MINUS MAX[x_i])
1081*4bdc9457SAndroid Build Coastguard Worker 
1082*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_raddstoreexpminusmax_ukernel_function)(
1083*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1084*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1085*4bdc9457SAndroid Build Coastguard Worker     const void* max,
1086*4bdc9457SAndroid Build Coastguard Worker     void* output,
1087*4bdc9457SAndroid Build Coastguard Worker     void* sum,
1088*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1089*4bdc9457SAndroid Build Coastguard Worker 
1090*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_raddstoreexpminusmax_ukernel_function)(
1091*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1092*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1093*4bdc9457SAndroid Build Coastguard Worker     const void* max,
1094*4bdc9457SAndroid Build Coastguard Worker     void* output,
1095*4bdc9457SAndroid Build Coastguard Worker     void* sum,
1096*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_expminus_params* params);
1097*4bdc9457SAndroid Build Coastguard Worker 
1098*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_raddstoreexpminusmax_ukernel_function)(
1099*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1100*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1101*4bdc9457SAndroid Build Coastguard Worker     const float* max,
1102*4bdc9457SAndroid Build Coastguard Worker     float* output,
1103*4bdc9457SAndroid Build Coastguard Worker     float* sum,
1104*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_expminus_params* params);
1105*4bdc9457SAndroid Build Coastguard Worker 
1106*4bdc9457SAndroid Build Coastguard Worker // VUNARY: Vector UNARY elementwise
1107*4bdc9457SAndroid Build Coastguard Worker 
1108*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_vunary_ukernel_function)(
1109*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1110*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1111*4bdc9457SAndroid Build Coastguard Worker     void* output,
1112*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1113*4bdc9457SAndroid Build Coastguard Worker 
1114*4bdc9457SAndroid Build Coastguard Worker // VABS: Vector ABSolute value elementwise
1115*4bdc9457SAndroid Build Coastguard Worker 
1116*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vabs_ukernel_function)(
1117*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1118*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1119*4bdc9457SAndroid Build Coastguard Worker     void* output,
1120*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_abs_params* params);
1121*4bdc9457SAndroid Build Coastguard Worker 
1122*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vabs_ukernel_function)(
1123*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1124*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1125*4bdc9457SAndroid Build Coastguard Worker     float* output,
1126*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_abs_params* params);
1127*4bdc9457SAndroid Build Coastguard Worker 
1128*4bdc9457SAndroid Build Coastguard Worker // VCLAMP: Vector CLAMP elementwise
1129*4bdc9457SAndroid Build Coastguard Worker 
1130*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vclamp_ukernel_function)(
1131*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1132*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1133*4bdc9457SAndroid Build Coastguard Worker     void* output,
1134*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
1135*4bdc9457SAndroid Build Coastguard Worker 
1136*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vclamp_ukernel_function)(
1137*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1138*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1139*4bdc9457SAndroid Build Coastguard Worker     float* output,
1140*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
1141*4bdc9457SAndroid Build Coastguard Worker 
1142*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s8_vclamp_ukernel_function)(
1143*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1144*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
1145*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1146*4bdc9457SAndroid Build Coastguard Worker     const union xnn_s8_minmax_params* params);
1147*4bdc9457SAndroid Build Coastguard Worker 
1148*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u8_vclamp_ukernel_function)(
1149*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1150*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
1151*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1152*4bdc9457SAndroid Build Coastguard Worker     const union xnn_u8_minmax_params* params);
1153*4bdc9457SAndroid Build Coastguard Worker 
1154*4bdc9457SAndroid Build Coastguard Worker // VCVT: Vector ConVerT elementwise
1155*4bdc9457SAndroid Build Coastguard Worker 
1156*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_f32_vcvt_ukernel_function)(
1157*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1158*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1159*4bdc9457SAndroid Build Coastguard Worker     float* output,
1160*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_f32_cvt_params* params);
1161*4bdc9457SAndroid Build Coastguard Worker 
1162*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_f16_vcvt_ukernel_function)(
1163*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1164*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1165*4bdc9457SAndroid Build Coastguard Worker     void* output,
1166*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_f16_cvt_params* params);
1167*4bdc9457SAndroid Build Coastguard Worker 
1168*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_qs8_vcvt_ukernel_function)(
1169*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1170*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1171*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1172*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_qs8_cvt_params* params);
1173*4bdc9457SAndroid Build Coastguard Worker 
1174*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_qu8_vcvt_ukernel_function)(
1175*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1176*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1177*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1178*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_qu8_cvt_params* params);
1179*4bdc9457SAndroid Build Coastguard Worker 
1180*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_vcvt_ukernel_function)(
1181*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1182*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
1183*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1184*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_cvt_params* params);
1185*4bdc9457SAndroid Build Coastguard Worker 
1186*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_f32_vcvt_ukernel_function)(
1187*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1188*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
1189*4bdc9457SAndroid Build Coastguard Worker     float* output,
1190*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_f32_cvt_params* params);
1191*4bdc9457SAndroid Build Coastguard Worker 
1192*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_vcvt_ukernel_function)(
1193*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1194*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
1195*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1196*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_cvt_params* params);
1197*4bdc9457SAndroid Build Coastguard Worker 
1198*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_f32_vcvt_ukernel_function)(
1199*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1200*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
1201*4bdc9457SAndroid Build Coastguard Worker     float* output,
1202*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_f32_cvt_params* params);
1203*4bdc9457SAndroid Build Coastguard Worker 
1204*4bdc9457SAndroid Build Coastguard Worker // VELU: Vector Exponential Linear Unit elementwise
1205*4bdc9457SAndroid Build Coastguard Worker 
1206*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_velu_ukernel_function)(
1207*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1208*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1209*4bdc9457SAndroid Build Coastguard Worker     void* output,
1210*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_elu_params* params);
1211*4bdc9457SAndroid Build Coastguard Worker 
1212*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_velu_ukernel_function)(
1213*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1214*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1215*4bdc9457SAndroid Build Coastguard Worker     float* output,
1216*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_elu_params* params);
1217*4bdc9457SAndroid Build Coastguard Worker 
1218*4bdc9457SAndroid Build Coastguard Worker // VHSWISH: Vector Hard SWISH elementwise
1219*4bdc9457SAndroid Build Coastguard Worker 
1220*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vhswish_ukernel_function)(
1221*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1222*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1223*4bdc9457SAndroid Build Coastguard Worker     void* output,
1224*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_hswish_params* params);
1225*4bdc9457SAndroid Build Coastguard Worker 
1226*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vhswish_ukernel_function)(
1227*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1228*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1229*4bdc9457SAndroid Build Coastguard Worker     float* output,
1230*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_hswish_params* params);
1231*4bdc9457SAndroid Build Coastguard Worker 
1232*4bdc9457SAndroid Build Coastguard Worker // VLRELU: Vector Leaky REctified Linear Unit elementwise
1233*4bdc9457SAndroid Build Coastguard Worker 
1234*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vlrelu_ukernel_function)(
1235*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1236*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1237*4bdc9457SAndroid Build Coastguard Worker     void* output,
1238*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_lrelu_params* params);
1239*4bdc9457SAndroid Build Coastguard Worker 
1240*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vlrelu_ukernel_function)(
1241*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1242*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1243*4bdc9457SAndroid Build Coastguard Worker     float* output,
1244*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_lrelu_params* params);
1245*4bdc9457SAndroid Build Coastguard Worker 
1246*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_vlrelu_ukernel_function)(
1247*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1248*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input,
1249*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1250*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_lrelu_params* params);
1251*4bdc9457SAndroid Build Coastguard Worker 
1252*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_vlrelu_ukernel_function)(
1253*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1254*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
1255*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1256*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_lrelu_params* params);
1257*4bdc9457SAndroid Build Coastguard Worker 
1258*4bdc9457SAndroid Build Coastguard Worker // VNEG: Vector NEGate elementwise
1259*4bdc9457SAndroid Build Coastguard Worker 
1260*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vneg_ukernel_function)(
1261*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1262*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1263*4bdc9457SAndroid Build Coastguard Worker     void* output,
1264*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_neg_params* params);
1265*4bdc9457SAndroid Build Coastguard Worker 
1266*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vneg_ukernel_function)(
1267*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1268*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1269*4bdc9457SAndroid Build Coastguard Worker     float* output,
1270*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_neg_params* params);
1271*4bdc9457SAndroid Build Coastguard Worker 
1272*4bdc9457SAndroid Build Coastguard Worker // VRELU: Vector REctified Linear Unit elementwise
1273*4bdc9457SAndroid Build Coastguard Worker 
1274*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vrelu_ukernel_function)(
1275*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1276*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1277*4bdc9457SAndroid Build Coastguard Worker     float* output,
1278*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_relu_params* params);
1279*4bdc9457SAndroid Build Coastguard Worker 
1280*4bdc9457SAndroid Build Coastguard Worker // VROUND: Vector ROUNDing elementwise
1281*4bdc9457SAndroid Build Coastguard Worker 
1282*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vround_ukernel_function)(
1283*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1284*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1285*4bdc9457SAndroid Build Coastguard Worker     void* output,
1286*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_rnd_params* params);
1287*4bdc9457SAndroid Build Coastguard Worker 
1288*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vround_ukernel_function)(
1289*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1290*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1291*4bdc9457SAndroid Build Coastguard Worker     float* output,
1292*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_rnd_params* params);
1293*4bdc9457SAndroid Build Coastguard Worker 
1294*4bdc9457SAndroid Build Coastguard Worker // VSIGMOID: Vector SIGMOID elementwise
1295*4bdc9457SAndroid Build Coastguard Worker 
1296*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vsigmoid_ukernel_function)(
1297*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1298*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1299*4bdc9457SAndroid Build Coastguard Worker     void* output,
1300*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_sigmoid_params* params);
1301*4bdc9457SAndroid Build Coastguard Worker 
1302*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vsigmoid_ukernel_function)(
1303*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1304*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1305*4bdc9457SAndroid Build Coastguard Worker     float* output,
1306*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_sigmoid_params* params);
1307*4bdc9457SAndroid Build Coastguard Worker 
1308*4bdc9457SAndroid Build Coastguard Worker // VSQR: Vector SQuaRe elementwise
1309*4bdc9457SAndroid Build Coastguard Worker 
1310*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vsqr_ukernel_function)(
1311*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1312*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1313*4bdc9457SAndroid Build Coastguard Worker     void* output,
1314*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_default_params* params);
1315*4bdc9457SAndroid Build Coastguard Worker 
1316*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vsqr_ukernel_function)(
1317*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1318*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1319*4bdc9457SAndroid Build Coastguard Worker     float* output,
1320*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_default_params* params);
1321*4bdc9457SAndroid Build Coastguard Worker 
1322*4bdc9457SAndroid Build Coastguard Worker // VSQRT: Vector SQuare RooT elementwise
1323*4bdc9457SAndroid Build Coastguard Worker 
1324*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vsqrt_ukernel_function)(
1325*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1326*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1327*4bdc9457SAndroid Build Coastguard Worker     void* output,
1328*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_sqrt_params* params);
1329*4bdc9457SAndroid Build Coastguard Worker 
1330*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vsqrt_ukernel_function)(
1331*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1332*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1333*4bdc9457SAndroid Build Coastguard Worker     float* output,
1334*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_sqrt_params* params);
1335*4bdc9457SAndroid Build Coastguard Worker 
1336*4bdc9457SAndroid Build Coastguard Worker // VSQRTSHIFT: Vector SQuare RooT and SHIFT elementwise
1337*4bdc9457SAndroid Build Coastguard Worker 
1338*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u64_u32_vsqrtshift_ukernel_function)(
1339*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1340*4bdc9457SAndroid Build Coastguard Worker     const uint64_t* input,
1341*4bdc9457SAndroid Build Coastguard Worker     uint32_t* output,
1342*4bdc9457SAndroid Build Coastguard Worker     uint32_t shift);
1343*4bdc9457SAndroid Build Coastguard Worker 
1344*4bdc9457SAndroid Build Coastguard Worker // LUT: vector LookUp Table elementwise
1345*4bdc9457SAndroid Build Coastguard Worker 
1346*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x8_lut_ukernel_function)(
1347*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1348*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input,
1349*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1350*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* table);
1351*4bdc9457SAndroid Build Coastguard Worker 
1352*4bdc9457SAndroid Build Coastguard Worker // LUT32NORM: vector LookUp Table of 32-bit elements and NORMalize elementwise
1353*4bdc9457SAndroid Build Coastguard Worker 
1354*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u8_lut32norm_ukernel_function)(
1355*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1356*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* x,
1357*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* t,
1358*4bdc9457SAndroid Build Coastguard Worker     uint8_t* y);
1359*4bdc9457SAndroid Build Coastguard Worker 
1360*4bdc9457SAndroid Build Coastguard Worker // VBINARY: Vector BINARY elementwise
1361*4bdc9457SAndroid Build Coastguard Worker 
1362*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_vbinary_ukernel_function)(
1363*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1364*4bdc9457SAndroid Build Coastguard Worker     const void* input_x,
1365*4bdc9457SAndroid Build Coastguard Worker     const void* input_y,
1366*4bdc9457SAndroid Build Coastguard Worker     void* output,
1367*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1368*4bdc9457SAndroid Build Coastguard Worker 
1369*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vbinary_ukernel_function)(
1370*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1371*4bdc9457SAndroid Build Coastguard Worker     const void* input_x,
1372*4bdc9457SAndroid Build Coastguard Worker     const void* input_y,
1373*4bdc9457SAndroid Build Coastguard Worker     void* output,
1374*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_default_params* params);
1375*4bdc9457SAndroid Build Coastguard Worker 
1376*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vbinary_ukernel_function)(
1377*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1378*4bdc9457SAndroid Build Coastguard Worker     const float* input_x,
1379*4bdc9457SAndroid Build Coastguard Worker     const float* input_y,
1380*4bdc9457SAndroid Build Coastguard Worker     float* output,
1381*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_default_params* params);
1382*4bdc9457SAndroid Build Coastguard Worker 
1383*4bdc9457SAndroid Build Coastguard Worker // VBINARY: Vector BINARY elementwise with ReLU activation
1384*4bdc9457SAndroid Build Coastguard Worker 
1385*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vbinary_relu_ukernel_function)(
1386*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1387*4bdc9457SAndroid Build Coastguard Worker     const float* input_x,
1388*4bdc9457SAndroid Build Coastguard Worker     const float* input_y,
1389*4bdc9457SAndroid Build Coastguard Worker     float* output,
1390*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_relu_params* params);
1391*4bdc9457SAndroid Build Coastguard Worker 
1392*4bdc9457SAndroid Build Coastguard Worker // VBINARY: Vector BINARY elementwise with Min+Max activation
1393*4bdc9457SAndroid Build Coastguard Worker 
1394*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_vbinary_minmax_ukernel_function)(
1395*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1396*4bdc9457SAndroid Build Coastguard Worker     const void* input_x,
1397*4bdc9457SAndroid Build Coastguard Worker     const void* input_y,
1398*4bdc9457SAndroid Build Coastguard Worker     void* output,
1399*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
1400*4bdc9457SAndroid Build Coastguard Worker 
1401*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vbinary_minmax_ukernel_function)(
1402*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1403*4bdc9457SAndroid Build Coastguard Worker     const float* input_x,
1404*4bdc9457SAndroid Build Coastguard Worker     const float* input_y,
1405*4bdc9457SAndroid Build Coastguard Worker     float* output,
1406*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
1407*4bdc9457SAndroid Build Coastguard Worker 
1408*4bdc9457SAndroid Build Coastguard Worker // VADD: Vector ADD elementwise with Min+Max activation
1409*4bdc9457SAndroid Build Coastguard Worker 
1410*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_vadd_minmax_ukernel_function)(
1411*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1412*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input_x,
1413*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input_y,
1414*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1415*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_add_minmax_params* params);
1416*4bdc9457SAndroid Build Coastguard Worker 
1417*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_vadd_minmax_ukernel_function)(
1418*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1419*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input_x,
1420*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input_y,
1421*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1422*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_add_minmax_params* params);
1423*4bdc9457SAndroid Build Coastguard Worker 
1424*4bdc9457SAndroid Build Coastguard Worker // VMUL: Vector MUL elementwise with Min+Max activation
1425*4bdc9457SAndroid Build Coastguard Worker 
1426*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qs8_vmul_minmax_ukernel_function)(
1427*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1428*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input_x,
1429*4bdc9457SAndroid Build Coastguard Worker     const int8_t* input_y,
1430*4bdc9457SAndroid Build Coastguard Worker     int8_t* output,
1431*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qs8_mul_minmax_params* params);
1432*4bdc9457SAndroid Build Coastguard Worker 
1433*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_qu8_vmul_minmax_ukernel_function)(
1434*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1435*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input_x,
1436*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* input_y,
1437*4bdc9457SAndroid Build Coastguard Worker     uint8_t* output,
1438*4bdc9457SAndroid Build Coastguard Worker     const union xnn_qu8_mul_minmax_params* params);
1439*4bdc9457SAndroid Build Coastguard Worker 
1440*4bdc9457SAndroid Build Coastguard Worker 
1441*4bdc9457SAndroid Build Coastguard Worker /***************** Microkernel pointers for sparse inference *****************/
1442*4bdc9457SAndroid Build Coastguard Worker 
1443*4bdc9457SAndroid Build Coastguard Worker // SpMM: Sparse Matrix-Matrix multiplication
1444*4bdc9457SAndroid Build Coastguard Worker 
1445*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_spmm_ukernel_function)(
1446*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1447*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1448*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1449*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1450*4bdc9457SAndroid Build Coastguard Worker     const int32_t* widx_dmap,
1451*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* nidx_nnzmap,
1452*4bdc9457SAndroid Build Coastguard Worker     void* output,
1453*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
1454*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1455*4bdc9457SAndroid Build Coastguard Worker 
1456*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_spmm_minmax_ukernel_function)(
1457*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1458*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1459*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1460*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1461*4bdc9457SAndroid Build Coastguard Worker     const int32_t* widx_dmap,
1462*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* nidx_nnzmap,
1463*4bdc9457SAndroid Build Coastguard Worker     void* output,
1464*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
1465*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
1466*4bdc9457SAndroid Build Coastguard Worker 
1467*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_spmm_minmax_ukernel_function)(
1468*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1469*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1470*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1471*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
1472*4bdc9457SAndroid Build Coastguard Worker     const int32_t* widx_dmap,
1473*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* nidx_nnzmap,
1474*4bdc9457SAndroid Build Coastguard Worker     float* output,
1475*4bdc9457SAndroid Build Coastguard Worker     size_t output_stride,
1476*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
1477*4bdc9457SAndroid Build Coastguard Worker 
1478*4bdc9457SAndroid Build Coastguard Worker // CONV-HWC2CHW: direct CONVolution from HWC-layout tensor to CHW-layout tensor
1479*4bdc9457SAndroid Build Coastguard Worker 
1480*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_conv_hwc2chw_ukernel_function)(
1481*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1482*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1483*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_start,
1484*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_end,
1485*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1486*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
1487*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1488*4bdc9457SAndroid Build Coastguard Worker     void* output,
1489*4bdc9457SAndroid Build Coastguard Worker     size_t input_padding_top,
1490*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1491*4bdc9457SAndroid Build Coastguard Worker     size_t output_height_stride,
1492*4bdc9457SAndroid Build Coastguard Worker     size_t output_channel_stride,
1493*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1494*4bdc9457SAndroid Build Coastguard Worker 
1495*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_conv_hwc2chw_ukernel_function)(
1496*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1497*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1498*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_start,
1499*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_end,
1500*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1501*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
1502*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1503*4bdc9457SAndroid Build Coastguard Worker     void* output,
1504*4bdc9457SAndroid Build Coastguard Worker     size_t input_padding_top,
1505*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1506*4bdc9457SAndroid Build Coastguard Worker     size_t output_height_stride,
1507*4bdc9457SAndroid Build Coastguard Worker     size_t output_channel_stride,
1508*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_minmax_params* params);
1509*4bdc9457SAndroid Build Coastguard Worker 
1510*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_conv_hwc2chw_ukernel_function)(
1511*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1512*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1513*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_start,
1514*4bdc9457SAndroid Build Coastguard Worker     size_t output_y_end,
1515*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1516*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
1517*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
1518*4bdc9457SAndroid Build Coastguard Worker     float* output,
1519*4bdc9457SAndroid Build Coastguard Worker     size_t input_padding_top,
1520*4bdc9457SAndroid Build Coastguard Worker     size_t output_channels,
1521*4bdc9457SAndroid Build Coastguard Worker     size_t output_height_stride,
1522*4bdc9457SAndroid Build Coastguard Worker     size_t output_channel_stride,
1523*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_minmax_params* params);
1524*4bdc9457SAndroid Build Coastguard Worker 
1525*4bdc9457SAndroid Build Coastguard Worker // DWCONV2D-CHW: direct 2D DepthWise CONVolution in CHW layout
1526*4bdc9457SAndroid Build Coastguard Worker 
1527*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_dwconv2d_chw_ukernel_function)(
1528*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1529*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1530*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1531*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1532*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
1533*4bdc9457SAndroid Build Coastguard Worker     void* output,
1534*4bdc9457SAndroid Build Coastguard Worker     uint32_t padding_top,
1535*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1536*4bdc9457SAndroid Build Coastguard Worker 
1537*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_dwconv2d_chw_ukernel_function)(
1538*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1539*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1540*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1541*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1542*4bdc9457SAndroid Build Coastguard Worker     const void* zero,
1543*4bdc9457SAndroid Build Coastguard Worker     void* output,
1544*4bdc9457SAndroid Build Coastguard Worker     uint32_t padding_top,
1545*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_chw_params* params);
1546*4bdc9457SAndroid Build Coastguard Worker 
1547*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_dwconv2d_chw_ukernel_function)(
1548*4bdc9457SAndroid Build Coastguard Worker     size_t input_height,
1549*4bdc9457SAndroid Build Coastguard Worker     size_t input_width,
1550*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1551*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
1552*4bdc9457SAndroid Build Coastguard Worker     const float* zero,
1553*4bdc9457SAndroid Build Coastguard Worker     float* output,
1554*4bdc9457SAndroid Build Coastguard Worker     uint32_t padding_top,
1555*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_chw_params* params);
1556*4bdc9457SAndroid Build Coastguard Worker 
1557*4bdc9457SAndroid Build Coastguard Worker // IBILINEAR-CHW: Indirect BILINEAR interpolation in CHW layout
1558*4bdc9457SAndroid Build Coastguard Worker 
1559*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_ibilinear_chw_ukernel_function)(
1560*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
1561*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1562*4bdc9457SAndroid Build Coastguard Worker     const void** input,
1563*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
1564*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1565*4bdc9457SAndroid Build Coastguard Worker     void* output,
1566*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment);
1567*4bdc9457SAndroid Build Coastguard Worker 
1568*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_ibilinear_chw_ukernel_function)(
1569*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
1570*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1571*4bdc9457SAndroid Build Coastguard Worker     const void** input,
1572*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
1573*4bdc9457SAndroid Build Coastguard Worker     const void* weights,
1574*4bdc9457SAndroid Build Coastguard Worker     void* output,
1575*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment);
1576*4bdc9457SAndroid Build Coastguard Worker 
1577*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_ibilinear_chw_ukernel_function)(
1578*4bdc9457SAndroid Build Coastguard Worker     size_t output_pixels,
1579*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1580*4bdc9457SAndroid Build Coastguard Worker     const float** input,
1581*4bdc9457SAndroid Build Coastguard Worker     size_t input_offset,
1582*4bdc9457SAndroid Build Coastguard Worker     const float* weights,
1583*4bdc9457SAndroid Build Coastguard Worker     float* output,
1584*4bdc9457SAndroid Build Coastguard Worker     size_t input_increment);
1585*4bdc9457SAndroid Build Coastguard Worker 
1586*4bdc9457SAndroid Build Coastguard Worker // GAVGPOOL-CW: Global AVeraGe POOLing in CW layout.
1587*4bdc9457SAndroid Build Coastguard Worker 
1588*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_gavgpool_cw_ukernel_function)(
1589*4bdc9457SAndroid Build Coastguard Worker     size_t elements,
1590*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1591*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1592*4bdc9457SAndroid Build Coastguard Worker     float* output,
1593*4bdc9457SAndroid Build Coastguard Worker     const void* params);
1594*4bdc9457SAndroid Build Coastguard Worker 
1595*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f16_gavgpool_cw_ukernel_function)(
1596*4bdc9457SAndroid Build Coastguard Worker     size_t elements,
1597*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1598*4bdc9457SAndroid Build Coastguard Worker     const void* input,
1599*4bdc9457SAndroid Build Coastguard Worker     void* output,
1600*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f16_gavgpool_params* params);
1601*4bdc9457SAndroid Build Coastguard Worker 
1602*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_gavgpool_cw_ukernel_function)(
1603*4bdc9457SAndroid Build Coastguard Worker     size_t elements,
1604*4bdc9457SAndroid Build Coastguard Worker     size_t channels,
1605*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1606*4bdc9457SAndroid Build Coastguard Worker     float* output,
1607*4bdc9457SAndroid Build Coastguard Worker     const union xnn_f32_gavgpool_params* params);
1608*4bdc9457SAndroid Build Coastguard Worker 
1609*4bdc9457SAndroid Build Coastguard Worker 
1610*4bdc9457SAndroid Build Coastguard Worker /********************* JIT microkernel generator pointers ********************/
1611*4bdc9457SAndroid Build Coastguard Worker 
1612*4bdc9457SAndroid Build Coastguard Worker // JIT GEMM: used by GEMM/IGEMM microkernel generators.
1613*4bdc9457SAndroid Build Coastguard Worker 
1614*4bdc9457SAndroid Build Coastguard Worker struct jit_gemm_params {
1615*4bdc9457SAndroid Build Coastguard Worker   struct {
1616*4bdc9457SAndroid Build Coastguard Worker     float min;
1617*4bdc9457SAndroid Build Coastguard Worker     float max;
1618*4bdc9457SAndroid Build Coastguard Worker   } f32_minmax;
1619*4bdc9457SAndroid Build Coastguard Worker   size_t num_post_operations;
1620*4bdc9457SAndroid Build Coastguard Worker   struct xnn_post_operation* post_operations;
1621*4bdc9457SAndroid Build Coastguard Worker };
1622*4bdc9457SAndroid Build Coastguard Worker 
1623*4bdc9457SAndroid Build Coastguard Worker typedef xnn_status_t (*xnn_jit_gemm_code_generator_function)(
1624*4bdc9457SAndroid Build Coastguard Worker     struct xnn_code_buffer *code, size_t max_mr, size_t nc_mod_nr, size_t kc, const void *params);
1625*4bdc9457SAndroid Build Coastguard Worker typedef xnn_status_t (*xnn_jit_igemm_code_generator_function)(
1626*4bdc9457SAndroid Build Coastguard Worker     struct xnn_code_buffer *code, size_t max_mr, size_t nc_mod_nr, size_t kc, size_t ks, const void *params);
1627*4bdc9457SAndroid Build Coastguard Worker 
1628*4bdc9457SAndroid Build Coastguard Worker 
1629*4bdc9457SAndroid Build Coastguard Worker /***************** Audio pre-processing microkernel pointers *****************/
1630*4bdc9457SAndroid Build Coastguard Worker 
1631*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s16_rmaxabs_ukernel_function)(
1632*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1633*4bdc9457SAndroid Build Coastguard Worker     const int16_t* x,
1634*4bdc9457SAndroid Build Coastguard Worker     uint16_t* y);
1635*4bdc9457SAndroid Build Coastguard Worker 
1636*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s16_window_ukernel_function)(
1637*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
1638*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1639*4bdc9457SAndroid Build Coastguard Worker     const int16_t* input,
1640*4bdc9457SAndroid Build Coastguard Worker     const int16_t* weights,
1641*4bdc9457SAndroid Build Coastguard Worker     int16_t* output,
1642*4bdc9457SAndroid Build Coastguard Worker     uint32_t shift);
1643*4bdc9457SAndroid Build Coastguard Worker 
1644*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u32_filterbank_accumulate_ukernel_function)(
1645*4bdc9457SAndroid Build Coastguard Worker     size_t rows,
1646*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* input,
1647*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* weight_widths,
1648*4bdc9457SAndroid Build Coastguard Worker     const uint16_t* weights,
1649*4bdc9457SAndroid Build Coastguard Worker     uint64_t* output);
1650*4bdc9457SAndroid Build Coastguard Worker 
1651*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u32_filterbank_subtract_ukernel_function)(
1652*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1653*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* input,
1654*4bdc9457SAndroid Build Coastguard Worker     uint32_t smoothing,
1655*4bdc9457SAndroid Build Coastguard Worker     uint32_t alternate_smoothing,
1656*4bdc9457SAndroid Build Coastguard Worker     uint32_t one_minus_smoothing,
1657*4bdc9457SAndroid Build Coastguard Worker     uint32_t alternate_one_minus_smoothing,
1658*4bdc9457SAndroid Build Coastguard Worker     uint32_t min_signal_remaining,
1659*4bdc9457SAndroid Build Coastguard Worker     uint32_t smoothing_bits,
1660*4bdc9457SAndroid Build Coastguard Worker     uint32_t spectral_subtraction_bits,
1661*4bdc9457SAndroid Build Coastguard Worker     uint32_t* noise_estimate,
1662*4bdc9457SAndroid Build Coastguard Worker     uint32_t* output);
1663*4bdc9457SAndroid Build Coastguard Worker 
1664*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_s16_vlshift_ukernel_function)(
1665*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1666*4bdc9457SAndroid Build Coastguard Worker     const int16_t* input,
1667*4bdc9457SAndroid Build Coastguard Worker     int16_t* output,
1668*4bdc9457SAndroid Build Coastguard Worker     uint32_t shift);
1669*4bdc9457SAndroid Build Coastguard Worker 
1670*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_cs16_vsquareabs_ukernel_function)(
1671*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1672*4bdc9457SAndroid Build Coastguard Worker     const int16_t* input,
1673*4bdc9457SAndroid Build Coastguard Worker     uint32_t* output);
1674*4bdc9457SAndroid Build Coastguard Worker 
1675*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_u32_vlog_ukernel_function)(
1676*4bdc9457SAndroid Build Coastguard Worker     size_t batch_size,
1677*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* input,
1678*4bdc9457SAndroid Build Coastguard Worker     uint32_t input_lshift,
1679*4bdc9457SAndroid Build Coastguard Worker     uint32_t output_scale,
1680*4bdc9457SAndroid Build Coastguard Worker     uint16_t* output);
1681*4bdc9457SAndroid Build Coastguard Worker 
1682*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_cs16_bfly4_ukernel_function)(
1683*4bdc9457SAndroid Build Coastguard Worker     size_t samples,
1684*4bdc9457SAndroid Build Coastguard Worker     int16_t* data,
1685*4bdc9457SAndroid Build Coastguard Worker     size_t stride,
1686*4bdc9457SAndroid Build Coastguard Worker     const int16_t* twiddle);
1687*4bdc9457SAndroid Build Coastguard Worker 
1688*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_cs16_fftr_ukernel_function)(
1689*4bdc9457SAndroid Build Coastguard Worker     size_t samples,
1690*4bdc9457SAndroid Build Coastguard Worker     int16_t* data,
1691*4bdc9457SAndroid Build Coastguard Worker     const int16_t* twiddle);
1692*4bdc9457SAndroid Build Coastguard Worker 
1693*4bdc9457SAndroid Build Coastguard Worker 
1694*4bdc9457SAndroid Build Coastguard Worker /********************* Experimental microkernel pointers *********************/
1695*4bdc9457SAndroid Build Coastguard Worker 
1696*4bdc9457SAndroid Build Coastguard Worker // ZIPC: ZIP Constant number of arrays
1697*4bdc9457SAndroid Build Coastguard Worker 
1698*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_zipc_ukernel_function)(
1699*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1700*4bdc9457SAndroid Build Coastguard Worker     const void* x,
1701*4bdc9457SAndroid Build Coastguard Worker     void* y);
1702*4bdc9457SAndroid Build Coastguard Worker 
1703*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x8_zipc_ukernel_function)(
1704*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1705*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* x,
1706*4bdc9457SAndroid Build Coastguard Worker     uint8_t* y);
1707*4bdc9457SAndroid Build Coastguard Worker 
1708*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x32_zipc_ukernel_function)(
1709*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1710*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* x,
1711*4bdc9457SAndroid Build Coastguard Worker     uint32_t* y);
1712*4bdc9457SAndroid Build Coastguard Worker 
1713*4bdc9457SAndroid Build Coastguard Worker // ZIPV: ZIP Variable number of arrays
1714*4bdc9457SAndroid Build Coastguard Worker 
1715*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_zipv_ukernel_function)(
1716*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1717*4bdc9457SAndroid Build Coastguard Worker     size_t m,
1718*4bdc9457SAndroid Build Coastguard Worker     const void* x,
1719*4bdc9457SAndroid Build Coastguard Worker     void* y);
1720*4bdc9457SAndroid Build Coastguard Worker 
1721*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x8_zipv_ukernel_function)(
1722*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1723*4bdc9457SAndroid Build Coastguard Worker     size_t m,
1724*4bdc9457SAndroid Build Coastguard Worker     const uint8_t* x,
1725*4bdc9457SAndroid Build Coastguard Worker     uint8_t* y);
1726*4bdc9457SAndroid Build Coastguard Worker 
1727*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_x32_zipv_ukernel_function)(
1728*4bdc9457SAndroid Build Coastguard Worker     size_t n,
1729*4bdc9457SAndroid Build Coastguard Worker     size_t m,
1730*4bdc9457SAndroid Build Coastguard Worker     const uint32_t* x,
1731*4bdc9457SAndroid Build Coastguard Worker     uint32_t* y);
1732*4bdc9457SAndroid Build Coastguard Worker 
1733*4bdc9457SAndroid Build Coastguard Worker // RADDEXPMINUSMAX: Reduce-ADD EXP(x_i MINUS MAX[x_i])
1734*4bdc9457SAndroid Build Coastguard Worker 
1735*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_raddexpminusmax_ukernel_function)(
1736*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1737*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1738*4bdc9457SAndroid Build Coastguard Worker     float* sum,
1739*4bdc9457SAndroid Build Coastguard Worker     float max);
1740*4bdc9457SAndroid Build Coastguard Worker 
1741*4bdc9457SAndroid Build Coastguard Worker // VSCALEEXPMINUSMAX: Vector SCALE EXP(x_i MINUS MAX[x_i])
1742*4bdc9457SAndroid Build Coastguard Worker 
1743*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vscaleexpminusmax_ukernel_function)(
1744*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1745*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1746*4bdc9457SAndroid Build Coastguard Worker     float* output,
1747*4bdc9457SAndroid Build Coastguard Worker     float max,
1748*4bdc9457SAndroid Build Coastguard Worker     float scale);
1749*4bdc9457SAndroid Build Coastguard Worker 
1750*4bdc9457SAndroid Build Coastguard Worker // RADDEXTEXP: Reduce-ADD EXTended ("mantissa" + "exponent") EXPonentials
1751*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_raddextexp_ukernel_function)(
1752*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1753*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1754*4bdc9457SAndroid Build Coastguard Worker     float* sum);
1755*4bdc9457SAndroid Build Coastguard Worker 
1756*4bdc9457SAndroid Build Coastguard Worker // VSCALEEXTEXP: Vector SCALE EXTended ("mantissa" + "exponent") EXPonentials
1757*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_f32_vscaleextexp_ukernel_function)(
1758*4bdc9457SAndroid Build Coastguard Worker     size_t batch,
1759*4bdc9457SAndroid Build Coastguard Worker     const float* input,
1760*4bdc9457SAndroid Build Coastguard Worker     float* output,
1761*4bdc9457SAndroid Build Coastguard Worker     float scale_mantissa,
1762*4bdc9457SAndroid Build Coastguard Worker     float scale_exponent);
1763*4bdc9457SAndroid Build Coastguard Worker 
1764*4bdc9457SAndroid Build Coastguard Worker 
1765*4bdc9457SAndroid Build Coastguard Worker /***************** Microkernel parameter initializer pointers ****************/
1766*4bdc9457SAndroid Build Coastguard Worker 
1767*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_f32_cvt_params_fn)(
1768*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_f32_cvt_params params[XNN_MIN_ELEMENTS(1)]);
1769*4bdc9457SAndroid Build Coastguard Worker 
1770*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_f16_cvt_params_fn)(
1771*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_f16_cvt_params params[XNN_MIN_ELEMENTS(1)]);
1772*4bdc9457SAndroid Build Coastguard Worker 
1773*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_qs8_cvt_params_fn)(
1774*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_qs8_cvt_params params[XNN_MIN_ELEMENTS(1)],
1775*4bdc9457SAndroid Build Coastguard Worker   float scale,
1776*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1777*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1778*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1779*4bdc9457SAndroid Build Coastguard Worker 
1780*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_qu8_cvt_params_fn)(
1781*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_qu8_cvt_params params[XNN_MIN_ELEMENTS(1)],
1782*4bdc9457SAndroid Build Coastguard Worker   float scale,
1783*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point,
1784*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_min,
1785*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_max);
1786*4bdc9457SAndroid Build Coastguard Worker 
1787*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_cvt_params_fn)(
1788*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_cvt_params params[XNN_MIN_ELEMENTS(1)],
1789*4bdc9457SAndroid Build Coastguard Worker   float input_output_scale,
1790*4bdc9457SAndroid Build Coastguard Worker   int8_t input_zero_point,
1791*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point);
1792*4bdc9457SAndroid Build Coastguard Worker 
1793*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_f32_cvt_params_fn)(
1794*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_f32_cvt_params params[XNN_MIN_ELEMENTS(1)],
1795*4bdc9457SAndroid Build Coastguard Worker   float scale,
1796*4bdc9457SAndroid Build Coastguard Worker   int8_t zero_point);
1797*4bdc9457SAndroid Build Coastguard Worker 
1798*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_cvt_params_fn)(
1799*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_cvt_params params[XNN_MIN_ELEMENTS(1)],
1800*4bdc9457SAndroid Build Coastguard Worker   float input_output_scale,
1801*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_zero_point,
1802*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point);
1803*4bdc9457SAndroid Build Coastguard Worker 
1804*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_f32_cvt_params_fn)(
1805*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_f32_cvt_params params[XNN_MIN_ELEMENTS(1)],
1806*4bdc9457SAndroid Build Coastguard Worker   float scale,
1807*4bdc9457SAndroid Build Coastguard Worker   uint8_t zero_point);
1808*4bdc9457SAndroid Build Coastguard Worker 
1809*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qc8_conv_minmax_params_fn)(
1810*4bdc9457SAndroid Build Coastguard Worker   union xnn_qc8_conv_minmax_params params[XNN_MIN_ELEMENTS(1)],
1811*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1812*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1813*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1814*4bdc9457SAndroid Build Coastguard Worker 
1815*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_conv_minmax_params_fn)(
1816*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_conv_minmax_params params[XNN_MIN_ELEMENTS(1)],
1817*4bdc9457SAndroid Build Coastguard Worker   float scale,
1818*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1819*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1820*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1821*4bdc9457SAndroid Build Coastguard Worker 
1822*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_conv_minmax_params_fn)(
1823*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_conv_minmax_params params[XNN_MIN_ELEMENTS(1)],
1824*4bdc9457SAndroid Build Coastguard Worker   uint8_t kernel_zero_point,
1825*4bdc9457SAndroid Build Coastguard Worker   float scale,
1826*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point,
1827*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_min,
1828*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_max);
1829*4bdc9457SAndroid Build Coastguard Worker 
1830*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_avgpool_minmax_params_fn)(
1831*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
1832*4bdc9457SAndroid Build Coastguard Worker   int32_t bias,
1833*4bdc9457SAndroid Build Coastguard Worker   float scale,
1834*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1835*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1836*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1837*4bdc9457SAndroid Build Coastguard Worker 
1838*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_avgpool_minmax_params_fn)(
1839*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
1840*4bdc9457SAndroid Build Coastguard Worker   int32_t bias,
1841*4bdc9457SAndroid Build Coastguard Worker   float scale,
1842*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point,
1843*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_min,
1844*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_max);
1845*4bdc9457SAndroid Build Coastguard Worker 
1846*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_update_qs8_avgpool_minmax_params_fn)(
1847*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
1848*4bdc9457SAndroid Build Coastguard Worker   int32_t bias,
1849*4bdc9457SAndroid Build Coastguard Worker   float scale);
1850*4bdc9457SAndroid Build Coastguard Worker 
1851*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_update_qu8_avgpool_minmax_params_fn)(
1852*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
1853*4bdc9457SAndroid Build Coastguard Worker   int32_t bias,
1854*4bdc9457SAndroid Build Coastguard Worker   float scale);
1855*4bdc9457SAndroid Build Coastguard Worker 
1856*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_add_minmax_params_fn)(
1857*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_add_minmax_params params[XNN_MIN_ELEMENTS(1)],
1858*4bdc9457SAndroid Build Coastguard Worker   int8_t input_x_zero_point,
1859*4bdc9457SAndroid Build Coastguard Worker   int8_t input_y_zero_point,
1860*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1861*4bdc9457SAndroid Build Coastguard Worker   float input_x_output_scale,
1862*4bdc9457SAndroid Build Coastguard Worker   float input_y_output_scale,
1863*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1864*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1865*4bdc9457SAndroid Build Coastguard Worker 
1866*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_add_minmax_params_fn)(
1867*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_add_minmax_params params[XNN_MIN_ELEMENTS(1)],
1868*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_x_zero_point,
1869*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_y_zero_point,
1870*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point,
1871*4bdc9457SAndroid Build Coastguard Worker   float input_x_output_scale,
1872*4bdc9457SAndroid Build Coastguard Worker   float input_y_output_scale,
1873*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_min,
1874*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_max);
1875*4bdc9457SAndroid Build Coastguard Worker 
1876*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_mul_minmax_params_fn)(
1877*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_mul_minmax_params params[XNN_MIN_ELEMENTS(1)],
1878*4bdc9457SAndroid Build Coastguard Worker   int8_t input_x_zero_point,
1879*4bdc9457SAndroid Build Coastguard Worker   int8_t input_y_zero_point,
1880*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point,
1881*4bdc9457SAndroid Build Coastguard Worker   float product_output_scale,
1882*4bdc9457SAndroid Build Coastguard Worker   int8_t output_min,
1883*4bdc9457SAndroid Build Coastguard Worker   int8_t output_max);
1884*4bdc9457SAndroid Build Coastguard Worker 
1885*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_mul_minmax_params_fn)(
1886*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_mul_minmax_params params[XNN_MIN_ELEMENTS(1)],
1887*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_x_zero_point,
1888*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_y_zero_point,
1889*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point,
1890*4bdc9457SAndroid Build Coastguard Worker   float product_output_scale,
1891*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_min,
1892*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_max);
1893*4bdc9457SAndroid Build Coastguard Worker 
1894*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_abs_params_fn)(
1895*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_abs_params params[XNN_MIN_ELEMENTS(1)]);
1896*4bdc9457SAndroid Build Coastguard Worker 
1897*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_abs_params_fn)(
1898*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_abs_params params[XNN_MIN_ELEMENTS(1)]);
1899*4bdc9457SAndroid Build Coastguard Worker 
1900*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_default_params_fn)(
1901*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_default_params params[XNN_MIN_ELEMENTS(1)]);
1902*4bdc9457SAndroid Build Coastguard Worker 
1903*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_default_params_fn)(
1904*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_default_params params[XNN_MIN_ELEMENTS(1)]);
1905*4bdc9457SAndroid Build Coastguard Worker 
1906*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_expminus_params_fn)(
1907*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_expminus_params params[XNN_MIN_ELEMENTS(1)]);
1908*4bdc9457SAndroid Build Coastguard Worker 
1909*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_expminus_params_fn)(
1910*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_expminus_params params[XNN_MIN_ELEMENTS(1)]);
1911*4bdc9457SAndroid Build Coastguard Worker 
1912*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_elu_params_fn)(
1913*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_elu_params params[XNN_MIN_ELEMENTS(1)],
1914*4bdc9457SAndroid Build Coastguard Worker   uint16_t prescale,
1915*4bdc9457SAndroid Build Coastguard Worker   uint16_t alpha,
1916*4bdc9457SAndroid Build Coastguard Worker   uint16_t beta);
1917*4bdc9457SAndroid Build Coastguard Worker 
1918*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_elu_params_fn)(
1919*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_elu_params params[XNN_MIN_ELEMENTS(1)],
1920*4bdc9457SAndroid Build Coastguard Worker   float prescale,
1921*4bdc9457SAndroid Build Coastguard Worker   float alpha,
1922*4bdc9457SAndroid Build Coastguard Worker   float beta);
1923*4bdc9457SAndroid Build Coastguard Worker 
1924*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_hswish_params_fn)(
1925*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_hswish_params params[XNN_MIN_ELEMENTS(1)]);
1926*4bdc9457SAndroid Build Coastguard Worker 
1927*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_hswish_params_fn)(
1928*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_hswish_params params[XNN_MIN_ELEMENTS(1)]);
1929*4bdc9457SAndroid Build Coastguard Worker 
1930*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_lrelu_params_fn)(
1931*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_lrelu_params params[XNN_MIN_ELEMENTS(1)],
1932*4bdc9457SAndroid Build Coastguard Worker   uint16_t slope);
1933*4bdc9457SAndroid Build Coastguard Worker 
1934*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_lrelu_params_fn)(
1935*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_lrelu_params params[XNN_MIN_ELEMENTS(1)],
1936*4bdc9457SAndroid Build Coastguard Worker   float slope);
1937*4bdc9457SAndroid Build Coastguard Worker 
1938*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qs8_lrelu_params_fn)(
1939*4bdc9457SAndroid Build Coastguard Worker   union xnn_qs8_lrelu_params params[XNN_MIN_ELEMENTS(1)],
1940*4bdc9457SAndroid Build Coastguard Worker   float positive_slope,
1941*4bdc9457SAndroid Build Coastguard Worker   float negative_slope,
1942*4bdc9457SAndroid Build Coastguard Worker   int8_t input_zero_point,
1943*4bdc9457SAndroid Build Coastguard Worker   int8_t output_zero_point);
1944*4bdc9457SAndroid Build Coastguard Worker 
1945*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_qu8_lrelu_params_fn)(
1946*4bdc9457SAndroid Build Coastguard Worker   union xnn_qu8_lrelu_params params[XNN_MIN_ELEMENTS(1)],
1947*4bdc9457SAndroid Build Coastguard Worker   float positive_slope,
1948*4bdc9457SAndroid Build Coastguard Worker   float negative_slope,
1949*4bdc9457SAndroid Build Coastguard Worker   uint8_t input_zero_point,
1950*4bdc9457SAndroid Build Coastguard Worker   uint8_t output_zero_point);
1951*4bdc9457SAndroid Build Coastguard Worker 
1952*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_bf16_minmax_params_fn)(
1953*4bdc9457SAndroid Build Coastguard Worker   union xnn_bf16_minmax_params params[XNN_MIN_ELEMENTS(1)],
1954*4bdc9457SAndroid Build Coastguard Worker   uint16_t min,
1955*4bdc9457SAndroid Build Coastguard Worker   uint16_t max);
1956*4bdc9457SAndroid Build Coastguard Worker 
1957*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_minmax_params_fn)(
1958*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_minmax_params params[XNN_MIN_ELEMENTS(1)],
1959*4bdc9457SAndroid Build Coastguard Worker   uint16_t min,
1960*4bdc9457SAndroid Build Coastguard Worker   uint16_t max);
1961*4bdc9457SAndroid Build Coastguard Worker 
1962*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_minmax_params_fn)(
1963*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_minmax_params params[XNN_MIN_ELEMENTS(1)],
1964*4bdc9457SAndroid Build Coastguard Worker   float min,
1965*4bdc9457SAndroid Build Coastguard Worker   float max);
1966*4bdc9457SAndroid Build Coastguard Worker 
1967*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_s8_minmax_params_fn)(
1968*4bdc9457SAndroid Build Coastguard Worker   union xnn_s8_minmax_params params[XNN_MIN_ELEMENTS(1)],
1969*4bdc9457SAndroid Build Coastguard Worker   int8_t min,
1970*4bdc9457SAndroid Build Coastguard Worker   int8_t max);
1971*4bdc9457SAndroid Build Coastguard Worker 
1972*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_u8_minmax_params_fn)(
1973*4bdc9457SAndroid Build Coastguard Worker   union xnn_u8_minmax_params params[XNN_MIN_ELEMENTS(1)],
1974*4bdc9457SAndroid Build Coastguard Worker   uint8_t min,
1975*4bdc9457SAndroid Build Coastguard Worker   uint8_t max);
1976*4bdc9457SAndroid Build Coastguard Worker 
1977*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_neg_params_fn)(
1978*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_neg_params params[XNN_MIN_ELEMENTS(1)]);
1979*4bdc9457SAndroid Build Coastguard Worker 
1980*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_neg_params_fn)(
1981*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_neg_params params[XNN_MIN_ELEMENTS(1)]);
1982*4bdc9457SAndroid Build Coastguard Worker 
1983*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_rnd_params_fn)(
1984*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_rnd_params params[XNN_MIN_ELEMENTS(1)]);
1985*4bdc9457SAndroid Build Coastguard Worker 
1986*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_rnd_params_fn)(
1987*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_rnd_params params[XNN_MIN_ELEMENTS(1)]);
1988*4bdc9457SAndroid Build Coastguard Worker 
1989*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_scaleminmax_params_fn)(
1990*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
1991*4bdc9457SAndroid Build Coastguard Worker   uint16_t scale,
1992*4bdc9457SAndroid Build Coastguard Worker   uint16_t min,
1993*4bdc9457SAndroid Build Coastguard Worker   uint16_t max);
1994*4bdc9457SAndroid Build Coastguard Worker 
1995*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_update_f16_scaleminmax_params_fn)(
1996*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
1997*4bdc9457SAndroid Build Coastguard Worker   uint16_t scale);
1998*4bdc9457SAndroid Build Coastguard Worker 
1999*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_scaleminmax_params_fn)(
2000*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
2001*4bdc9457SAndroid Build Coastguard Worker   float scale,
2002*4bdc9457SAndroid Build Coastguard Worker   float min,
2003*4bdc9457SAndroid Build Coastguard Worker   float max);
2004*4bdc9457SAndroid Build Coastguard Worker 
2005*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_update_f32_scaleminmax_params_fn)(
2006*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
2007*4bdc9457SAndroid Build Coastguard Worker   float scale);
2008*4bdc9457SAndroid Build Coastguard Worker 
2009*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_sigmoid_params_fn)(
2010*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_sigmoid_params params[XNN_MIN_ELEMENTS(1)]);
2011*4bdc9457SAndroid Build Coastguard Worker 
2012*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_sigmoid_params_fn)(
2013*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_sigmoid_params params[XNN_MIN_ELEMENTS(1)]);
2014*4bdc9457SAndroid Build Coastguard Worker 
2015*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_sqrt_params_fn)(
2016*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_sqrt_params params[XNN_MIN_ELEMENTS(1)]);
2017*4bdc9457SAndroid Build Coastguard Worker 
2018*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f32_sqrt_params_fn)(
2019*4bdc9457SAndroid Build Coastguard Worker   union xnn_f32_sqrt_params params[XNN_MIN_ELEMENTS(1)]);
2020*4bdc9457SAndroid Build Coastguard Worker 
2021*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_init_qc8_scale_params_fn)(
2022*4bdc9457SAndroid Build Coastguard Worker   size_t channels,
2023*4bdc9457SAndroid Build Coastguard Worker   size_t channels_tile,
2024*4bdc9457SAndroid Build Coastguard Worker   size_t stride,
2025*4bdc9457SAndroid Build Coastguard Worker   const float scale[XNN_MIN_ELEMENTS(1)],
2026*4bdc9457SAndroid Build Coastguard Worker   void* packed_w);
2027*4bdc9457SAndroid Build Coastguard Worker 
2028*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_gavgpool_neonfp16arith_params_fn)(
2029*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_gavgpool_params params[XNN_MIN_ELEMENTS(1)],
2030*4bdc9457SAndroid Build Coastguard Worker   uint16_t multiplier,
2031*4bdc9457SAndroid Build Coastguard Worker   uint16_t output_min,
2032*4bdc9457SAndroid Build Coastguard Worker   uint16_t output_max,
2033*4bdc9457SAndroid Build Coastguard Worker   uint32_t width);
2034*4bdc9457SAndroid Build Coastguard Worker 
2035*4bdc9457SAndroid Build Coastguard Worker typedef size_t (*xnn_init_f16_chw_params_fn)(
2036*4bdc9457SAndroid Build Coastguard Worker   union xnn_f16_chw_params params[XNN_MIN_ELEMENTS(1)],
2037*4bdc9457SAndroid Build Coastguard Worker   uint32_t width,
2038*4bdc9457SAndroid Build Coastguard Worker   uint16_t output_min,
2039*4bdc9457SAndroid Build Coastguard Worker   uint16_t output_max);
2040