xref: /aosp_15_r20/external/XNNPACK/bench/qu8-gemm-e2e.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2021 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 #include <algorithm>
7*4bdc9457SAndroid Build Coastguard Worker #include <cmath>
8*4bdc9457SAndroid Build Coastguard Worker #include <cstring>
9*4bdc9457SAndroid Build Coastguard Worker #include <functional>
10*4bdc9457SAndroid Build Coastguard Worker #include <random>
11*4bdc9457SAndroid Build Coastguard Worker #include <vector>
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack.h>
14*4bdc9457SAndroid Build Coastguard Worker 
15*4bdc9457SAndroid Build Coastguard Worker #include <benchmark/benchmark.h>
16*4bdc9457SAndroid Build Coastguard Worker #include "bench/end2end.h"
17*4bdc9457SAndroid Build Coastguard Worker #include "bench/utils.h"
18*4bdc9457SAndroid Build Coastguard Worker #include "models/models.h"
19*4bdc9457SAndroid Build Coastguard Worker 
20*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack.h>
21*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/gemm.h>
22*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/igemm.h>
23*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microfnptr.h>
24*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams-init.h>
25*4bdc9457SAndroid Build Coastguard Worker 
26*4bdc9457SAndroid Build Coastguard Worker 
GEMMEnd2EndBenchmark(benchmark::State & state,models::ExecutionPlanFactory model_factory,xnn_qu8_gemm_minmax_ukernel_function gemm,xnn_qu8_igemm_minmax_ukernel_function igemm,xnn_qu8_gemm_minmax_ukernel_function gemm1,xnn_qu8_igemm_minmax_ukernel_function igemm1,xnn_init_qu8_conv_minmax_params_fn init_params,uint8_t mr,uint8_t nr,uint8_t log2_kr=0,uint8_t log2_sr=0,benchmark::utils::IsaCheckFunction isa_check=nullptr)27*4bdc9457SAndroid Build Coastguard Worker static void GEMMEnd2EndBenchmark(
28*4bdc9457SAndroid Build Coastguard Worker   benchmark::State& state,
29*4bdc9457SAndroid Build Coastguard Worker   models::ExecutionPlanFactory model_factory,
30*4bdc9457SAndroid Build Coastguard Worker   xnn_qu8_gemm_minmax_ukernel_function gemm,
31*4bdc9457SAndroid Build Coastguard Worker   xnn_qu8_igemm_minmax_ukernel_function igemm,
32*4bdc9457SAndroid Build Coastguard Worker   xnn_qu8_gemm_minmax_ukernel_function gemm1,
33*4bdc9457SAndroid Build Coastguard Worker   xnn_qu8_igemm_minmax_ukernel_function igemm1,
34*4bdc9457SAndroid Build Coastguard Worker   xnn_init_qu8_conv_minmax_params_fn init_params,
35*4bdc9457SAndroid Build Coastguard Worker   uint8_t mr, uint8_t nr, uint8_t log2_kr = 0, uint8_t log2_sr = 0,
36*4bdc9457SAndroid Build Coastguard Worker   benchmark::utils::IsaCheckFunction isa_check = nullptr)
37*4bdc9457SAndroid Build Coastguard Worker {
38*4bdc9457SAndroid Build Coastguard Worker   if (isa_check && !isa_check(state)) {
39*4bdc9457SAndroid Build Coastguard Worker     return;
40*4bdc9457SAndroid Build Coastguard Worker   }
41*4bdc9457SAndroid Build Coastguard Worker   if (xnn_initialize(nullptr /* allocator */) != xnn_status_success) {
42*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to initialize XNNPACK");
43*4bdc9457SAndroid Build Coastguard Worker     return;
44*4bdc9457SAndroid Build Coastguard Worker   }
45*4bdc9457SAndroid Build Coastguard Worker 
46*4bdc9457SAndroid Build Coastguard Worker   // Override microkernels chosen in xnn_initialize
47*4bdc9457SAndroid Build Coastguard Worker   // Note: do not directly assign to xnn_params.qu8.gemm because it breaks older gcc.
48*4bdc9457SAndroid Build Coastguard Worker   std::memset(&xnn_params.qu8.gemm, 0, sizeof(xnn_params.qu8.gemm));
49*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.minmax.gemm[mr-1] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm));
50*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.minmax.igemm[mr-1] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm));
51*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.minmax.gemm[0] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm1));
52*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.minmax.igemm[0] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm1));
53*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.init.qu8 = init_params;
54*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.mr = mr;
55*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.nr = nr;
56*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.log2_kr = log2_kr;
57*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qu8.gemm.log2_sr = log2_sr;
58*4bdc9457SAndroid Build Coastguard Worker 
59*4bdc9457SAndroid Build Coastguard Worker   auto execution_plan = model_factory(nullptr);
60*4bdc9457SAndroid Build Coastguard Worker   if (execution_plan.empty()) {
61*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to create a model");
62*4bdc9457SAndroid Build Coastguard Worker     return;
63*4bdc9457SAndroid Build Coastguard Worker   }
64*4bdc9457SAndroid Build Coastguard Worker 
65*4bdc9457SAndroid Build Coastguard Worker   for (auto _ : state) {
66*4bdc9457SAndroid Build Coastguard Worker     for (const std::unique_ptr<xnn_operator, decltype(&xnn_delete_operator)>& op : execution_plan) {
67*4bdc9457SAndroid Build Coastguard Worker       xnn_status status = xnn_run_operator(op.get(), nullptr);
68*4bdc9457SAndroid Build Coastguard Worker       if (status != xnn_status_success) {
69*4bdc9457SAndroid Build Coastguard Worker         state.SkipWithError("failed to run a model");
70*4bdc9457SAndroid Build Coastguard Worker         return;
71*4bdc9457SAndroid Build Coastguard Worker       }
72*4bdc9457SAndroid Build Coastguard Worker     }
73*4bdc9457SAndroid Build Coastguard Worker   }
74*4bdc9457SAndroid Build Coastguard Worker 
75*4bdc9457SAndroid Build Coastguard Worker   const uint64_t cpu_frequency = benchmark::utils::GetCurrentCpuFrequency();
76*4bdc9457SAndroid Build Coastguard Worker   if (cpu_frequency != 0) {
77*4bdc9457SAndroid Build Coastguard Worker     state.counters["cpufreq"] = cpu_frequency;
78*4bdc9457SAndroid Build Coastguard Worker   }
79*4bdc9457SAndroid Build Coastguard Worker }
80*4bdc9457SAndroid Build Coastguard Worker 
81*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)82*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
83*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
84*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53,
85*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53,
86*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
87*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
88*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
89*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
90*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
91*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)92*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
93*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
94*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53,
95*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53,
96*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
97*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
98*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
99*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
100*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
101*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State & state,models::ExecutionPlanFactory model)102*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State& state, models::ExecutionPlanFactory model) {
103*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
104*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7,
105*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7,
106*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
107*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
108*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
109*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
110*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
111*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State & state,models::ExecutionPlanFactory model)112*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State& state, models::ExecutionPlanFactory model) {
113*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
114*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
115*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
116*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
117*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
118*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
119*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
120*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
121*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)122*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
123*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
124*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64,
125*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64,
126*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
127*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
128*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
129*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
130*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
131*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State & state,models::ExecutionPlanFactory model)132*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
133*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
134*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64,
135*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64,
136*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
137*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
138*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
139*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
140*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
141*4bdc9457SAndroid Build Coastguard Worker   }
142*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53)
BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53)143*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53)
144*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7)
145*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7)
146*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64)
147*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__aarch32_neon_mlal_lane_ld64)
148*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
149*4bdc9457SAndroid Build Coastguard Worker 
150*4bdc9457SAndroid Build Coastguard Worker 
151*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
152*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16c4__aarch64_neondot_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
153*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
154*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55,
155*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55,
156*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
157*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
158*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
159*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
160*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
161*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State & state,models::ExecutionPlanFactory model)162*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
163*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
164*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128,
165*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128,
166*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
167*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
168*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
169*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
170*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
171*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8c4__aarch64_neondot_ld128(benchmark::State & state,models::ExecutionPlanFactory model)172*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8c4__aarch64_neondot_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
173*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
174*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128,
175*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128,
176*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
177*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
178*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
179*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
180*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
181*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8c4__aarch64_neondot_cortex_a55(benchmark::State & state,models::ExecutionPlanFactory model)182*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8c4__aarch64_neondot_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
183*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
184*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_cortex_a55,
185*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_cortex_a55,
186*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
187*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
188*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
189*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
190*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
191*4bdc9457SAndroid Build Coastguard Worker   }
192*4bdc9457SAndroid Build Coastguard Worker 
193*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8c4__aarch64_neondot_cortex_a55);
194*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16c4__aarch64_neondot_cortex_a55);
195*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8c4__aarch64_neondot_ld128);
196*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16c4__aarch64_neondot_ld128);
197*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
198*4bdc9457SAndroid Build Coastguard Worker 
199*4bdc9457SAndroid Build Coastguard Worker 
200*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)201*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
202*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
203*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75,
204*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75,
205*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
206*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
207*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
208*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
209*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
210*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)211*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
212*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
213*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a75,
214*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a75,
215*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
216*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
217*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
218*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
219*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
220*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)221*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
222*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
223*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53,
224*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53,
225*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
226*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
227*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
228*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
229*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
230*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)231*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
232*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
233*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53,
234*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53,
235*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
236*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
237*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
238*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
239*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
240*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)241*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
242*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
243*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64,
244*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64,
245*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
246*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
247*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
248*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
249*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
250*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State & state,models::ExecutionPlanFactory model)251*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
252*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
253*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64,
254*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64,
255*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
256*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
257*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
258*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
259*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
260*4bdc9457SAndroid Build Coastguard Worker   }
261*4bdc9457SAndroid Build Coastguard Worker 
262*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a75);
263*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a75);
264*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53);
265*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53);
266*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_ld64);
267*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64);
268*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
269*4bdc9457SAndroid Build Coastguard Worker 
270*4bdc9457SAndroid Build Coastguard Worker 
271*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
qu8_gemm_1x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)272*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_1x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
273*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
274*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
275*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
276*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
277*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
278*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
279*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
280*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
281*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)282*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
283*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
284*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot,
285*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_2x8c4__neondot,
286*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
287*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
288*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
289*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
290*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
291*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)292*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
293*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
294*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot,
295*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_3x8c4__neondot,
296*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
297*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
298*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
299*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
300*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
301*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)302*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
303*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
304*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot,
305*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8c4__neondot,
306*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
307*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
308*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
309*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
310*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
311*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_5x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)312*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_5x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
313*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
314*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot,
315*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_5x8c4__neondot,
316*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
317*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
318*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
319*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
320*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
321*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_6x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)322*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_6x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
323*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
324*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_6x8c4__neondot,
325*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_6x8c4__neondot,
326*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
327*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
328*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
329*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
330*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
331*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_8x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)332*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_8x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
333*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
334*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_8x8c4__neondot,
335*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_8x8c4__neondot,
336*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
337*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
338*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
339*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
340*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
341*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_1x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)342*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_1x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
343*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
344*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
345*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
346*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
347*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
348*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
349*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
350*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
351*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)352*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
353*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
354*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_2x16c4__neondot,
355*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_2x16c4__neondot,
356*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
357*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
358*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
359*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
360*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
361*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)362*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
363*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
364*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_3x16c4__neondot,
365*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_3x16c4__neondot,
366*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
367*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
368*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
369*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
370*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
371*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)372*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
373*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
374*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__neondot,
375*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16c4__neondot,
376*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
377*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
378*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
379*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
380*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
381*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_5x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)382*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_5x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
383*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
384*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_5x16c4__neondot,
385*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_5x16c4__neondot,
386*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
387*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
388*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
389*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
390*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
391*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_6x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)392*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_6x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
393*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
394*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot,
395*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_6x16c4__neondot,
396*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
397*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
398*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
399*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
400*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
401*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_8x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)402*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_8x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
403*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
404*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_8x16c4__neondot,
405*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_8x16c4__neondot,
406*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
407*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
408*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
409*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
410*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
411*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x32c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)412*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x32c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
413*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
414*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_2x32c4__neondot,
415*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_2x32c4__neondot,
416*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot,
417*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x32c4__neondot,
418*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
419*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 32 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
420*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
421*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x32c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)422*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x32c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
423*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
424*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_3x32c4__neondot,
425*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_3x32c4__neondot,
426*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot,
427*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x32c4__neondot,
428*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
429*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 32 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
430*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
431*4bdc9457SAndroid Build Coastguard Worker   }
432*4bdc9457SAndroid Build Coastguard Worker 
433*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_1x8c4__neondot);
434*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x8c4__neondot);
435*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x8c4__neondot);
436*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8c4__neondot);
437*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_5x8c4__neondot);
438*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_6x8c4__neondot);
439*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_8x8c4__neondot);
440*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_1x16c4__neondot);
441*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x16c4__neondot);
442*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x16c4__neondot);
443*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16c4__neondot);
444*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_5x16c4__neondot);
445*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_6x16c4__neondot);
446*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_8x16c4__neondot);
447*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x32c4__neondot);
448*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x32c4__neondot);
449*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
450*4bdc9457SAndroid Build Coastguard Worker 
451*4bdc9457SAndroid Build Coastguard Worker 
452*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
qu8_gemm_2x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)453*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
454*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
455*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane,
456*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane,
457*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
458*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
459*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
460*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
461*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
462*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)463*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
464*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
465*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane,
466*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane,
467*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
468*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
469*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
470*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
471*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
472*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)473*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
474*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
475*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane,
476*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane,
477*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
478*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
479*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
480*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
481*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
482*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_6x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)483*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_6x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
484*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
485*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane,
486*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane,
487*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
488*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
489*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
490*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
491*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
492*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)493*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
494*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
495*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane,
496*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane,
497*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
498*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
499*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
500*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
501*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
502*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)503*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
504*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
505*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane,
506*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane,
507*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
508*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
509*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
510*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
511*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
512*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)513*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
514*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
515*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane,
516*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane,
517*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
518*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
519*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
520*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
521*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
522*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_6x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)523*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_6x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
524*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
525*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane,
526*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane,
527*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
528*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
529*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_rndnu_neon_params,
530*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
531*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
532*4bdc9457SAndroid Build Coastguard Worker   }
533*4bdc9457SAndroid Build Coastguard Worker 
534*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x8__neon_mlal_lane);
535*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x8__neon_mlal_lane);
536*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x8__neon_mlal_lane);
537*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_6x8__neon_mlal_lane);
538*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x16__neon_mlal_lane);
539*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x16__neon_mlal_lane);
540*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16__neon_mlal_lane);
541*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_6x16__neon_mlal_lane);
542*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
543*4bdc9457SAndroid Build Coastguard Worker 
544*4bdc9457SAndroid Build Coastguard Worker 
545*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM
qu8_gemm_1x1c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)546*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_1x1c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
547*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
548*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
549*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
550*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
551*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
552*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_armsimd32_params,
553*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 1  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
554*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
555*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x1c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)556*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x1c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
557*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
558*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x1c4__armsimd32,
559*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x1c4__armsimd32,
560*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
561*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
562*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_armsimd32_params,
563*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 1  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
564*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
565*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_1x2c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)566*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_1x2c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
567*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
568*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
569*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
570*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
571*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
572*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_armsimd32_params,
573*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 2  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
574*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
575*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x2c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)576*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x2c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
577*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
578*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x2c4__armsimd32,
579*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x2c4__armsimd32,
580*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
581*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
582*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_armsimd32_params,
583*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 2  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
584*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
585*4bdc9457SAndroid Build Coastguard Worker   }
586*4bdc9457SAndroid Build Coastguard Worker 
587*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_1x1c4__armsimd32);
588*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x1c4__armsimd32);
589*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_1x2c4__armsimd32);
590*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x2c4__armsimd32);
591*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM
592*4bdc9457SAndroid Build Coastguard Worker 
593*4bdc9457SAndroid Build Coastguard Worker 
594*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
qu8_gemm_2x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)595*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
596*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
597*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x16c8__avx512skx,
598*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x16c8__avx512skx,
599*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
600*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
601*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_avx512_params,
602*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
603*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
604*4bdc9457SAndroid Build Coastguard Worker   }
605*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_3x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)606*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
607*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
608*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x16c8__avx512skx,
609*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x16c8__avx512skx,
610*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
611*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
612*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_avx512_params,
613*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
614*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
615*4bdc9457SAndroid Build Coastguard Worker   }
616*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_4x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)617*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
618*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
619*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x16c8__avx512skx,
620*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x16c8__avx512skx,
621*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
622*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
623*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_avx512_params,
624*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
625*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
626*4bdc9457SAndroid Build Coastguard Worker   }
627*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x8c8__avx2(benchmark::State & state,models::ExecutionPlanFactory model)628*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x8c8__avx2(benchmark::State& state, models::ExecutionPlanFactory model) {
629*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
630*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x8c8__avx2,
631*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x8c8__avx2,
632*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x8c8__avx2,
633*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x8c8__avx2,
634*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_avx2_params,
635*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
636*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX2);
637*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x8c8__avx2(benchmark::State & state,models::ExecutionPlanFactory model)638*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x8c8__avx2(benchmark::State& state, models::ExecutionPlanFactory model) {
639*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
640*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x8c8__avx2,
641*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x8c8__avx2,
642*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x8c8__avx2,
643*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x8c8__avx2,
644*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_avx2_params,
645*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
646*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX2);
647*4bdc9457SAndroid Build Coastguard Worker   }
648*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)649*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
650*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
651*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld64,
652*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__xop_ld64,
653*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
654*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
655*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
656*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
657*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
658*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)659*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
660*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
661*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld128,
662*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__xop_ld128,
663*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
664*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
665*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
666*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
667*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
668*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)669*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
670*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
671*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld64,
672*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__xop_ld64,
673*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
674*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
675*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
676*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
677*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
678*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)679*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
680*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
681*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld128,
682*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__xop_ld128,
683*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
684*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
685*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
686*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
687*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
688*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)689*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
690*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
691*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld64,
692*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__xop_ld64,
693*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
694*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
695*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
696*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
697*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
698*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)699*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
700*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
701*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld128,
702*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__xop_ld128,
703*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
704*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
705*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
706*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
707*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
708*4bdc9457SAndroid Build Coastguard Worker   }
709*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)710*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
711*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
712*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld64,
713*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__xop_ld64,
714*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
715*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
716*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
717*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
718*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
719*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)720*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
721*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
722*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld64,
723*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__xop_ld64,
724*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
725*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
726*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
727*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
728*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
729*4bdc9457SAndroid Build Coastguard Worker   }
730*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)731*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
732*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
733*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld128,
734*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__xop_ld128,
735*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
736*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
737*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
738*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
739*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
740*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)741*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
742*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
743*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld128,
744*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__xop_ld128,
745*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
746*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
747*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
748*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
749*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
750*4bdc9457SAndroid Build Coastguard Worker   }
751*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)752*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
753*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
754*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld64,
755*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__avx_ld64,
756*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
757*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
758*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
759*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
760*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
761*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)762*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
763*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
764*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld128,
765*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__avx_ld128,
766*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
767*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
768*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
769*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
770*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
771*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)772*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
773*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
774*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld64,
775*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__avx_ld64,
776*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
777*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
778*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
779*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
780*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
781*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)782*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
783*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
784*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld128,
785*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__avx_ld128,
786*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
787*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
788*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
789*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
790*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
791*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)792*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
793*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
794*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld64,
795*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__avx_ld64,
796*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
797*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
798*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
799*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
800*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
801*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)802*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
803*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
804*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld128,
805*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__avx_ld128,
806*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
807*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
808*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
809*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
810*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
811*4bdc9457SAndroid Build Coastguard Worker   }
812*4bdc9457SAndroid Build Coastguard Worker 
813*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)814*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
815*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
816*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld64,
817*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__avx_ld64,
818*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
819*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
820*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
821*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
822*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
823*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c8__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)824*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
825*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
826*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld128,
827*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__avx_ld128,
828*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
829*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
830*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
831*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
832*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
833*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)834*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
835*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
836*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld64,
837*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__avx_ld64,
838*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
839*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
840*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
841*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
842*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
843*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)844*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
845*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
846*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld128,
847*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__avx_ld128,
848*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
849*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
850*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
851*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
852*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
853*4bdc9457SAndroid Build Coastguard Worker   }
854*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)855*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
856*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
857*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld64,
858*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__sse41_ld64,
859*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
860*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
861*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
862*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
863*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
864*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)865*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
866*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
867*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld128,
868*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__sse41_ld128,
869*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
870*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
871*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
872*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
873*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
874*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)875*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
876*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
877*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld64,
878*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__sse41_ld64,
879*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
880*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
881*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
882*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
883*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
884*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)885*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
886*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
887*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld128,
888*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__sse41_ld128,
889*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
890*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
891*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
892*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
893*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
894*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)895*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
896*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
897*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld64,
898*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__sse41_ld64,
899*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
900*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
901*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
902*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
903*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
904*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)905*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
906*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
907*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld128,
908*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__sse41_ld128,
909*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
910*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
911*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
912*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
913*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
914*4bdc9457SAndroid Build Coastguard Worker   }
915*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)916*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
917*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
918*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld64,
919*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__sse41_ld64,
920*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
921*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
922*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
923*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
924*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
925*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c8__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)926*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
927*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
928*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld128,
929*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__sse41_ld128,
930*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
931*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
932*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
933*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
934*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
935*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)936*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
937*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
938*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld64,
939*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__sse41_ld64,
940*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
941*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
942*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
943*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
944*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
945*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)946*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
947*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
948*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld128,
949*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__sse41_ld128,
950*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
951*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
952*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
953*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
954*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
955*4bdc9457SAndroid Build Coastguard Worker   }
956*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)957*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
958*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
959*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld64,
960*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__sse2_ld64,
961*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
962*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
963*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
964*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
965*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)966*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
967*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
968*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld128,
969*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__sse2_ld128,
970*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
971*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
972*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
973*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
974*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)975*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
976*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
977*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld64,
978*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__sse2_ld64,
979*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
980*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
981*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
982*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
983*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)984*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
985*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
986*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld128,
987*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__sse2_ld128,
988*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
989*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
990*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
991*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
992*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)993*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
994*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
995*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld64,
996*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__sse2_ld64,
997*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
998*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
999*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1000*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
1001*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1002*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1003*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1004*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld128,
1005*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__sse2_ld128,
1006*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
1007*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
1008*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1009*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
1010*4bdc9457SAndroid Build Coastguard Worker   }
1011*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1012*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1013*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1014*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld64,
1015*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__sse2_ld64,
1016*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
1017*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
1018*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1019*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
1020*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c8__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1021*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1022*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1023*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld128,
1024*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__sse2_ld128,
1025*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
1026*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
1027*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1028*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
1029*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1030*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1031*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1032*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld64,
1033*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__sse2_ld64,
1034*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
1035*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
1036*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1037*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
1038*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1039*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1040*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1041*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld128,
1042*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__sse2_ld128,
1043*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
1044*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
1045*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_sse2_params,
1046*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
1047*4bdc9457SAndroid Build Coastguard Worker   }
1048*4bdc9457SAndroid Build Coastguard Worker 
1049*4bdc9457SAndroid Build Coastguard Worker 
1050*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x16c8__avx512skx);
1051*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x16c8__avx512skx);
1052*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x16c8__avx512skx);
1053*4bdc9457SAndroid Build Coastguard Worker 
1054*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x8c8__avx2);
1055*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x8c8__avx2);
1056*4bdc9457SAndroid Build Coastguard Worker 
1057*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__xop_ld64);
1058*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__xop_ld128);
1059*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__xop_ld64);
1060*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__xop_ld128);
1061*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__xop_ld64);
1062*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__xop_ld128);
1063*4bdc9457SAndroid Build Coastguard Worker 
1064*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__xop_ld64);
1065*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__xop_ld128);
1066*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__xop_ld64);
1067*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__xop_ld128);
1068*4bdc9457SAndroid Build Coastguard Worker 
1069*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__avx_ld64);
1070*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__avx_ld128);
1071*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__avx_ld64);
1072*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__avx_ld128);
1073*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__avx_ld64);
1074*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__avx_ld128);
1075*4bdc9457SAndroid Build Coastguard Worker 
1076*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__avx_ld64);
1077*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__avx_ld128);
1078*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__avx_ld64);
1079*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__avx_ld128);
1080*4bdc9457SAndroid Build Coastguard Worker 
1081*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__sse41_ld64);
1082*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__sse41_ld128);
1083*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__sse41_ld64);
1084*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__sse41_ld128);
1085*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__sse41_ld64);
1086*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__sse41_ld128);
1087*4bdc9457SAndroid Build Coastguard Worker 
1088*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__sse41_ld64);
1089*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__sse41_ld128);
1090*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__sse41_ld64);
1091*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__sse41_ld128);
1092*4bdc9457SAndroid Build Coastguard Worker 
1093*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__sse2_ld64);
1094*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__sse2_ld128);
1095*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__sse2_ld64);
1096*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__sse2_ld128);
1097*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__sse2_ld64);
1098*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__sse2_ld128);
1099*4bdc9457SAndroid Build Coastguard Worker 
1100*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__sse2_ld64);
1101*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__sse2_ld128);
1102*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__sse2_ld64);
1103*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__sse2_ld128);
1104*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1105*4bdc9457SAndroid Build Coastguard Worker 
1106*4bdc9457SAndroid Build Coastguard Worker 
1107*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
qu8_gemm_2x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1108*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1109*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1110*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld64,
1111*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld64,
1112*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1113*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1114*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1115*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1116*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1117*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1118*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1119*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld128,
1120*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld128,
1121*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1122*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1123*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1124*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1125*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1126*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1127*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1128*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld64,
1129*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld64,
1130*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1131*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1132*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1133*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1134*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1135*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1136*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1137*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld128,
1138*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld128,
1139*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1140*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1141*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1142*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1143*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1144*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1145*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1146*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld64,
1147*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld64,
1148*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1149*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
1150*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1151*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1152*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1153*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1154*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1155*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld128,
1156*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld128,
1157*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1158*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
1159*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1160*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */);
1161*4bdc9457SAndroid Build Coastguard Worker   }
1162*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1163*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1164*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1165*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld64,
1166*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld64,
1167*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1168*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1169*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1170*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1171*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1172*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1173*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1174*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld128,
1175*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld128,
1176*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1177*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1178*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1179*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1180*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1181*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1182*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1183*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld64,
1184*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld64,
1185*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1186*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1187*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1188*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1189*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1190*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1191*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1192*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld128,
1193*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld128,
1194*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1195*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1196*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1197*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1198*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1199*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1200*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1201*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld64,
1202*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld64,
1203*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1204*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
1205*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1206*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1207*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1208*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1209*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1210*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld128,
1211*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld128,
1212*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1213*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
1214*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1215*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
1216*4bdc9457SAndroid Build Coastguard Worker   }
1217*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1218*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1219*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1220*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld64,
1221*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld64,
1222*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1223*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1224*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1225*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1226*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1227*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1228*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1229*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld128,
1230*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld128,
1231*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1232*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1233*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1234*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1235*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1236*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1237*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1238*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld64,
1239*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld64,
1240*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1241*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1242*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1243*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1244*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1245*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1246*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1247*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld128,
1248*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld128,
1249*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1250*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1251*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1252*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1253*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)1254*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
1255*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1256*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld64,
1257*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld64,
1258*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1259*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
1260*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1261*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1262*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)1263*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
1264*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1265*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld128,
1266*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld128,
1267*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1268*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
1269*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_wasmsimd_params,
1270*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 3 /* log2_kr */);
1271*4bdc9457SAndroid Build Coastguard Worker   }
1272*4bdc9457SAndroid Build Coastguard Worker 
1273*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__wasmsimd_dot16x2_ld64)
BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__wasmsimd_dot16x2_ld128)1274*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2__wasmsimd_dot16x2_ld128)
1275*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__wasmsimd_dot16x2_ld64)
1276*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2__wasmsimd_dot16x2_ld128)
1277*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__wasmsimd_dot16x2_ld64)
1278*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2__wasmsimd_dot16x2_ld128)
1279*4bdc9457SAndroid Build Coastguard Worker 
1280*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64)
1281*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128)
1282*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64)
1283*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128)
1284*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64)
1285*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128)
1286*4bdc9457SAndroid Build Coastguard Worker 
1287*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__wasmsimd_dot16x2_ld64)
1288*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4c8__wasmsimd_dot16x2_ld128)
1289*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__wasmsimd_dot16x2_ld64)
1290*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4c8__wasmsimd_dot16x2_ld128)
1291*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c8__wasmsimd_dot16x2_ld64)
1292*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4c8__wasmsimd_dot16x2_ld128)
1293*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1294*4bdc9457SAndroid Build Coastguard Worker 
1295*4bdc9457SAndroid Build Coastguard Worker 
1296*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1297*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1298*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1299*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x2__wasm_fmagic,
1300*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x2__wasm_fmagic,
1301*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1302*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1303*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1304*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 2 /* nr */);
1305*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x2__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1306*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1307*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1308*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x2__wasm_fmagic,
1309*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x2__wasm_fmagic,
1310*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1311*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1312*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1313*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 2 /* nr */);
1314*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x2__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1315*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1316*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1317*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x2__wasm_fmagic,
1318*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x2__wasm_fmagic,
1319*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1320*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
1321*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1322*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
1323*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_2x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1324*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_2x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1325*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1326*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_2x4__wasm_fmagic,
1327*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_2x4__wasm_fmagic,
1328*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1329*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1330*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1331*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */);
1332*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_3x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1333*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_3x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1334*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1335*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_3x4__wasm_fmagic,
1336*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_3x4__wasm_fmagic,
1337*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1338*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1339*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1340*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */);
1341*4bdc9457SAndroid Build Coastguard Worker   }
qu8_gemm_4x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1342*4bdc9457SAndroid Build Coastguard Worker   static void qu8_gemm_4x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1343*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1344*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_4x4__wasm_fmagic,
1345*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_4x4__wasm_fmagic,
1346*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1347*4bdc9457SAndroid Build Coastguard Worker       xnn_qu8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
1348*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1349*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */);
1350*4bdc9457SAndroid Build Coastguard Worker   }
1351*4bdc9457SAndroid Build Coastguard Worker 
1352*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x2__wasm_fmagic)
BENCHMARK_QU8_END2END(qu8_gemm_3x2__wasm_fmagic)1353*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x2__wasm_fmagic)
1354*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x2__wasm_fmagic)
1355*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_2x4__wasm_fmagic)
1356*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_3x4__wasm_fmagic)
1357*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QU8_END2END(qu8_gemm_4x4__wasm_fmagic)
1358*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1359*4bdc9457SAndroid Build Coastguard Worker 
1360*4bdc9457SAndroid Build Coastguard Worker 
1361*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1362*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1363*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_fmagic,
1364*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x2__scalar_fmagic,
1365*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1366*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1367*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1368*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
1369*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x2__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1370*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1371*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1372*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_fmagic,
1373*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x2__scalar_fmagic,
1374*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1375*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1376*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1377*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
1378*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x2__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1379*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1380*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1381*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_fmagic,
1382*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x2__scalar_fmagic,
1383*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1384*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
1385*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1386*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
1387*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_2x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1388*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1389*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1390*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_fmagic,
1391*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x4__scalar_fmagic,
1392*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1393*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1394*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1395*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
1396*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1397*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1398*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1399*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_fmagic,
1400*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x4__scalar_fmagic,
1401*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1402*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1403*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1404*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
1405*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)1406*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1407*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1408*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_fmagic,
1409*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x4__scalar_fmagic,
1410*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1411*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
1412*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params,
1413*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
1414*4bdc9457SAndroid Build Coastguard Worker }
1415*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1416*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1417*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1418*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_imagic,
1419*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x2__scalar_imagic,
1420*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1421*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1422*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1423*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
1424*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1425*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1426*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1427*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_imagic,
1428*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x2__scalar_imagic,
1429*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1430*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1431*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1432*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
1433*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1434*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1435*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1436*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_imagic,
1437*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x2__scalar_imagic,
1438*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1439*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
1440*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1441*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
1442*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_2x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1443*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1444*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1445*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_imagic,
1446*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x4__scalar_imagic,
1447*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1448*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1449*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1450*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
1451*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1452*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1453*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1454*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_imagic,
1455*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x4__scalar_imagic,
1456*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1457*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1458*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1459*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
1460*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)1461*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
1462*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1463*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_imagic,
1464*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x4__scalar_imagic,
1465*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1466*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
1467*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params,
1468*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
1469*4bdc9457SAndroid Build Coastguard Worker }
1470*4bdc9457SAndroid Build Coastguard Worker 
qu8_gemm_2x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1471*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1472*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1473*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_lrintf,
1474*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x2__scalar_lrintf,
1475*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1476*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1477*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1478*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
1479*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1480*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1481*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1482*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_lrintf,
1483*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x2__scalar_lrintf,
1484*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1485*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1486*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1487*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
1488*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1489*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1490*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1491*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_lrintf,
1492*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x2__scalar_lrintf,
1493*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1494*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
1495*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1496*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
1497*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_2x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1498*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_2x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1499*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1500*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_lrintf,
1501*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_2x4__scalar_lrintf,
1502*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1503*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1504*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1505*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
1506*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_3x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1507*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_3x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1508*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1509*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_lrintf,
1510*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_3x4__scalar_lrintf,
1511*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1512*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1513*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1514*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
1515*4bdc9457SAndroid Build Coastguard Worker }
qu8_gemm_4x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)1516*4bdc9457SAndroid Build Coastguard Worker static void qu8_gemm_4x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
1517*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
1518*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_lrintf,
1519*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_4x4__scalar_lrintf,
1520*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1521*4bdc9457SAndroid Build Coastguard Worker     xnn_qu8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
1522*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params,
1523*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
1524*4bdc9457SAndroid Build Coastguard Worker }
1525*4bdc9457SAndroid Build Coastguard Worker 
1526*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x2__scalar_fmagic)
1527*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x2__scalar_fmagic)
1528*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x2__scalar_fmagic)
1529*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x4__scalar_fmagic)
1530*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x4__scalar_fmagic)
1531*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x4__scalar_fmagic)
1532*4bdc9457SAndroid Build Coastguard Worker 
1533*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x2__scalar_imagic)
1534*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x2__scalar_imagic)
1535*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x2__scalar_imagic)
1536*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x4__scalar_imagic)
1537*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x4__scalar_imagic)
1538*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x4__scalar_imagic)
1539*4bdc9457SAndroid Build Coastguard Worker 
1540*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x2__scalar_lrintf)
1541*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x2__scalar_lrintf)
1542*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x2__scalar_lrintf)
1543*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_2x4__scalar_lrintf)
1544*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_3x4__scalar_lrintf)
1545*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QU8_END2END(qu8_gemm_4x4__scalar_lrintf)
1546*4bdc9457SAndroid Build Coastguard Worker 
1547*4bdc9457SAndroid Build Coastguard Worker 
1548*4bdc9457SAndroid Build Coastguard Worker #ifndef XNNPACK_BENCHMARK_NO_MAIN
1549*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_MAIN();
1550*4bdc9457SAndroid Build Coastguard Worker #endif
1551