xref: /aosp_15_r20/external/XNNPACK/bench/qs8-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_qs8_gemm_minmax_ukernel_function gemm,xnn_qs8_igemm_minmax_ukernel_function igemm,xnn_qs8_gemm_minmax_ukernel_function gemm1,xnn_qs8_igemm_minmax_ukernel_function igemm1,xnn_init_qs8_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_qs8_gemm_minmax_ukernel_function gemm,
31*4bdc9457SAndroid Build Coastguard Worker   xnn_qs8_igemm_minmax_ukernel_function igemm,
32*4bdc9457SAndroid Build Coastguard Worker   xnn_qs8_gemm_minmax_ukernel_function gemm1,
33*4bdc9457SAndroid Build Coastguard Worker   xnn_qs8_igemm_minmax_ukernel_function igemm1,
34*4bdc9457SAndroid Build Coastguard Worker   xnn_init_qs8_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.qs8.gemm because it breaks older gcc.
48*4bdc9457SAndroid Build Coastguard Worker   std::memset(&xnn_params.qs8.gemm, 0, sizeof(xnn_params.qs8.gemm));
49*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.minmax.gemm[mr-1] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm));
50*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.minmax.igemm[mr-1] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm));
51*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.minmax.gemm[0] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm1));
52*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.minmax.igemm[0] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm1));
53*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.init.qs8 = init_params;
54*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.mr = mr;
55*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.nr = nr;
56*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.gemm.log2_kr = log2_kr;
57*4bdc9457SAndroid Build Coastguard Worker   xnn_params.qs8.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 
82*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
qs8_gemm_4x8c4__aarch32_neondot_cortex_a55(benchmark::State & state,models::ExecutionPlanFactory model)83*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__aarch32_neondot_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
84*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
85*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_cortex_a55,
86*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_cortex_a55,
87*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
88*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
89*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
90*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
91*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
92*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__aarch32_neondot_ld64(benchmark::State & state,models::ExecutionPlanFactory model)93*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__aarch32_neondot_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
94*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
95*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_ld64,
96*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_ld64,
97*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
98*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
99*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
100*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
101*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
102*4bdc9457SAndroid Build Coastguard Worker   }
103*4bdc9457SAndroid Build Coastguard Worker 
104*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__aarch32_neondot_cortex_a55)
BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__aarch32_neondot_ld64)105*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__aarch32_neondot_ld64)
106*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
107*4bdc9457SAndroid Build Coastguard Worker 
108*4bdc9457SAndroid Build Coastguard Worker 
109*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
110*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
111*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
112*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53,
113*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53,
114*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
115*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
116*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
117*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
118*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
119*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)120*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
121*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
122*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53,
123*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53,
124*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
125*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
126*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
127*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
128*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
129*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State & state,models::ExecutionPlanFactory model)130*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State& state, models::ExecutionPlanFactory model) {
131*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
132*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7,
133*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7,
134*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
135*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
136*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
137*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
138*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
139*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State & state,models::ExecutionPlanFactory model)140*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State& state, models::ExecutionPlanFactory model) {
141*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
142*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
143*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
144*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
145*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
146*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
147*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
148*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
149*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)150*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
151*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
152*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64,
153*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64,
154*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
155*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7,
156*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
157*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
158*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
159*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State & state,models::ExecutionPlanFactory model)160*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
161*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
162*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64,
163*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64,
164*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
165*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7,
166*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
167*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
168*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
169*4bdc9457SAndroid Build Coastguard Worker   }
170*4bdc9457SAndroid Build Coastguard Worker 
171*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53)
BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53)172*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53)
173*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7)
174*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7)
175*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64)
176*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64)
177*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
178*4bdc9457SAndroid Build Coastguard Worker 
179*4bdc9457SAndroid Build Coastguard Worker 
180*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
181*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__aarch64_neondot_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
182*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
183*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55,
184*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55,
185*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld64,
186*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
187*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
188*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
189*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
190*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__aarch64_neondot_ld32(benchmark::State & state,models::ExecutionPlanFactory model)191*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__aarch64_neondot_ld32(benchmark::State& state, models::ExecutionPlanFactory model) {
192*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
193*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld32,
194*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neondot,
195*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld32,
196*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
197*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
198*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
199*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
200*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__aarch64_neondot_ld64(benchmark::State & state,models::ExecutionPlanFactory model)201*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__aarch64_neondot_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
202*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
203*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld64,
204*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld64,
205*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld64,
206*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
207*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
208*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
209*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
210*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State & state,models::ExecutionPlanFactory model)211*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
212*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
213*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128,
214*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128,
215*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld64,
216*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
217*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
218*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
219*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
220*4bdc9457SAndroid Build Coastguard Worker   }
221*4bdc9457SAndroid Build Coastguard Worker 
222*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__aarch64_neondot_cortex_a55)
BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__aarch64_neondot_ld32)223*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__aarch64_neondot_ld32)
224*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__aarch64_neondot_ld64)
225*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__aarch64_neondot_ld128)
226*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
227*4bdc9457SAndroid Build Coastguard Worker 
228*4bdc9457SAndroid Build Coastguard Worker 
229*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
230*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
231*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
232*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_ld64,
233*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_ld64,
234*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
235*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
236*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
237*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
238*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
239*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State & state,models::ExecutionPlanFactory model)240*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
241*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
242*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_prfm_ld64,
243*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_prfm_ld64,
244*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
245*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
246*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
247*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
248*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
249*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)250*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
251*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
252*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53,
253*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53,
254*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
255*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
256*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
257*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
258*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
259*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)260*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
261*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
262*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53,
263*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53,
264*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
265*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
266*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
267*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
268*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
269*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)270*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
271*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
272*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64,
273*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64,
274*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
275*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
276*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
277*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
278*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
279*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State & state,models::ExecutionPlanFactory model)280*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
281*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
282*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64,
283*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64,
284*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
285*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
286*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
287*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
288*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
289*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__aarch64_neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)290*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__aarch64_neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
291*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
292*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal,
293*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal,
294*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal,
295*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal,
296*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
297*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
298*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
299*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__aarch64_neon_mlal_prfm(benchmark::State & state,models::ExecutionPlanFactory model)300*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__aarch64_neon_mlal_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
301*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
302*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm,
303*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm,
304*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm,
305*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm,
306*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
307*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
308*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
309*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)310*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
311*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
312*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_cortex_a53,
313*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal,
314*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal,
315*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal,
316*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
317*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
318*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
319*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)320*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
321*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
322*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm_cortex_a53,
323*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm_cortex_a53,
324*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm_cortex_a53,
325*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm_cortex_a53,
326*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
327*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
328*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
329*4bdc9457SAndroid Build Coastguard Worker   }
330*4bdc9457SAndroid Build Coastguard Worker 
331*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64)
BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64)332*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64)
333*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53)
334*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53)
335*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64)
336*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64)
337*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53)
338*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53)
339*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__aarch64_neon_mlal_prfm)
340*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__aarch64_neon_mlal)
341*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
342*4bdc9457SAndroid Build Coastguard Worker 
343*4bdc9457SAndroid Build Coastguard Worker 
344*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
345*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
346*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
347*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neondot,
348*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neondot,
349*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
350*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
351*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
352*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
353*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
354*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)355*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
356*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
357*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x8c4__neondot,
358*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x8c4__neondot,
359*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
360*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
361*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
362*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
363*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
364*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_8x8c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)365*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_8x8c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
366*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
367*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_8x8c4__neondot,
368*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_8x8c4__neondot,
369*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot,
370*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot,
371*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
372*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
373*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
374*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)375*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
376*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
377*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neondot,
378*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neondot,
379*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
380*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
381*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
382*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
383*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
384*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)385*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
386*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
387*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x16c4__neondot,
388*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x16c4__neondot,
389*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
390*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
391*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
392*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
393*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
394*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_8x16c4__neondot(benchmark::State & state,models::ExecutionPlanFactory model)395*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_8x16c4__neondot(benchmark::State& state, models::ExecutionPlanFactory model) {
396*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
397*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_8x16c4__neondot,
398*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_8x16c4__neondot,
399*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neondot,
400*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot,
401*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
402*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
403*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONDOT);
404*4bdc9457SAndroid Build Coastguard Worker   }
405*4bdc9457SAndroid Build Coastguard Worker 
406*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neondot);
407*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x8c4__neondot);
408*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_8x8c4__neondot);
409*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neondot);
410*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x16c4__neondot);
411*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_8x16c4__neondot);
412*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
413*4bdc9457SAndroid Build Coastguard Worker 
414*4bdc9457SAndroid Build Coastguard Worker 
415*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
qs8_gemm_2x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)416*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
417*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
418*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane,
419*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane,
420*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
421*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
422*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
423*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
424*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
425*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)426*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
427*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
428*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane,
429*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane,
430*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
431*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
432*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
433*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
434*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
435*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)436*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
437*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
438*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane,
439*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane,
440*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
441*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
442*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
443*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
444*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
445*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)446*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
447*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
448*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane,
449*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane,
450*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
451*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
452*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
453*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
454*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
455*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)456*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
457*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
458*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane,
459*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane,
460*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
461*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
462*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
463*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
464*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
465*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)466*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
467*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
468*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane,
469*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane,
470*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
471*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
472*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
473*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
474*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
475*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x8__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)476*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x8__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
477*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
478*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane,
479*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane,
480*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
481*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane,
482*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
483*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
484*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
485*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x16__neon_mlal_lane(benchmark::State & state,models::ExecutionPlanFactory model)486*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x16__neon_mlal_lane(benchmark::State& state, models::ExecutionPlanFactory model) {
487*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
488*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane,
489*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane,
490*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
491*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane,
492*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
493*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
494*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
495*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)496*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
497*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
498*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane_prfm,
499*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane_prfm,
500*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
501*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
502*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
503*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
504*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
505*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)506*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
507*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
508*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane_prfm,
509*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane_prfm,
510*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
511*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
512*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
513*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
514*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
515*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)516*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
517*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
518*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane_prfm,
519*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane_prfm,
520*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
521*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
522*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
523*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
524*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
525*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)526*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
527*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
528*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane_prfm,
529*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane_prfm,
530*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
531*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
532*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
533*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
534*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
535*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)536*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
537*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
538*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane_prfm,
539*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane_prfm,
540*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
541*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
542*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
543*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
544*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
545*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)546*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
547*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
548*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane_prfm,
549*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane_prfm,
550*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
551*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
552*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
553*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
554*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
555*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x8__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)556*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x8__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
557*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
558*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane_prfm,
559*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane_prfm,
560*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
561*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm,
562*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
563*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8  /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
564*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
565*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_6x16__neon_mlal_lane_prfm(benchmark::State & state,models::ExecutionPlanFactory model)566*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_6x16__neon_mlal_lane_prfm(benchmark::State& state, models::ExecutionPlanFactory model) {
567*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
568*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane_prfm,
569*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane_prfm,
570*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
571*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm,
572*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
573*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
574*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
575*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)576*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
577*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
578*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_dup,
579*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_dup,
580*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
581*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
582*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
583*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
584*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
585*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)586*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
587*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
588*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_dup,
589*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_dup,
590*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
591*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
592*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
593*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
594*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
595*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)596*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
597*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
598*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_dup,
599*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_dup,
600*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
601*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
602*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
603*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
604*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
605*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)606*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
607*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
608*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_dup,
609*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_dup,
610*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
611*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
612*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
613*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
614*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
615*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)616*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
617*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
618*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_dup,
619*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_dup,
620*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
621*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup,
622*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
623*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
624*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
625*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)626*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
627*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
628*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_dup,
629*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_dup,
630*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
631*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup,
632*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
633*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
634*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
635*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)636*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
637*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
638*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld1r,
639*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld1r,
640*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
641*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
642*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
643*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
644*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
645*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)646*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
647*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
648*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld1r,
649*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld1r,
650*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
651*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
652*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
653*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
654*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
655*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)656*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
657*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
658*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld1r,
659*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld1r,
660*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
661*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
662*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
663*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
664*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
665*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)666*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
667*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
668*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld1r,
669*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld1r,
670*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
671*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
672*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
673*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
674*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
675*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)676*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
677*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
678*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld1r,
679*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld1r,
680*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
681*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r,
682*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
683*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
684*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
685*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)686*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
687*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
688*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld1r,
689*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld1r,
690*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
691*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r,
692*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
693*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
694*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
695*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)696*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
697*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
698*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld2r,
699*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld2r,
700*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
701*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
702*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
703*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
704*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
705*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)706*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
707*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
708*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld2r,
709*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld2r,
710*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
711*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
712*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
713*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
714*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
715*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)716*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
717*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
718*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld2r,
719*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld2r,
720*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
721*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
722*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
723*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
724*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
725*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)726*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
727*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
728*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld2r,
729*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld2r,
730*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
731*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
732*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
733*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
734*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
735*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)736*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
737*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
738*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld2r,
739*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld2r,
740*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
741*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r,
742*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
743*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
744*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
745*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)746*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
747*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
748*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld2r,
749*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld2r,
750*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
751*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r,
752*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
753*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
754*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
755*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)756*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
757*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
758*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld4r,
759*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld4r,
760*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
761*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
762*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
763*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
764*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
765*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)766*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
767*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
768*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld4r,
769*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld4r,
770*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
771*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
772*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
773*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
774*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
775*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)776*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
777*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
778*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld4r,
779*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld4r,
780*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
781*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
782*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
783*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
784*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
785*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)786*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
787*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
788*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld4r,
789*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld4r,
790*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
791*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
792*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
793*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
794*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
795*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)796*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
797*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
798*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld4r,
799*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld4r,
800*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
801*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r,
802*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
803*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
804*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
805*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mlal_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)806*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mlal_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
807*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
808*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld4r,
809*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld4r,
810*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
811*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r,
812*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
813*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
814*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
815*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)816*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
817*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
818*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2s4__neon_mlal,
819*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2s4__neon_mlal,
820*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
821*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
822*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
823*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
824*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
825*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)826*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
827*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
828*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2s4__neon_mlal,
829*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2s4__neon_mlal,
830*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
831*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
832*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
833*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
834*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
835*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)836*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
837*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
838*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2s4__neon_mlal,
839*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2s4__neon_mlal,
840*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
841*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
842*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
843*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
844*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
845*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)846*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
847*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
848*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2s4__neon_mlal,
849*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2s4__neon_mlal,
850*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
851*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
852*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
853*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
854*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
855*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)856*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
857*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
858*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2s4__neon_mlal,
859*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2s4__neon_mlal,
860*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
861*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal,
862*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
863*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
864*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
865*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2s4__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)866*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2s4__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
867*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
868*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2s4__neon_mlal,
869*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2s4__neon_mlal,
870*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
871*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal,
872*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
873*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
874*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
875*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)876*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
877*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
878*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_dup,
879*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_dup,
880*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
881*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
882*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
883*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
884*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
885*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)886*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
887*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
888*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_dup,
889*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_dup,
890*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
891*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
892*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
893*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
894*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
895*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)896*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
897*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
898*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_dup,
899*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_dup,
900*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
901*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
902*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
903*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
904*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
905*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)906*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
907*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
908*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_dup,
909*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_dup,
910*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
911*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
912*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
913*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
914*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
915*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)916*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
917*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
918*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_dup,
919*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_dup,
920*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
921*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup,
922*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
923*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
924*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
925*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mlal_dup(benchmark::State & state,models::ExecutionPlanFactory model)926*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mlal_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
927*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
928*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_dup,
929*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_dup,
930*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
931*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup,
932*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
933*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
934*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
935*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)936*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
937*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
938*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld1r,
939*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld1r,
940*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
941*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
942*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
943*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
944*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
945*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)946*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
947*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
948*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld1r,
949*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld1r,
950*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
951*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
952*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
953*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
954*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
955*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)956*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
957*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
958*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld1r,
959*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld1r,
960*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
961*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
962*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
963*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
964*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
965*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)966*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
967*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
968*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld1r,
969*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld1r,
970*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
971*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
972*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
973*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
974*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
975*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)976*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
977*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
978*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld1r,
979*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld1r,
980*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
981*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r,
982*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
983*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
984*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
985*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mlal_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)986*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mlal_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
987*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
988*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld1r,
989*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld1r,
990*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
991*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r,
992*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
993*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
994*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
995*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)996*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
997*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
998*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld2r,
999*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld2r,
1000*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1001*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1002*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1003*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1004*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1005*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1006*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1007*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1008*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld2r,
1009*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld2r,
1010*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1011*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1012*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1013*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1014*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1015*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1016*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1017*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1018*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld2r,
1019*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld2r,
1020*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1021*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1022*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1023*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1024*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1025*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1026*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1027*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1028*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld2r,
1029*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld2r,
1030*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1031*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1032*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1033*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1034*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1035*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1036*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1037*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1038*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld2r,
1039*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld2r,
1040*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1041*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r,
1042*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1043*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1044*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1045*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mlal_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1046*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mlal_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1047*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1048*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld2r,
1049*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld2r,
1050*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1051*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r,
1052*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1053*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1054*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1055*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1056*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1057*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1058*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4s2__neon_mlal,
1059*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4s2__neon_mlal,
1060*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1061*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1062*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1063*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1064*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1065*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1066*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1067*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1068*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4s2__neon_mlal,
1069*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4s2__neon_mlal,
1070*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1071*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1072*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1073*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1074*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1075*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1076*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1077*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1078*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4s2__neon_mlal,
1079*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4s2__neon_mlal,
1080*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1081*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1082*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1083*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1084*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1085*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1086*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1087*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1088*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4s2__neon_mlal,
1089*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4s2__neon_mlal,
1090*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1091*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1092*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1093*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1094*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1095*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1096*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1097*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1098*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4s2__neon_mlal,
1099*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4s2__neon_mlal,
1100*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1101*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal,
1102*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1103*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1104*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1105*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4s2__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1106*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4s2__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1107*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1108*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4s2__neon_mlal,
1109*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4s2__neon_mlal,
1110*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1111*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal,
1112*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1113*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1114*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1115*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1116*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1117*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1118*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_dup,
1119*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_dup,
1120*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1121*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1122*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1123*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1124*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1125*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1126*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1127*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1128*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_dup,
1129*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_dup,
1130*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1131*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1132*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1133*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1134*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1135*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1136*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1137*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1138*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_dup,
1139*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_dup,
1140*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1141*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1142*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1143*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1144*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1145*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1146*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1147*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1148*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_dup,
1149*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_dup,
1150*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1151*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1152*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1153*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1154*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1155*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1156*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1157*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1158*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_dup,
1159*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_dup,
1160*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1161*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup,
1162*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1163*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1164*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1165*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1166*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1167*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1168*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_dup,
1169*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_dup,
1170*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1171*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup,
1172*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1173*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1174*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1175*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1176*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1177*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1178*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld1r,
1179*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld1r,
1180*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1181*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1182*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1183*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1184*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1185*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1186*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1187*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1188*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld1r,
1189*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld1r,
1190*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1191*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1192*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1193*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1194*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1195*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1196*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1197*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1198*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld1r,
1199*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld1r,
1200*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1201*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1202*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1203*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1204*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1205*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1206*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1207*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1208*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld1r,
1209*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld1r,
1210*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1211*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1212*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1213*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1214*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1215*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1216*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1217*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1218*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld1r,
1219*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld1r,
1220*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1221*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r,
1222*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1223*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1224*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1225*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1226*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1227*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1228*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld1r,
1229*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld1r,
1230*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1231*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r,
1232*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1233*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1234*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1235*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1236*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1237*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1238*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld2r,
1239*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld2r,
1240*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1241*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1242*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1243*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1244*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1245*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1246*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1247*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1248*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld2r,
1249*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld2r,
1250*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1251*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1252*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1253*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1254*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1255*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1256*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1257*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1258*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld2r,
1259*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld2r,
1260*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1261*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1262*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1263*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1264*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1265*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1266*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1267*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1268*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld2r,
1269*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld2r,
1270*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1271*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1272*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1273*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1274*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1275*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1276*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1277*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1278*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld2r,
1279*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld2r,
1280*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1281*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r,
1282*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1283*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1284*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1285*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1286*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1287*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1288*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld2r,
1289*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld2r,
1290*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1291*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r,
1292*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1293*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1294*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1295*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1296*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1297*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1298*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld4r,
1299*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld4r,
1300*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1301*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1302*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1303*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1304*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1305*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1306*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1307*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1308*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld4r,
1309*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld4r,
1310*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1311*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1312*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1313*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1314*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1315*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1316*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1317*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1318*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld4r,
1319*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld4r,
1320*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1321*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1322*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1323*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1324*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1325*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1326*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1327*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1328*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld4r,
1329*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld4r,
1330*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1331*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1332*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1333*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1334*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1335*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1336*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1337*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1338*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld4r,
1339*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld4r,
1340*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1341*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r,
1342*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1343*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1344*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1345*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2__neon_mull_ld4r(benchmark::State & state,models::ExecutionPlanFactory model)1346*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2__neon_mull_ld4r(benchmark::State& state, models::ExecutionPlanFactory model) {
1347*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1348*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld4r,
1349*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld4r,
1350*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1351*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r,
1352*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1353*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
1354*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1355*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1356*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1357*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1358*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2s4__neon_mull,
1359*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2s4__neon_mull,
1360*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1361*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1362*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1363*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1364*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1365*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1366*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1367*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1368*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2s4__neon_mull,
1369*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2s4__neon_mull,
1370*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1371*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1372*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1373*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1374*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1375*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1376*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1377*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1378*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2s4__neon_mull,
1379*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2s4__neon_mull,
1380*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1381*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1382*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1383*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1384*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1385*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1386*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1387*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1388*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2s4__neon_mull,
1389*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2s4__neon_mull,
1390*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1391*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1392*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1393*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1394*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1395*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1396*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1397*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1398*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2s4__neon_mull,
1399*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2s4__neon_mull,
1400*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1401*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull,
1402*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1403*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1404*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1405*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c2s4__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1406*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c2s4__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1407*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1408*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2s4__neon_mull,
1409*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2s4__neon_mull,
1410*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1411*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull,
1412*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1413*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
1414*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1415*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1416*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1417*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1418*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_dup,
1419*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_dup,
1420*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1421*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1422*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1423*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1424*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1425*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1426*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1427*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1428*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_dup,
1429*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_dup,
1430*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1431*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1432*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1433*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1434*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1435*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1436*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1437*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1438*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_dup,
1439*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_dup,
1440*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1441*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1442*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1443*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1444*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1445*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1446*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1447*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1448*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_dup,
1449*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_dup,
1450*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1451*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1452*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1453*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1454*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1455*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1456*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1457*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1458*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_dup,
1459*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_dup,
1460*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1461*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup,
1462*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1463*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1464*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1465*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mull_dup(benchmark::State & state,models::ExecutionPlanFactory model)1466*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mull_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1467*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1468*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_dup,
1469*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_dup,
1470*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1471*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup,
1472*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1473*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1474*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1475*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1476*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1477*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1478*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld1r,
1479*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld1r,
1480*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1481*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1482*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1483*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1484*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1485*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1486*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1487*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1488*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld1r,
1489*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld1r,
1490*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1491*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1492*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1493*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1494*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1495*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1496*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1497*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1498*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld1r,
1499*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld1r,
1500*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1501*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1502*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1503*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1504*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1505*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1506*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1507*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1508*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld1r,
1509*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld1r,
1510*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1511*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1512*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1513*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1514*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1515*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1516*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1517*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1518*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld1r,
1519*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld1r,
1520*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1521*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r,
1522*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1523*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1524*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1525*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mull_ld1r(benchmark::State & state,models::ExecutionPlanFactory model)1526*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mull_ld1r(benchmark::State& state, models::ExecutionPlanFactory model) {
1527*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1528*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld1r,
1529*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld1r,
1530*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1531*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r,
1532*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1533*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1534*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1535*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1536*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1537*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1538*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld2r,
1539*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld2r,
1540*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1541*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1542*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1543*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1544*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1545*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1546*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1547*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1548*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld2r,
1549*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld2r,
1550*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1551*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1552*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1553*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1554*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1555*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1556*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1557*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1558*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld2r,
1559*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld2r,
1560*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1561*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1562*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1563*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1564*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1565*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1566*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1567*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1568*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld2r,
1569*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld2r,
1570*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1571*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1572*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1573*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1574*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1575*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1576*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1577*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1578*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld2r,
1579*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld2r,
1580*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1581*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r,
1582*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1583*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1584*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1585*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4__neon_mull_ld2r(benchmark::State & state,models::ExecutionPlanFactory model)1586*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4__neon_mull_ld2r(benchmark::State& state, models::ExecutionPlanFactory model) {
1587*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1588*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld2r,
1589*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld2r,
1590*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1591*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r,
1592*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1593*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
1594*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1595*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1596*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1597*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1598*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4s2__neon_mull,
1599*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4s2__neon_mull,
1600*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1601*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1602*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1603*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1604*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1605*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1606*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1607*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1608*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4s2__neon_mull,
1609*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4s2__neon_mull,
1610*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1611*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1612*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1613*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1614*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1615*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1616*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1617*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1618*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4s2__neon_mull,
1619*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4s2__neon_mull,
1620*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1621*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1622*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1623*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1624*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1625*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1626*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1627*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1628*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4s2__neon_mull,
1629*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4s2__neon_mull,
1630*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1631*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1632*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1633*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1634*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1635*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1636*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1637*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1638*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4s2__neon_mull,
1639*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4s2__neon_mull,
1640*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1641*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull,
1642*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1643*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1644*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1645*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c4s2__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1646*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c4s2__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1647*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1648*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4s2__neon_mull,
1649*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4s2__neon_mull,
1650*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1651*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull,
1652*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1653*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 2 /* log2_kr */, 1 /* log2_sr */,
1654*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1655*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1656*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1657*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1658*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__neon_mull,
1659*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__neon_mull,
1660*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1661*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1662*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1663*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1664*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1665*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1666*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1667*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1668*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c8__neon_mull,
1669*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c8__neon_mull,
1670*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1671*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1672*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1673*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1674*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1675*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1676*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1677*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1678*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c8__neon_mull,
1679*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c8__neon_mull,
1680*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1681*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1682*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1683*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1684*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1685*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1686*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1687*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1688*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c8__neon_mull,
1689*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c8__neon_mull,
1690*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1691*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1692*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1693*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1694*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1695*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1696*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1697*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1698*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c8__neon_mull,
1699*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c8__neon_mull,
1700*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1701*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mull,
1702*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1703*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1704*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1705*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c8__neon_mull(benchmark::State & state,models::ExecutionPlanFactory model)1706*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c8__neon_mull(benchmark::State& state, models::ExecutionPlanFactory model) {
1707*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1708*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c8__neon_mull,
1709*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c8__neon_mull,
1710*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1711*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mull,
1712*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1713*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1714*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1715*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1716*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1717*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1718*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c16__neon_mlal,
1719*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c16__neon_mlal,
1720*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1721*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1722*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1723*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1724*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1725*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1726*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1727*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1728*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c16__neon_mlal,
1729*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c16__neon_mlal,
1730*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1731*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1732*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1733*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1734*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1735*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1736*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1737*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1738*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c16__neon_mlal,
1739*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c16__neon_mlal,
1740*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1741*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1742*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1743*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1744*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1745*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1746*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1747*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1748*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c16__neon_mlal,
1749*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c16__neon_mlal,
1750*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1751*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1752*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1753*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1754*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1755*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1756*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1757*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1758*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c16__neon_mlal,
1759*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c16__neon_mlal,
1760*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1761*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c16__neon_mlal,
1762*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1763*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1764*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1765*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c16__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1766*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c16__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1767*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1768*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c16__neon_mlal,
1769*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c16__neon_mlal,
1770*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1771*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c16__neon_mlal,
1772*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1773*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 4 /* log2_kr */, 0 /* log2_sr */,
1774*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1775*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1776*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1777*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1778*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__neon_mlal,
1779*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__neon_mlal,
1780*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1781*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1782*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1783*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1784*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1785*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x16c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1786*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1787*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1788*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c8__neon_mlal,
1789*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c8__neon_mlal,
1790*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1791*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1792*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1793*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1794*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1795*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1796*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1797*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1798*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c8__neon_mlal,
1799*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c8__neon_mlal,
1800*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1801*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1802*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1803*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1804*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1805*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1806*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1807*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1808*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c8__neon_mlal,
1809*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c8__neon_mlal,
1810*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1811*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1812*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1813*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1814*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1815*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x8c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1816*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x8c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1817*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1818*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c8__neon_mlal,
1819*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c8__neon_mlal,
1820*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1821*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mlal,
1822*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1823*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8  /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1824*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1825*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c8__neon_mlal(benchmark::State & state,models::ExecutionPlanFactory model)1826*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c8__neon_mlal(benchmark::State& state, models::ExecutionPlanFactory model) {
1827*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1828*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c8__neon_mlal,
1829*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c8__neon_mlal,
1830*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1831*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mlal,
1832*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_rndnu_neon_params,
1833*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
1834*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
1835*4bdc9457SAndroid Build Coastguard Worker   }
1836*4bdc9457SAndroid Build Coastguard Worker 
1837*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__neon_mlal);
1838*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c8__neon_mlal);
1839*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c8__neon_mlal);
1840*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c8__neon_mlal);
1841*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c8__neon_mlal);
1842*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c8__neon_mlal);
1843*4bdc9457SAndroid Build Coastguard Worker 
1844*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__neon_mull);
1845*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c8__neon_mull);
1846*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c8__neon_mull);
1847*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c8__neon_mull);
1848*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c8__neon_mull);
1849*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c8__neon_mull);
1850*4bdc9457SAndroid Build Coastguard Worker 
1851*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c16__neon_mlal);
1852*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c16__neon_mlal);
1853*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c16__neon_mlal);
1854*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c16__neon_mlal);
1855*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c16__neon_mlal);
1856*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c16__neon_mlal);
1857*4bdc9457SAndroid Build Coastguard Worker 
1858*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mlal_dup);
1859*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mlal_dup);
1860*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mlal_dup);
1861*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mlal_dup);
1862*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mlal_dup);
1863*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mlal_dup);
1864*4bdc9457SAndroid Build Coastguard Worker 
1865*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mull_dup);
1866*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mull_dup);
1867*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mull_dup);
1868*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mull_dup);
1869*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mull_dup);
1870*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mull_dup);
1871*4bdc9457SAndroid Build Coastguard Worker 
1872*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mlal_ld1r);
1873*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mlal_ld1r);
1874*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mlal_ld1r);
1875*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mlal_ld1r);
1876*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mlal_ld1r);
1877*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mlal_ld1r);
1878*4bdc9457SAndroid Build Coastguard Worker 
1879*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mull_ld1r);
1880*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mull_ld1r);
1881*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mull_ld1r);
1882*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mull_ld1r);
1883*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mull_ld1r);
1884*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mull_ld1r);
1885*4bdc9457SAndroid Build Coastguard Worker 
1886*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mlal_ld2r);
1887*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mlal_ld2r);
1888*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mlal_ld2r);
1889*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mlal_ld2r);
1890*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mlal_ld2r);
1891*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mlal_ld2r);
1892*4bdc9457SAndroid Build Coastguard Worker 
1893*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4__neon_mull_ld2r);
1894*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4__neon_mull_ld2r);
1895*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4__neon_mull_ld2r);
1896*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4__neon_mull_ld2r);
1897*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4__neon_mull_ld2r);
1898*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4__neon_mull_ld2r);
1899*4bdc9457SAndroid Build Coastguard Worker 
1900*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4s2__neon_mlal);
1901*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4s2__neon_mlal);
1902*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4s2__neon_mlal);
1903*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4s2__neon_mlal);
1904*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4s2__neon_mlal);
1905*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4s2__neon_mlal);
1906*4bdc9457SAndroid Build Coastguard Worker 
1907*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c4s2__neon_mull);
1908*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c4s2__neon_mull);
1909*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c4s2__neon_mull);
1910*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c4s2__neon_mull);
1911*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c4s2__neon_mull);
1912*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c4s2__neon_mull);
1913*4bdc9457SAndroid Build Coastguard Worker 
1914*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mlal_dup);
1915*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mlal_dup);
1916*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mlal_dup);
1917*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mlal_dup);
1918*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mlal_dup);
1919*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mlal_dup);
1920*4bdc9457SAndroid Build Coastguard Worker 
1921*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mull_dup);
1922*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mull_dup);
1923*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mull_dup);
1924*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mull_dup);
1925*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mull_dup);
1926*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mull_dup);
1927*4bdc9457SAndroid Build Coastguard Worker 
1928*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mlal_ld1r);
1929*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mlal_ld1r);
1930*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mlal_ld1r);
1931*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mlal_ld1r);
1932*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mlal_ld1r);
1933*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mlal_ld1r);
1934*4bdc9457SAndroid Build Coastguard Worker 
1935*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mull_ld1r);
1936*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mull_ld1r);
1937*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mull_ld1r);
1938*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mull_ld1r);
1939*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mull_ld1r);
1940*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mull_ld1r);
1941*4bdc9457SAndroid Build Coastguard Worker 
1942*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mlal_ld2r);
1943*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mlal_ld2r);
1944*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mlal_ld2r);
1945*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mlal_ld2r);
1946*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mlal_ld2r);
1947*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mlal_ld2r);
1948*4bdc9457SAndroid Build Coastguard Worker 
1949*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mull_ld2r);
1950*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mull_ld2r);
1951*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mull_ld2r);
1952*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mull_ld2r);
1953*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mull_ld2r);
1954*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mull_ld2r);
1955*4bdc9457SAndroid Build Coastguard Worker 
1956*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mlal_ld4r);
1957*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mlal_ld4r);
1958*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mlal_ld4r);
1959*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mlal_ld4r);
1960*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mlal_ld4r);
1961*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mlal_ld4r);
1962*4bdc9457SAndroid Build Coastguard Worker 
1963*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2__neon_mull_ld4r);
1964*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2__neon_mull_ld4r);
1965*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2__neon_mull_ld4r);
1966*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2__neon_mull_ld4r);
1967*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2__neon_mull_ld4r);
1968*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2__neon_mull_ld4r);
1969*4bdc9457SAndroid Build Coastguard Worker 
1970*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2s4__neon_mlal);
1971*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2s4__neon_mlal);
1972*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2s4__neon_mlal);
1973*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2s4__neon_mlal);
1974*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2s4__neon_mlal);
1975*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2s4__neon_mlal);
1976*4bdc9457SAndroid Build Coastguard Worker 
1977*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c2s4__neon_mull);
1978*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c2s4__neon_mull);
1979*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c2s4__neon_mull);
1980*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c2s4__neon_mull);
1981*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8c2s4__neon_mull);
1982*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c2s4__neon_mull);
1983*4bdc9457SAndroid Build Coastguard Worker 
1984*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8__neon_mlal_lane);
1985*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16__neon_mlal_lane);
1986*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8__neon_mlal_lane);
1987*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16__neon_mlal_lane);
1988*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__neon_mlal_lane);
1989*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__neon_mlal_lane);
1990*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x8__neon_mlal_lane);
1991*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x16__neon_mlal_lane);
1992*4bdc9457SAndroid Build Coastguard Worker 
1993*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8__neon_mlal_lane_prfm);
1994*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16__neon_mlal_lane_prfm);
1995*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8__neon_mlal_lane_prfm);
1996*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16__neon_mlal_lane_prfm);
1997*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x8__neon_mlal_lane_prfm);
1998*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16__neon_mlal_lane_prfm);
1999*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x8__neon_mlal_lane_prfm);
2000*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_6x16__neon_mlal_lane_prfm);
2001*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
2002*4bdc9457SAndroid Build Coastguard Worker 
2003*4bdc9457SAndroid Build Coastguard Worker 
2004*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM
qs8_gemm_1x1c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)2005*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_1x1c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
2006*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2007*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2008*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2009*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2010*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2011*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_armsimd32_params,
2012*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 1  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
2013*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
2014*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x1c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)2015*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x1c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
2016*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2017*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x1c4__armsimd32,
2018*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x1c4__armsimd32,
2019*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2020*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x1c4__armsimd32,
2021*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_armsimd32_params,
2022*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 1  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
2023*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
2024*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_1x2c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)2025*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_1x2c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
2026*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2027*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2028*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2029*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2030*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2031*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_armsimd32_params,
2032*4bdc9457SAndroid Build Coastguard Worker       1 /* mr */, 2  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
2033*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
2034*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x2c4__armsimd32(benchmark::State & state,models::ExecutionPlanFactory model)2035*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x2c4__armsimd32(benchmark::State& state, models::ExecutionPlanFactory model) {
2036*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2037*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x2c4__armsimd32,
2038*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x2c4__armsimd32,
2039*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2040*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2c4__armsimd32,
2041*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_armsimd32_params,
2042*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 2  /* nr */, 2 /* log2_kr */, 0 /* log2_sr */,
2043*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckARMV6);
2044*4bdc9457SAndroid Build Coastguard Worker   }
2045*4bdc9457SAndroid Build Coastguard Worker 
2046*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_1x1c4__armsimd32);
2047*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x1c4__armsimd32);
2048*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_1x2c4__armsimd32);
2049*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x2c4__armsimd32);
2050*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM
2051*4bdc9457SAndroid Build Coastguard Worker 
2052*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
qs8_gemm_2x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)2053*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
2054*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2055*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x16c8__avx512skx,
2056*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x16c8__avx512skx,
2057*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2058*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2059*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_avx512_params,
2060*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2061*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
2062*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)2063*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
2064*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2065*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x16c8__avx512skx,
2066*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x16c8__avx512skx,
2067*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2068*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2069*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_avx512_params,
2070*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2071*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
2072*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x16c8__avx512skx(benchmark::State & state,models::ExecutionPlanFactory model)2073*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x16c8__avx512skx(benchmark::State& state, models::ExecutionPlanFactory model) {
2074*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2075*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x16c8__avx512skx,
2076*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x16c8__avx512skx,
2077*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2078*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x16c8__avx512skx,
2079*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_avx512_params,
2080*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2081*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
2082*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x8c8__avx2(benchmark::State & state,models::ExecutionPlanFactory model)2083*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x8c8__avx2(benchmark::State& state, models::ExecutionPlanFactory model) {
2084*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2085*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x8c8__avx2,
2086*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x8c8__avx2,
2087*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x8c8__avx2,
2088*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x8c8__avx2,
2089*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_avx2_params,
2090*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 8 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2091*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX2);
2092*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x8c8__avx2(benchmark::State & state,models::ExecutionPlanFactory model)2093*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x8c8__avx2(benchmark::State& state, models::ExecutionPlanFactory model) {
2094*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2095*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x8c8__avx2,
2096*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x8c8__avx2,
2097*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x8c8__avx2,
2098*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x8c8__avx2,
2099*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_avx2_params,
2100*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2101*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX2);
2102*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2103*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2104*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2105*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld64,
2106*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__xop_ld64,
2107*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2108*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2109*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2110*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2111*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2112*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2113*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2114*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2115*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld128,
2116*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__xop_ld128,
2117*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2118*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2119*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2120*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2121*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2122*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2123*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2124*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2125*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld64,
2126*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__xop_ld64,
2127*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2128*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2129*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2130*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2131*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2132*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2133*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2134*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2135*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld128,
2136*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__xop_ld128,
2137*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2138*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2139*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2140*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2141*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2142*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2143*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2144*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2145*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld64,
2146*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__xop_ld64,
2147*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2148*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld64,
2149*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2150*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2151*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2152*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2153*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2154*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2155*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld128,
2156*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__xop_ld128,
2157*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2158*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__xop_ld128,
2159*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2160*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2161*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2162*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2163*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2164*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2165*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__xop_ld64,
2166*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__xop_ld64,
2167*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2168*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2169*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2170*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2171*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2172*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2173*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2174*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2175*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__xop_ld128,
2176*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__xop_ld128,
2177*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2178*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2179*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2180*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2181*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2182*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2183*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2184*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2185*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__xop_ld64,
2186*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__xop_ld64,
2187*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2188*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2189*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2190*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2191*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2192*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2193*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2194*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2195*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__xop_ld128,
2196*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__xop_ld128,
2197*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2198*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2199*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2200*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2201*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2202*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2203*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2204*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2205*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__xop_ld64,
2206*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__xop_ld64,
2207*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2208*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld64,
2209*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2210*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2211*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2212*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2213*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2214*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2215*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__xop_ld128,
2216*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__xop_ld128,
2217*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2218*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__xop_ld128,
2219*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2220*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2221*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2222*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2223*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2224*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2225*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld64,
2226*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__xop_ld64,
2227*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
2228*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
2229*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2230*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2231*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2232*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__xop_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2233*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__xop_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2234*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2235*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld64,
2236*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__xop_ld64,
2237*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
2238*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld64,
2239*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2240*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2241*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2242*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2243*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2244*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2245*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld128,
2246*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__xop_ld128,
2247*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
2248*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
2249*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2250*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2251*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2252*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__xop_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2253*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__xop_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2254*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2255*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld128,
2256*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__xop_ld128,
2257*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
2258*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__xop_ld128,
2259*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2260*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2261*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckXOP);
2262*4bdc9457SAndroid Build Coastguard Worker   }
2263*4bdc9457SAndroid Build Coastguard Worker 
2264*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2265*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2266*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2267*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld64,
2268*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__avx_ld64,
2269*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2270*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2271*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2272*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2273*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2274*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2275*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2276*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2277*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld128,
2278*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__avx_ld128,
2279*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2280*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2281*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2282*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2283*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2284*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2285*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2286*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2287*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld64,
2288*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__avx_ld64,
2289*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2290*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2291*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2292*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2293*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2294*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2295*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2296*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2297*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld128,
2298*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__avx_ld128,
2299*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2300*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2301*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2302*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2303*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2304*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2305*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2306*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2307*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld64,
2308*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__avx_ld64,
2309*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2310*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld64,
2311*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2312*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2313*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2314*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2315*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2316*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2317*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld128,
2318*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__avx_ld128,
2319*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2320*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__avx_ld128,
2321*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2322*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2323*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2324*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2325*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2326*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2327*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld64,
2328*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__avx_ld64,
2329*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2330*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2331*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2332*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2333*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2334*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2335*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2336*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2337*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld128,
2338*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__avx_ld128,
2339*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2340*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2341*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2342*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2343*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2344*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2345*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2346*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2347*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld64,
2348*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__avx_ld64,
2349*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2350*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2351*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2352*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2353*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2354*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2355*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2356*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2357*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld128,
2358*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__avx_ld128,
2359*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2360*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2361*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2362*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2363*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2364*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2365*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2366*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2367*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld64,
2368*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__avx_ld64,
2369*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2370*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64,
2371*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2372*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2373*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2374*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2375*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2376*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2377*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld128,
2378*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__avx_ld128,
2379*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2380*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128,
2381*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2382*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2383*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2384*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2385*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2386*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2387*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld64,
2388*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__avx_ld64,
2389*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
2390*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
2391*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2392*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2393*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2394*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2395*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2396*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2397*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld128,
2398*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__avx_ld128,
2399*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
2400*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
2401*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2402*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2403*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2404*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__avx_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2405*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__avx_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2406*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2407*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld64,
2408*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__avx_ld64,
2409*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
2410*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld64,
2411*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2412*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2413*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2414*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__avx_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2415*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__avx_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2416*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2417*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld128,
2418*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__avx_ld128,
2419*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
2420*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__avx_ld128,
2421*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2422*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2423*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
2424*4bdc9457SAndroid Build Coastguard Worker   }
2425*4bdc9457SAndroid Build Coastguard Worker 
2426*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2427*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2428*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2429*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld64,
2430*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__sse41_ld64,
2431*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2432*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2433*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2434*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2435*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2436*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2437*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2438*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2439*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld128,
2440*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__sse41_ld128,
2441*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2442*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2443*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2444*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2445*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2446*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2447*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2448*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2449*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld64,
2450*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__sse41_ld64,
2451*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2452*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2453*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2454*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2455*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2456*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2457*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2458*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2459*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld128,
2460*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__sse41_ld128,
2461*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2462*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2463*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2464*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2465*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2466*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2467*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2468*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2469*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld64,
2470*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__sse41_ld64,
2471*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2472*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld64,
2473*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2474*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2475*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2476*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2477*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2478*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2479*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld128,
2480*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__sse41_ld128,
2481*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2482*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse41_ld128,
2483*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2484*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */,
2485*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2486*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2487*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2488*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2489*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld64,
2490*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld64,
2491*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2492*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2493*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2494*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2495*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2496*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2497*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2498*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2499*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld128,
2500*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld128,
2501*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2502*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2503*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2504*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2505*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2506*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2507*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2508*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2509*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld64,
2510*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld64,
2511*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2512*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2513*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2514*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2515*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2516*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2517*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2518*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2519*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld128,
2520*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld128,
2521*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2522*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2523*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2524*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2525*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2526*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2527*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2528*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2529*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld64,
2530*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld64,
2531*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2532*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64,
2533*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2534*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2535*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2536*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2537*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2538*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2539*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld128,
2540*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld128,
2541*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2542*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128,
2543*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2544*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */,
2545*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2546*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2547*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2548*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2549*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld64,
2550*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__sse41_ld64,
2551*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
2552*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
2553*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2554*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2555*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2556*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2557*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2558*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2559*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld128,
2560*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__sse41_ld128,
2561*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
2562*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
2563*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2564*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2565*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2566*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__sse41_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2567*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__sse41_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2568*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2569*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld64,
2570*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__sse41_ld64,
2571*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
2572*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld64,
2573*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2574*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2575*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2576*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__sse41_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2577*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__sse41_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2578*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2579*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld128,
2580*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__sse41_ld128,
2581*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
2582*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse41_ld128,
2583*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse4_params,
2584*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2585*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSE41);
2586*4bdc9457SAndroid Build Coastguard Worker   }
2587*4bdc9457SAndroid Build Coastguard Worker 
2588*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x4c8__ssse3_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2589*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__ssse3_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2590*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2591*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__ssse3_ld64,
2592*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__ssse3_ld64,
2593*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld64,
2594*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__ssse3_ld64,
2595*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2596*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2597*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSSE3);
2598*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__ssse3_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2599*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__ssse3_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2600*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2601*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__ssse3_ld128,
2602*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__ssse3_ld128,
2603*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld128,
2604*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__ssse3_ld128,
2605*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2606*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2607*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSSE3);
2608*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__ssse3_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2609*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__ssse3_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2610*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2611*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__ssse3_ld64,
2612*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__ssse3_ld64,
2613*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld64,
2614*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__ssse3_ld64,
2615*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2616*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2617*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSSE3);
2618*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__ssse3_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2619*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__ssse3_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2620*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2621*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__ssse3_ld128,
2622*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__ssse3_ld128,
2623*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld128,
2624*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__ssse3_ld128,
2625*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2626*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */,
2627*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckSSSE3);
2628*4bdc9457SAndroid Build Coastguard Worker   }
2629*4bdc9457SAndroid Build Coastguard Worker 
2630*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2631*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2632*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2633*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld64,
2634*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__sse2_ld64,
2635*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2636*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2637*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2638*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2639*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2640*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2641*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2642*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld128,
2643*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__sse2_ld128,
2644*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2645*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2646*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2647*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2648*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2649*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2650*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2651*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld64,
2652*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__sse2_ld64,
2653*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2654*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2655*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2656*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2657*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2658*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2659*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2660*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld128,
2661*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__sse2_ld128,
2662*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2663*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2664*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2665*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2666*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2667*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2668*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2669*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld64,
2670*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__sse2_ld64,
2671*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2672*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld64,
2673*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2674*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2675*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2676*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2677*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2678*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld128,
2679*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__sse2_ld128,
2680*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2681*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__sse2_ld128,
2682*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2683*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 0 /* log2_sr */);
2684*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2685*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2686*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2687*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld64,
2688*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld64,
2689*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2690*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2691*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2692*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2693*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2694*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2695*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2696*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld128,
2697*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld128,
2698*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2699*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2700*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2701*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2702*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2703*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2704*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2705*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld64,
2706*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld64,
2707*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2708*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2709*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2710*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2711*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2712*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2713*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2714*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld128,
2715*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld128,
2716*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2717*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2718*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2719*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2720*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2721*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2722*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2723*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld64,
2724*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld64,
2725*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2726*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64,
2727*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2728*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2729*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2730*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2731*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2732*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld128,
2733*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld128,
2734*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2735*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128,
2736*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2737*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2738*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2739*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2740*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2741*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld64,
2742*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__sse2_ld64,
2743*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
2744*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
2745*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2746*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
2747*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2748*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2749*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2750*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld128,
2751*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__sse2_ld128,
2752*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
2753*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
2754*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2755*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
2756*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__sse2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2757*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__sse2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2758*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2759*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld64,
2760*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__sse2_ld64,
2761*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
2762*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld64,
2763*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2764*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
2765*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__sse2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2766*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__sse2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2767*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2768*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld128,
2769*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__sse2_ld128,
2770*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
2771*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__sse2_ld128,
2772*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_sse2_params,
2773*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */, 0 /* log2_sr */);
2774*4bdc9457SAndroid Build Coastguard Worker   }
2775*4bdc9457SAndroid Build Coastguard Worker 
2776*4bdc9457SAndroid Build Coastguard Worker 
2777*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x16c8__avx512skx);
2778*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x16c8__avx512skx);
2779*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x16c8__avx512skx);
2780*4bdc9457SAndroid Build Coastguard Worker 
2781*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x8c8__avx2);
2782*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x8c8__avx2);
2783*4bdc9457SAndroid Build Coastguard Worker 
2784*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__xop_ld64);
2785*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__xop_ld128);
2786*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__xop_ld64);
2787*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__xop_ld128);
2788*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__xop_ld64);
2789*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__xop_ld128);
2790*4bdc9457SAndroid Build Coastguard Worker 
2791*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__xop_ld64);
2792*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__xop_ld128);
2793*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__xop_ld64);
2794*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__xop_ld128);
2795*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__xop_ld64);
2796*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__xop_ld128);
2797*4bdc9457SAndroid Build Coastguard Worker 
2798*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__xop_ld64);
2799*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__xop_ld128);
2800*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__xop_ld64);
2801*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__xop_ld128);
2802*4bdc9457SAndroid Build Coastguard Worker 
2803*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__avx_ld64);
2804*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__avx_ld128);
2805*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__avx_ld64);
2806*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__avx_ld128);
2807*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__avx_ld64);
2808*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__avx_ld128);
2809*4bdc9457SAndroid Build Coastguard Worker 
2810*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__avx_ld64);
2811*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__avx_ld128);
2812*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__avx_ld64);
2813*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__avx_ld128);
2814*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__avx_ld64);
2815*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__avx_ld128);
2816*4bdc9457SAndroid Build Coastguard Worker 
2817*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__avx_ld64);
2818*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__avx_ld128);
2819*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__avx_ld64);
2820*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__avx_ld128);
2821*4bdc9457SAndroid Build Coastguard Worker 
2822*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__sse41_ld64);
2823*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__sse41_ld128);
2824*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__sse41_ld64);
2825*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__sse41_ld128);
2826*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__sse41_ld64);
2827*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__sse41_ld128);
2828*4bdc9457SAndroid Build Coastguard Worker 
2829*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__sse41_ld64);
2830*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__sse41_ld128);
2831*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__sse41_ld64);
2832*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__sse41_ld128);
2833*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__sse41_ld64);
2834*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__sse41_ld128);
2835*4bdc9457SAndroid Build Coastguard Worker 
2836*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__sse41_ld64);
2837*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__sse41_ld128);
2838*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__sse41_ld64);
2839*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__sse41_ld128);
2840*4bdc9457SAndroid Build Coastguard Worker 
2841*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__ssse3_ld64);
2842*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__ssse3_ld128);
2843*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__ssse3_ld64);
2844*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__ssse3_ld128);
2845*4bdc9457SAndroid Build Coastguard Worker 
2846*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__sse2_ld64);
2847*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__sse2_ld128);
2848*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__sse2_ld64);
2849*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__sse2_ld128);
2850*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__sse2_ld64);
2851*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__sse2_ld128);
2852*4bdc9457SAndroid Build Coastguard Worker 
2853*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__sse2_ld64);
2854*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__sse2_ld128);
2855*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__sse2_ld64);
2856*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__sse2_ld128);
2857*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__sse2_ld64);
2858*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__sse2_ld128);
2859*4bdc9457SAndroid Build Coastguard Worker 
2860*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__sse2_ld64);
2861*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__sse2_ld128);
2862*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__sse2_ld64);
2863*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__sse2_ld128);
2864*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
2865*4bdc9457SAndroid Build Coastguard Worker 
2866*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
qs8_gemm_2x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2867*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2868*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2869*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld64,
2870*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld64,
2871*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2872*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2873*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2874*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2875*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2876*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2877*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2878*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld128,
2879*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld128,
2880*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2881*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2882*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2883*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2884*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2885*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2886*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2887*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld64,
2888*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld64,
2889*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2890*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2891*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2892*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2893*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2894*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2895*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2896*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld128,
2897*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld128,
2898*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2899*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2900*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2901*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2902*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2903*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2904*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2905*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld64,
2906*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld64,
2907*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2908*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64,
2909*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2910*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2911*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2912*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2913*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2914*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld128,
2915*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld128,
2916*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2917*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128,
2918*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2919*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */);
2920*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2921*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2922*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2923*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld64,
2924*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld64,
2925*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2926*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2927*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2928*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2929*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2930*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2931*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2932*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld128,
2933*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld128,
2934*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2935*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2936*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2937*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2938*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2939*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2940*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2941*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld64,
2942*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld64,
2943*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2944*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2945*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2946*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2947*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2948*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2949*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2950*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld128,
2951*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld128,
2952*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2953*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2954*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2955*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2956*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2957*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2958*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2959*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld64,
2960*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld64,
2961*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2962*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64,
2963*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2964*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2965*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2966*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2967*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2968*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld128,
2969*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld128,
2970*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2971*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128,
2972*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2973*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 1 /* log2_kr */, 2 /* log2_sr */);
2974*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2975*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2976*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2977*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld64,
2978*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld64,
2979*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
2980*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
2981*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2982*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */);
2983*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)2984*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
2985*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2986*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld128,
2987*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld128,
2988*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
2989*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
2990*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
2991*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */, 3 /* log2_kr */);
2992*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)2993*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
2994*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2995*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld64,
2996*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld64,
2997*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
2998*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
2999*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
3000*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */);
3001*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)3002*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
3003*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3004*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld128,
3005*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld128,
3006*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
3007*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
3008*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
3009*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */, 3 /* log2_kr */);
3010*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c8__wasmsimd_dot16x2_ld64(benchmark::State & state,models::ExecutionPlanFactory model)3011*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c8__wasmsimd_dot16x2_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
3012*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3013*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld64,
3014*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld64,
3015*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
3016*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64,
3017*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
3018*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 3 /* log2_kr */);
3019*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4c8__wasmsimd_dot16x2_ld128(benchmark::State & state,models::ExecutionPlanFactory model)3020*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4c8__wasmsimd_dot16x2_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
3021*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3022*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld128,
3023*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld128,
3024*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
3025*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128,
3026*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_wasmsimd_params,
3027*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */, 3 /* log2_kr */);
3028*4bdc9457SAndroid Build Coastguard Worker   }
3029*4bdc9457SAndroid Build Coastguard Worker 
3030*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__wasmsimd_dot16x2_ld64)
BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__wasmsimd_dot16x2_ld128)3031*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2__wasmsimd_dot16x2_ld128)
3032*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__wasmsimd_dot16x2_ld64)
3033*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2__wasmsimd_dot16x2_ld128)
3034*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__wasmsimd_dot16x2_ld64)
3035*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2__wasmsimd_dot16x2_ld128)
3036*4bdc9457SAndroid Build Coastguard Worker 
3037*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld64)
3038*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c2s4__wasmsimd_dot16x2_ld128)
3039*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld64)
3040*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c2s4__wasmsimd_dot16x2_ld128)
3041*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld64)
3042*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c2s4__wasmsimd_dot16x2_ld128)
3043*4bdc9457SAndroid Build Coastguard Worker 
3044*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__wasmsimd_dot16x2_ld64)
3045*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4c8__wasmsimd_dot16x2_ld128)
3046*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__wasmsimd_dot16x2_ld64)
3047*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4c8__wasmsimd_dot16x2_ld128)
3048*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c8__wasmsimd_dot16x2_ld64)
3049*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4c8__wasmsimd_dot16x2_ld128)
3050*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
3051*4bdc9457SAndroid Build Coastguard Worker 
3052*4bdc9457SAndroid Build Coastguard Worker 
3053*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
3054*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3055*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3056*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x2__wasm_fmagic,
3057*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x2__wasm_fmagic,
3058*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3059*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3060*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3061*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 2 /* nr */);
3062*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x2__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3063*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3064*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3065*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x2__wasm_fmagic,
3066*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x2__wasm_fmagic,
3067*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3068*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3069*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3070*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 2 /* nr */);
3071*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x2__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3072*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x2__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3073*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3074*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x2__wasm_fmagic,
3075*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x2__wasm_fmagic,
3076*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3077*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x2__wasm_fmagic,
3078*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3079*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
3080*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_2x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3081*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_2x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3082*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3083*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_2x4__wasm_fmagic,
3084*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_2x4__wasm_fmagic,
3085*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3086*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3087*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3088*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */);
3089*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_3x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3090*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_3x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3091*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3092*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_3x4__wasm_fmagic,
3093*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_3x4__wasm_fmagic,
3094*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3095*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3096*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3097*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 4 /* nr */);
3098*4bdc9457SAndroid Build Coastguard Worker   }
qs8_gemm_4x4__wasm_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3099*4bdc9457SAndroid Build Coastguard Worker   static void qs8_gemm_4x4__wasm_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3100*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
3101*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_4x4__wasm_fmagic,
3102*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_4x4__wasm_fmagic,
3103*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_gemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3104*4bdc9457SAndroid Build Coastguard Worker       xnn_qs8_igemm_minmax_fp32_ukernel_1x4__wasm_fmagic,
3105*4bdc9457SAndroid Build Coastguard Worker       xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3106*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */);
3107*4bdc9457SAndroid Build Coastguard Worker   }
3108*4bdc9457SAndroid Build Coastguard Worker 
3109*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x2__wasm_fmagic)
BENCHMARK_QS8_END2END(qs8_gemm_3x2__wasm_fmagic)3110*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x2__wasm_fmagic)
3111*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x2__wasm_fmagic)
3112*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_2x4__wasm_fmagic)
3113*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_3x4__wasm_fmagic)
3114*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_QS8_END2END(qs8_gemm_4x4__wasm_fmagic)
3115*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
3116*4bdc9457SAndroid Build Coastguard Worker 
3117*4bdc9457SAndroid Build Coastguard Worker 
3118*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3119*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3120*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x2__scalar_fmagic,
3121*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x2__scalar_fmagic,
3122*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3123*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3124*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3125*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
3126*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x2__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3127*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3128*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3129*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x2__scalar_fmagic,
3130*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x2__scalar_fmagic,
3131*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3132*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3133*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3134*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
3135*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x2__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3136*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x2__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3137*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3138*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x2__scalar_fmagic,
3139*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x2__scalar_fmagic,
3140*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3141*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_fmagic,
3142*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3143*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
3144*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3145*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3146*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3147*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x4__scalar_fmagic,
3148*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x4__scalar_fmagic,
3149*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3150*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3151*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3152*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
3153*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3154*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3155*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3156*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x4__scalar_fmagic,
3157*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x4__scalar_fmagic,
3158*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3159*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3160*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3161*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
3162*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4__scalar_fmagic(benchmark::State & state,models::ExecutionPlanFactory model)3163*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4__scalar_fmagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3164*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3165*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x4__scalar_fmagic,
3166*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x4__scalar_fmagic,
3167*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3168*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_fmagic,
3169*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params,
3170*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
3171*4bdc9457SAndroid Build Coastguard Worker }
3172*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3173*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3174*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3175*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x2__scalar_imagic,
3176*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x2__scalar_imagic,
3177*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3178*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3179*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3180*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
3181*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3182*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3183*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3184*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x2__scalar_imagic,
3185*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x2__scalar_imagic,
3186*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3187*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3188*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3189*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
3190*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x2__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3191*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x2__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3192*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3193*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x2__scalar_imagic,
3194*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x2__scalar_imagic,
3195*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3196*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_imagic,
3197*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3198*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
3199*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3200*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3201*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3202*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x4__scalar_imagic,
3203*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x4__scalar_imagic,
3204*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3205*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3206*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3207*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
3208*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3209*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3210*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3211*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x4__scalar_imagic,
3212*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x4__scalar_imagic,
3213*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3214*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3215*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3216*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
3217*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4__scalar_imagic(benchmark::State & state,models::ExecutionPlanFactory model)3218*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4__scalar_imagic(benchmark::State& state, models::ExecutionPlanFactory model) {
3219*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3220*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x4__scalar_imagic,
3221*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x4__scalar_imagic,
3222*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3223*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_imagic,
3224*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params,
3225*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
3226*4bdc9457SAndroid Build Coastguard Worker }
3227*4bdc9457SAndroid Build Coastguard Worker 
qs8_gemm_2x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3228*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3229*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3230*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x2__scalar_lrintf,
3231*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x2__scalar_lrintf,
3232*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3233*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3234*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3235*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 2 /* nr */);
3236*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3237*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3238*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3239*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x2__scalar_lrintf,
3240*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x2__scalar_lrintf,
3241*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3242*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3243*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3244*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 2 /* nr */);
3245*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x2__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3246*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x2__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3247*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3248*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x2__scalar_lrintf,
3249*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x2__scalar_lrintf,
3250*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3251*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x2__scalar_lrintf,
3252*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3253*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 2 /* nr */);
3254*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3255*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3256*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3257*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_2x4__scalar_lrintf,
3258*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_2x4__scalar_lrintf,
3259*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3260*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3261*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3262*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
3263*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3264*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3265*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3266*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_3x4__scalar_lrintf,
3267*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_3x4__scalar_lrintf,
3268*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3269*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3270*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3271*4bdc9457SAndroid Build Coastguard Worker     3 /* mr */, 4 /* nr */);
3272*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4__scalar_lrintf(benchmark::State & state,models::ExecutionPlanFactory model)3273*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4__scalar_lrintf(benchmark::State& state, models::ExecutionPlanFactory model) {
3274*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
3275*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_4x4__scalar_lrintf,
3276*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_4x4__scalar_lrintf,
3277*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3278*4bdc9457SAndroid Build Coastguard Worker     xnn_qs8_igemm_minmax_fp32_ukernel_1x4__scalar_lrintf,
3279*4bdc9457SAndroid Build Coastguard Worker     xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params,
3280*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
3281*4bdc9457SAndroid Build Coastguard Worker }
3282*4bdc9457SAndroid Build Coastguard Worker 
3283*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x2__scalar_fmagic)
3284*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x2__scalar_fmagic)
3285*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x2__scalar_fmagic)
3286*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x4__scalar_fmagic)
3287*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x4__scalar_fmagic)
3288*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x4__scalar_fmagic)
3289*4bdc9457SAndroid Build Coastguard Worker 
3290*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x2__scalar_imagic)
3291*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x2__scalar_imagic)
3292*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x2__scalar_imagic)
3293*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x4__scalar_imagic)
3294*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x4__scalar_imagic)
3295*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x4__scalar_imagic)
3296*4bdc9457SAndroid Build Coastguard Worker 
3297*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x2__scalar_lrintf)
3298*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x2__scalar_lrintf)
3299*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x2__scalar_lrintf)
3300*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_2x4__scalar_lrintf)
3301*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_3x4__scalar_lrintf)
3302*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_QS8_END2END(qs8_gemm_4x4__scalar_lrintf)
3303*4bdc9457SAndroid Build Coastguard Worker 
3304*4bdc9457SAndroid Build Coastguard Worker #ifndef XNNPACK_BENCHMARK_NO_MAIN
3305*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_MAIN();
3306*4bdc9457SAndroid Build Coastguard Worker #endif
3307