xref: /aosp_15_r20/external/XNNPACK/bench/f32-gemm-e2e.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 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_f32_gemm_minmax_ukernel_function gemm_minmax,xnn_f32_igemm_minmax_ukernel_function igemm_minmax,xnn_f32_gemm_minmax_ukernel_function gemm1_minmax,xnn_f32_igemm_minmax_ukernel_function igemm1_minmax,xnn_f32_gemm_relu_ukernel_function gemm_relu,xnn_f32_igemm_relu_ukernel_function igemm_relu,xnn_f32_gemm_relu_ukernel_function gemm1_relu,xnn_f32_igemm_relu_ukernel_function igemm1_relu,xnn_f32_gemm_ukernel_function gemm,xnn_f32_igemm_ukernel_function igemm,xnn_f32_gemm_ukernel_function gemm1,xnn_f32_igemm_ukernel_function igemm1,xnn_init_f32_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_f32_gemm_minmax_ukernel_function gemm_minmax,
31*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_minmax_ukernel_function igemm_minmax,
32*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_gemm_minmax_ukernel_function gemm1_minmax,
33*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_minmax_ukernel_function igemm1_minmax,
34*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_gemm_relu_ukernel_function gemm_relu,
35*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_relu_ukernel_function igemm_relu,
36*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_gemm_relu_ukernel_function gemm1_relu,
37*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_relu_ukernel_function igemm1_relu,
38*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_gemm_ukernel_function gemm,
39*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_ukernel_function igemm,
40*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_gemm_ukernel_function gemm1,
41*4bdc9457SAndroid Build Coastguard Worker   xnn_f32_igemm_ukernel_function igemm1,
42*4bdc9457SAndroid Build Coastguard Worker   xnn_init_f32_minmax_params_fn init_params,
43*4bdc9457SAndroid Build Coastguard Worker   uint8_t mr, uint8_t nr, uint8_t log2_kr = 0, uint8_t log2_sr = 0,
44*4bdc9457SAndroid Build Coastguard Worker   benchmark::utils::IsaCheckFunction isa_check = nullptr)
45*4bdc9457SAndroid Build Coastguard Worker {
46*4bdc9457SAndroid Build Coastguard Worker   if (isa_check && !isa_check(state)) {
47*4bdc9457SAndroid Build Coastguard Worker     return;
48*4bdc9457SAndroid Build Coastguard Worker   }
49*4bdc9457SAndroid Build Coastguard Worker   if (xnn_initialize(nullptr /* allocator */) != xnn_status_success) {
50*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to initialize XNNPACK");
51*4bdc9457SAndroid Build Coastguard Worker     return;
52*4bdc9457SAndroid Build Coastguard Worker   }
53*4bdc9457SAndroid Build Coastguard Worker 
54*4bdc9457SAndroid Build Coastguard Worker   // Override microkernels chosen in xnn_initialize
55*4bdc9457SAndroid Build Coastguard Worker   // Note: do not directly assign to xnn_params.f32.gemm because it breaks older gcc.
56*4bdc9457SAndroid Build Coastguard Worker   std::memset(&xnn_params.f32.gemm, 0, sizeof(xnn_params.f32.gemm));
57*4bdc9457SAndroid Build Coastguard Worker   std::memset(&xnn_params.f32.gemm2, 0, sizeof(xnn_params.f32.gemm2));
58*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.minmax.gemm[mr-1] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm_minmax));
59*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.minmax.igemm[mr-1] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm_minmax));
60*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.minmax.gemm[0] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm1_minmax));
61*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.minmax.igemm[0] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm1_minmax));
62*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.relu.gemm[mr-1] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm_relu));
63*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.relu.igemm[mr-1] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm_relu));
64*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.relu.gemm[0] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm1_relu));
65*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.relu.igemm[0] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm1_relu));
66*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.linear.gemm[mr-1] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm));
67*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.linear.igemm[mr-1] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm));
68*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.linear.gemm[0] = xnn_init_hmp_gemm_ukernel(xnn_gemm_ukernel_function(gemm1));
69*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.linear.igemm[0] = xnn_init_hmp_igemm_ukernel(xnn_igemm_ukernel_function(igemm1));
70*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.init.f32 = init_params;
71*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.mr = mr;
72*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.nr = nr;
73*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.log2_kr = log2_kr;
74*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.log2_sr = log2_sr;
75*4bdc9457SAndroid Build Coastguard Worker 
76*4bdc9457SAndroid Build Coastguard Worker   #if XNN_PLATFORM_JIT && XNN_ENABLE_JIT
77*4bdc9457SAndroid Build Coastguard Worker     // If JIT is enabled, we want to make sure that we are still benchmarking
78*4bdc9457SAndroid Build Coastguard Worker     // non-JIT microkernels, so nullify the pointers to generators.
79*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.generator.gemm = xnn_init_hmp_gemm_codegen(nullptr);
80*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.generator.gemm1 = xnn_init_hmp_gemm_codegen(nullptr);
81*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.generator.igemm = xnn_init_hmp_igemm_codegen(nullptr);
82*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.generator.igemm1 = xnn_init_hmp_igemm_codegen(nullptr);
83*4bdc9457SAndroid Build Coastguard Worker   #endif  // XNN_PLATFORM_JIT && XNN_ENABLE_JIT
84*4bdc9457SAndroid Build Coastguard Worker 
85*4bdc9457SAndroid Build Coastguard Worker   auto execution_plan = model_factory(nullptr);
86*4bdc9457SAndroid Build Coastguard Worker   if (execution_plan.empty()) {
87*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to create a model");
88*4bdc9457SAndroid Build Coastguard Worker     return;
89*4bdc9457SAndroid Build Coastguard Worker   }
90*4bdc9457SAndroid Build Coastguard Worker 
91*4bdc9457SAndroid Build Coastguard Worker   for (auto _ : state) {
92*4bdc9457SAndroid Build Coastguard Worker     for (const std::unique_ptr<xnn_operator, decltype(&xnn_delete_operator)>& op : execution_plan) {
93*4bdc9457SAndroid Build Coastguard Worker       xnn_status status = xnn_run_operator(op.get(), nullptr);
94*4bdc9457SAndroid Build Coastguard Worker       if (status != xnn_status_success) {
95*4bdc9457SAndroid Build Coastguard Worker         state.SkipWithError("failed to run a model");
96*4bdc9457SAndroid Build Coastguard Worker         return;
97*4bdc9457SAndroid Build Coastguard Worker       }
98*4bdc9457SAndroid Build Coastguard Worker     }
99*4bdc9457SAndroid Build Coastguard Worker   }
100*4bdc9457SAndroid Build Coastguard Worker 
101*4bdc9457SAndroid Build Coastguard Worker   const uint64_t cpu_frequency = benchmark::utils::GetCurrentCpuFrequency();
102*4bdc9457SAndroid Build Coastguard Worker   if (cpu_frequency != 0) {
103*4bdc9457SAndroid Build Coastguard Worker     state.counters["cpufreq"] = cpu_frequency;
104*4bdc9457SAndroid Build Coastguard Worker   }
105*4bdc9457SAndroid Build Coastguard Worker }
106*4bdc9457SAndroid Build Coastguard Worker 
107*4bdc9457SAndroid Build Coastguard Worker #if XNN_PLATFORM_JIT
GEMMEnd2EndBenchmark(benchmark::State & state,models::ExecutionPlanFactory model_factory,xnn_jit_gemm_code_generator_function gemm_generator,xnn_jit_gemm_code_generator_function gemm1_generator,xnn_jit_igemm_code_generator_function igemm_generator,xnn_jit_igemm_code_generator_function igemm1_generator,xnn_init_f32_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)108*4bdc9457SAndroid Build Coastguard Worker static void GEMMEnd2EndBenchmark(
109*4bdc9457SAndroid Build Coastguard Worker   benchmark::State& state,
110*4bdc9457SAndroid Build Coastguard Worker   models::ExecutionPlanFactory model_factory,
111*4bdc9457SAndroid Build Coastguard Worker   xnn_jit_gemm_code_generator_function gemm_generator,
112*4bdc9457SAndroid Build Coastguard Worker   xnn_jit_gemm_code_generator_function gemm1_generator,
113*4bdc9457SAndroid Build Coastguard Worker   xnn_jit_igemm_code_generator_function igemm_generator,
114*4bdc9457SAndroid Build Coastguard Worker   xnn_jit_igemm_code_generator_function igemm1_generator,
115*4bdc9457SAndroid Build Coastguard Worker   xnn_init_f32_minmax_params_fn init_params,
116*4bdc9457SAndroid Build Coastguard Worker   uint8_t mr, uint8_t nr, uint8_t log2_kr = 0, uint8_t log2_sr = 0,
117*4bdc9457SAndroid Build Coastguard Worker   benchmark::utils::IsaCheckFunction isa_check = nullptr)
118*4bdc9457SAndroid Build Coastguard Worker {
119*4bdc9457SAndroid Build Coastguard Worker   if (isa_check && !isa_check(state)) {
120*4bdc9457SAndroid Build Coastguard Worker     return;
121*4bdc9457SAndroid Build Coastguard Worker   }
122*4bdc9457SAndroid Build Coastguard Worker   if (xnn_initialize(nullptr /* allocator */) != xnn_status_success) {
123*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to initialize XNNPACK");
124*4bdc9457SAndroid Build Coastguard Worker     return;
125*4bdc9457SAndroid Build Coastguard Worker   }
126*4bdc9457SAndroid Build Coastguard Worker 
127*4bdc9457SAndroid Build Coastguard Worker   // Nullify the microkernels to ensure we run JIT kernels.
128*4bdc9457SAndroid Build Coastguard Worker   for (size_t i = 0; i < XNN_MAX_MR; i++) {
129*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.minmax.gemm[i] = xnn_init_hmp_gemm_ukernel(nullptr);
130*4bdc9457SAndroid Build Coastguard Worker     xnn_params.f32.gemm.minmax.igemm[i] = xnn_init_hmp_igemm_ukernel(nullptr);
131*4bdc9457SAndroid Build Coastguard Worker   }
132*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.init.f32 = init_params;
133*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.mr = mr;
134*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.nr = nr;
135*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.log2_kr = log2_kr;
136*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.log2_sr = log2_sr;
137*4bdc9457SAndroid Build Coastguard Worker 
138*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.generator.gemm = xnn_init_hmp_gemm_codegen(gemm_generator);
139*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.generator.gemm1 = xnn_init_hmp_gemm_codegen(gemm1_generator);
140*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.generator.igemm = xnn_init_hmp_igemm_codegen(igemm_generator);
141*4bdc9457SAndroid Build Coastguard Worker   xnn_params.f32.gemm.generator.igemm1 = xnn_init_hmp_igemm_codegen(igemm1_generator);
142*4bdc9457SAndroid Build Coastguard Worker 
143*4bdc9457SAndroid Build Coastguard Worker   auto execution_plan = model_factory(nullptr);
144*4bdc9457SAndroid Build Coastguard Worker   if (execution_plan.empty()) {
145*4bdc9457SAndroid Build Coastguard Worker     state.SkipWithError("failed to create a model");
146*4bdc9457SAndroid Build Coastguard Worker     return;
147*4bdc9457SAndroid Build Coastguard Worker   }
148*4bdc9457SAndroid Build Coastguard Worker 
149*4bdc9457SAndroid Build Coastguard Worker   for (auto _ : state) {
150*4bdc9457SAndroid Build Coastguard Worker     for (const std::unique_ptr<xnn_operator, decltype(&xnn_delete_operator)>& op : execution_plan) {
151*4bdc9457SAndroid Build Coastguard Worker       xnn_status status = xnn_run_operator(op.get(), nullptr);
152*4bdc9457SAndroid Build Coastguard Worker       if (status != xnn_status_success) {
153*4bdc9457SAndroid Build Coastguard Worker         state.SkipWithError("failed to run a model");
154*4bdc9457SAndroid Build Coastguard Worker         return;
155*4bdc9457SAndroid Build Coastguard Worker       }
156*4bdc9457SAndroid Build Coastguard Worker     }
157*4bdc9457SAndroid Build Coastguard Worker   }
158*4bdc9457SAndroid Build Coastguard Worker 
159*4bdc9457SAndroid Build Coastguard Worker   const uint64_t cpu_frequency = benchmark::utils::GetCurrentCpuFrequency();
160*4bdc9457SAndroid Build Coastguard Worker   if (cpu_frequency != 0) {
161*4bdc9457SAndroid Build Coastguard Worker     state.counters["cpufreq"] = cpu_frequency;
162*4bdc9457SAndroid Build Coastguard Worker   }
163*4bdc9457SAndroid Build Coastguard Worker }
164*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_PLATFORM_JIT
165*4bdc9457SAndroid Build Coastguard Worker 
166*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
f32_gemm_4x2__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)167*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x2__aarch64_neonfma_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
168*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
169*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_cortex_a75,
170*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_cortex_a75,
171*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_cortex_a75,
172*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_cortex_a75,
173*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
174*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
175*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
176*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
177*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x2__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)178*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x2__aarch64_neonfma_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
179*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
180*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_prfm_cortex_a75,
181*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_prfm_cortex_a75,
182*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_prfm_cortex_a75,
183*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_prfm_cortex_a75,
184*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
185*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
186*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
187*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
188*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x2__aarch64_neonfma_ld64(benchmark::State & state,models::ExecutionPlanFactory model)189*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x2__aarch64_neonfma_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
190*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
191*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_ld64,
192*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_ld64,
193*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__aarch64_neonfma_ld64,
194*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__aarch64_neonfma_ld64,
195*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
196*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
197*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
198*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
199*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x12__aarch64_neonfma_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)200*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x12__aarch64_neonfma_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
201*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
202*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x12__aarch64_neonfma_cortex_a53,
203*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x12__aarch64_neonfma_cortex_a53,
204*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x12__aarch64_neonfma_cortex_a53,
205*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x12__aarch64_neonfma_cortex_a53,
206*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
207*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
208*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
209*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 12 /* nr */);
210*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)211*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
212*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
213*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a53,
214*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a53,
215*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
216*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
217*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
218*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
219*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
220*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
221*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)222*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
223*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
224*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_prfm_cortex_a53,
225*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_prfm_cortex_a53,
226*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a53,
227*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a53,
228*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
229*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
230*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
231*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
232*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_cortex_a55(benchmark::State & state,models::ExecutionPlanFactory model)233*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
234*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
235*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a55,
236*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a55,
237*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
238*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
239*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
240*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
241*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
242*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
243*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)244*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
245*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
246*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a75,
247*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_cortex_a75,
248*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
249*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
250*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
251*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
252*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
253*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
254*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)255*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
256*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
257*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_prfm_cortex_a75,
258*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_prfm_cortex_a75,
259*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
260*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
261*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
262*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
263*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
264*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
265*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_ld64(benchmark::State & state,models::ExecutionPlanFactory model)266*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
267*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
268*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_ld64,
269*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_ld64,
270*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_ld64,
271*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
272*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
273*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
274*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
275*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
276*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch64_neonfma_ld128(benchmark::State & state,models::ExecutionPlanFactory model)277*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch64_neonfma_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
278*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
279*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch64_neonfma_ld128,
280*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch64_neonfma_ld128,
281*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_ld64,
282*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
283*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
284*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
285*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
286*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
287*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)288*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__aarch64_neonfma_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
289*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
290*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__aarch64_neonfma_cortex_a75,
291*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__aarch64_neonfma_cortex_a75,
292*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
293*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
294*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
295*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
296*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
297*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
298*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)299*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
300*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
301*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__aarch64_neonfma_prfm_cortex_a75,
302*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__aarch64_neonfma_prfm_cortex_a75,
303*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
304*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
305*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
306*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
307*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
308*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
309*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)310*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
311*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
312*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a53,
313*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a53,
314*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
315*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
316*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
317*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
318*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
319*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
320*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)321*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
322*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
323*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a53,
324*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a53,
325*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a53,
326*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a53,
327*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
328*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
329*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
330*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
331*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_cortex_a55(benchmark::State & state,models::ExecutionPlanFactory model)332*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
333*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
334*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55,
335*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55,
336*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
337*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a53,
338*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
339*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
340*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
341*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
342*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_cortex_a73(benchmark::State & state,models::ExecutionPlanFactory model)343*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_cortex_a73(benchmark::State& state, models::ExecutionPlanFactory model) {
344*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
345*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a73,
346*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a73,
347*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
348*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
349*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
350*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
351*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
352*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
353*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)354*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
355*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
356*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a75,
357*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a75,
358*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
359*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_cortex_a75,
360*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
361*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
362*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
363*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
364*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)365*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
366*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
367*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a75,
368*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a75,
369*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
370*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
371*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
372*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
373*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
374*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
375*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_ld64(benchmark::State & state,models::ExecutionPlanFactory model)376*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
377*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
378*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_ld64,
379*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_ld64,
380*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
381*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
382*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
383*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
384*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
385*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
386*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__aarch64_neonfma_ld128(benchmark::State & state,models::ExecutionPlanFactory model)387*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__aarch64_neonfma_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
388*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
389*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_ld128,
390*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_ld128,
391*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
392*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
393*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
394*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
395*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
396*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
397*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x2__neonfma_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)398*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x2__neonfma_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
399*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
400*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__neonfma_lane_ld64,
401*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__neonfma_lane_ld64,
402*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__neonfma_lane_ld64,
403*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__neonfma_lane_ld64,
404*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
405*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
406*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
407*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */);
408*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x2__neonfma_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)409*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x2__neonfma_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
410*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
411*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x2__neonfma_lane_ld64,
412*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x2__neonfma_lane_ld64,
413*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x2__neonfma_lane_ld64,
414*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x2__neonfma_lane_ld64,
415*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
416*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
417*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
418*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 2 /* nr */);
419*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__neonfma_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)420*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neonfma_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
421*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
422*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neonfma_lane_ld64,
423*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neonfma_lane_ld64,
424*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
425*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
426*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
427*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
428*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
429*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
430*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__neonfma_lane_ld128(benchmark::State & state,models::ExecutionPlanFactory model)431*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neonfma_lane_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
432*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
433*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neonfma_lane_ld128,
434*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neonfma_lane_ld128,
435*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
436*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
437*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
438*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
439*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
440*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
441*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__neonfma_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)442*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neonfma_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
443*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
444*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neonfma_lane_ld64,
445*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neonfma_lane_ld64,
446*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
447*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
448*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
449*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
450*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
451*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
452*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__neonfma_lane_ld128(benchmark::State & state,models::ExecutionPlanFactory model)453*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neonfma_lane_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
454*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
455*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neonfma_lane_ld128,
456*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neonfma_lane_ld128,
457*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_lane_ld64,
458*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_lane_ld64,
459*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
460*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
461*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
462*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
463*4bdc9457SAndroid Build Coastguard Worker   }
464*4bdc9457SAndroid Build Coastguard Worker 
465*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x2__aarch64_neonfma_cortex_a75)
466*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x2__aarch64_neonfma_prfm_cortex_a75)
467*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x2__aarch64_neonfma_ld64)
468*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_ld64)
469*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_ld128);
470*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_ld64);
471*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_ld128);
472*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_cortex_a53)
473*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a53)
474*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_cortex_a55)
475*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_cortex_a75)
476*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75)
477*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__aarch64_neonfma_cortex_a75);
478*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__aarch64_neonfma_prfm_cortex_a75);
479*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_cortex_a53);
480*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a53);
481*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_cortex_a55);
482*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_cortex_a73);
483*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_cortex_a75);
484*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__aarch64_neonfma_prfm_cortex_a75);
485*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x12__aarch64_neonfma_cortex_a53);
486*4bdc9457SAndroid Build Coastguard Worker 
487*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x2__neonfma_lane_ld64);
488*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x2__neonfma_lane_ld64);
489*4bdc9457SAndroid Build Coastguard Worker 
490*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neonfma_lane_ld64);
491*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neonfma_lane_ld128);
492*4bdc9457SAndroid Build Coastguard Worker 
493*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neonfma_lane_ld64);
494*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neonfma_lane_ld128);
495*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
496*4bdc9457SAndroid Build Coastguard Worker 
497*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_PLATFORM_JIT
jit_f32_gemm_4x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)498*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_4x8__aarch64_neonfma_cortex_a75(
499*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
500*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
501*4bdc9457SAndroid Build Coastguard Worker         state, model,
502*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_4x8__aarch64_neonfma_cortex_a75,
503*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
504*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_4x8__aarch64_neonfma_cortex_a75,
505*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
506*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 4 /* mr */, 8 /* nr */);
507*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)508*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75(
509*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
510*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
511*4bdc9457SAndroid Build Coastguard Worker         state, model,
512*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_4x8__aarch64_neonfma_prfm_cortex_a75,
513*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
514*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_4x8__aarch64_neonfma_prfm_cortex_a75,
515*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
516*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 4 /* mr */, 8 /* nr */);
517*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)518*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_cortex_a75(
519*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
520*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
521*4bdc9457SAndroid Build Coastguard Worker         state, model,
522*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
523*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
524*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
525*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
526*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 1 /* mr */, 8 /* nr */);
527*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)528*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_cortex_a75(
529*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
530*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
531*4bdc9457SAndroid Build Coastguard Worker         state, model,
532*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
533*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
534*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
535*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
536*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 2 /* mr */, 8 /* nr */);
537*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)538*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_cortex_a75(
539*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
540*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
541*4bdc9457SAndroid Build Coastguard Worker         state, model,
542*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
543*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
544*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
545*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
546*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 3 /* mr */, 8 /* nr */);
547*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)548*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_cortex_a75(
549*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
550*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
551*4bdc9457SAndroid Build Coastguard Worker         state, model,
552*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
553*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
554*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
555*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
556*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 4 /* mr */, 8 /* nr */);
557*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)558*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_cortex_a75(
559*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
560*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
561*4bdc9457SAndroid Build Coastguard Worker         state, model,
562*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
563*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
564*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
565*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
566*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 5 /* mr */, 8 /* nr */);
567*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)568*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_cortex_a75(
569*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
570*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
571*4bdc9457SAndroid Build Coastguard Worker         state, model,
572*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
573*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
574*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_cortex_a75,
575*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_cortex_a75,
576*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 6 /* mr */, 8 /* nr */);
577*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)578*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_prfm_cortex_a75(
579*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
580*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
581*4bdc9457SAndroid Build Coastguard Worker         state, model,
582*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
583*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
584*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
585*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
586*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 1 /* mr */, 8 /* nr */);
587*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)588*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_prfm_cortex_a75(
589*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
590*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
591*4bdc9457SAndroid Build Coastguard Worker         state, model,
592*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
593*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
594*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
595*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
596*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 2 /* mr */, 8 /* nr */);
597*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)598*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_prfm_cortex_a75(
599*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
600*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
601*4bdc9457SAndroid Build Coastguard Worker         state, model,
602*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
603*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
604*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
605*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
606*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 3 /* mr */, 8 /* nr */);
607*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)608*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_prfm_cortex_a75(
609*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
610*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
611*4bdc9457SAndroid Build Coastguard Worker         state, model,
612*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
613*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
614*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
615*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
616*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 4 /* mr */, 8 /* nr */);
617*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)618*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_prfm_cortex_a75(
619*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
620*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
621*4bdc9457SAndroid Build Coastguard Worker         state, model,
622*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
623*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
624*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
625*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
626*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 5 /* mr */, 8 /* nr */);
627*4bdc9457SAndroid Build Coastguard Worker   }
jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)628*4bdc9457SAndroid Build Coastguard Worker   static void jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_prfm_cortex_a75(
629*4bdc9457SAndroid Build Coastguard Worker       benchmark::State &state, models::ExecutionPlanFactory model) {
630*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(
631*4bdc9457SAndroid Build Coastguard Worker         state, model,
632*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
633*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_gemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
634*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_upto6x8__aarch64_neonfma_prfm_cortex_a75,
635*4bdc9457SAndroid Build Coastguard Worker         xnn_generate_f32_igemm_ukernel_1x8__aarch64_neonfma_prfm_cortex_a75,
636*4bdc9457SAndroid Build Coastguard Worker         xnn_init_f32_minmax_scalar_params, 6 /* mr */, 8 /* nr */);
637*4bdc9457SAndroid Build Coastguard Worker   }
638*4bdc9457SAndroid Build Coastguard Worker 
639*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_4x8__aarch64_neonfma_cortex_a75);
640*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_4x8__aarch64_neonfma_prfm_cortex_a75);
641*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_cortex_a75);
642*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_cortex_a75);
643*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_cortex_a75);
644*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_cortex_a75);
645*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_cortex_a75);
646*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_cortex_a75);
647*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_1x8__aarch64_neonfma_prfm_cortex_a75);
648*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_2x8__aarch64_neonfma_prfm_cortex_a75);
649*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_3x8__aarch64_neonfma_prfm_cortex_a75);
650*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_4x8__aarch64_neonfma_prfm_cortex_a75);
651*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_5x8__aarch64_neonfma_prfm_cortex_a75);
652*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(jit_f32_gemm_upto6x8_6x8__aarch64_neonfma_prfm_cortex_a75);
653*4bdc9457SAndroid Build Coastguard Worker 
654*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM64 && XNN_PLATFORM_JIT
655*4bdc9457SAndroid Build Coastguard Worker 
656*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
f32_gemm_4x8__aarch32_neon_ld64(benchmark::State & state,models::ExecutionPlanFactory model)657*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
658*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
659*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_ld64,
660*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_ld64,
661*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
662*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
663*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
664*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
665*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
666*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
667*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
668*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_cortex_a7(benchmark::State & state,models::ExecutionPlanFactory model)669*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_cortex_a7(benchmark::State& state, models::ExecutionPlanFactory model) {
670*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
671*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_cortex_a7,
672*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_cortex_a7,
673*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
674*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
675*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
676*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
677*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
678*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
679*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
680*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)681*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
682*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
683*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_cortex_a53,
684*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_cortex_a53,
685*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
686*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
687*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
688*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
689*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
690*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
691*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
692*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_prfm_cortex_a53(benchmark::State & state,models::ExecutionPlanFactory model)693*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_prfm_cortex_a53(benchmark::State& state, models::ExecutionPlanFactory model) {
694*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
695*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_prfm_cortex_a53,
696*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_prfm_cortex_a53,
697*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
698*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
699*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
700*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
701*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
702*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
703*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
704*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_cortex_a55(benchmark::State & state,models::ExecutionPlanFactory model)705*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_cortex_a55(benchmark::State& state, models::ExecutionPlanFactory model) {
706*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
707*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_cortex_a55,
708*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_cortex_a55,
709*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
710*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
711*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
712*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
713*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
714*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
715*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
716*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)717*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
718*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
719*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_cortex_a75,
720*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_cortex_a75,
721*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
722*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
723*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
724*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
725*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
726*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
727*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
728*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__aarch32_neon_prfm_cortex_a75(benchmark::State & state,models::ExecutionPlanFactory model)729*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__aarch32_neon_prfm_cortex_a75(benchmark::State& state, models::ExecutionPlanFactory model) {
730*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
731*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__aarch32_neon_prfm_cortex_a75,
732*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__aarch32_neon_prfm_cortex_a75,
733*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
734*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
735*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
736*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
737*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
738*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
739*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
740*4bdc9457SAndroid Build Coastguard Worker   }
741*4bdc9457SAndroid Build Coastguard Worker 
742*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_ld64);
743*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_cortex_a7);
744*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_cortex_a53);
745*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_prfm_cortex_a53);
746*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_cortex_a55);
747*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_cortex_a75);
748*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__aarch32_neon_prfm_cortex_a75);
749*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
750*4bdc9457SAndroid Build Coastguard Worker 
751*4bdc9457SAndroid Build Coastguard Worker 
752*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
f32_gemm_4x2__neon_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)753*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x2__neon_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
754*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
755*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__neon_lane_ld64,
756*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__neon_lane_ld64,
757*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x2__neon_lane_ld64,
758*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x2__neon_lane_ld64,
759*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
760*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
761*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
762*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 2 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
763*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
764*4bdc9457SAndroid Build Coastguard Worker   }
765*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x2__neon_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)766*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x2__neon_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
767*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
768*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x2__neon_lane_ld64,
769*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x2__neon_lane_ld64,
770*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x2__neon_lane_ld64,
771*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x2__neon_lane_ld64,
772*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
773*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
774*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
775*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 2 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
776*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
777*4bdc9457SAndroid Build Coastguard Worker   }
778*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neon_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)779*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neon_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
780*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
781*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neon_lane_ld64,
782*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neon_lane_ld64,
783*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
784*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
785*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
786*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
787*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
788*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
789*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
790*4bdc9457SAndroid Build Coastguard Worker   }
791*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neon_lane_ld128(benchmark::State & state,models::ExecutionPlanFactory model)792*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neon_lane_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
793*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
794*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neon_lane_ld128,
795*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neon_lane_ld128,
796*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
797*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
798*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
799*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
800*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
801*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
802*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
803*4bdc9457SAndroid Build Coastguard Worker   }
804*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neon_lane_ld64(benchmark::State & state,models::ExecutionPlanFactory model)805*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neon_lane_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
806*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
807*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neon_lane_ld64,
808*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neon_lane_ld64,
809*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
810*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
811*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
812*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
813*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
814*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
815*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
816*4bdc9457SAndroid Build Coastguard Worker   }
817*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neon_lane_ld128(benchmark::State & state,models::ExecutionPlanFactory model)818*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neon_lane_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
819*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
820*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neon_lane_ld128,
821*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neon_lane_ld128,
822*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_lane_ld64,
823*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_lane_ld64,
824*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
825*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
826*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
827*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
828*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
829*4bdc9457SAndroid Build Coastguard Worker   }
830*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neon_dup_ld64(benchmark::State & state,models::ExecutionPlanFactory model)831*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neon_dup_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
832*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
833*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neon_dup_ld64,
834*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neon_dup_ld64,
835*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_dup_ld64,
836*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_dup_ld64,
837*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
838*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
839*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
840*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
841*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
842*4bdc9457SAndroid Build Coastguard Worker   }
843*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neon_dup_ld128(benchmark::State & state,models::ExecutionPlanFactory model)844*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neon_dup_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
845*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
846*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neon_dup_ld128,
847*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neon_dup_ld128,
848*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_dup_ld64,
849*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_dup_ld64,
850*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
851*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
852*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
853*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
854*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
855*4bdc9457SAndroid Build Coastguard Worker   }
856*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neon_dup_ld64(benchmark::State & state,models::ExecutionPlanFactory model)857*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neon_dup_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
858*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
859*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neon_dup_ld64,
860*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neon_dup_ld64,
861*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_dup_ld64,
862*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_dup_ld64,
863*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
864*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
865*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
866*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
867*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
868*4bdc9457SAndroid Build Coastguard Worker   }
869*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neon_dup_ld128(benchmark::State & state,models::ExecutionPlanFactory model)870*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neon_dup_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
871*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
872*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neon_dup_ld128,
873*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neon_dup_ld128,
874*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neon_dup_ld64,
875*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neon_dup_ld64,
876*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
877*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
878*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
879*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
880*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
881*4bdc9457SAndroid Build Coastguard Worker   }
882*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neonfma_dup_ld64(benchmark::State & state,models::ExecutionPlanFactory model)883*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neonfma_dup_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
884*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
885*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neonfma_dup_ld64,
886*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neonfma_dup_ld64,
887*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_dup_ld64,
888*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_dup_ld64,
889*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
890*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
891*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
892*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
893*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
894*4bdc9457SAndroid Build Coastguard Worker   }
895*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__neonfma_dup_ld128(benchmark::State & state,models::ExecutionPlanFactory model)896*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__neonfma_dup_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
897*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
898*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__neonfma_dup_ld128,
899*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__neonfma_dup_ld128,
900*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_dup_ld64,
901*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_dup_ld64,
902*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
903*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
904*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
905*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
906*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
907*4bdc9457SAndroid Build Coastguard Worker   }
908*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neonfma_dup_ld64(benchmark::State & state,models::ExecutionPlanFactory model)909*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neonfma_dup_ld64(benchmark::State& state, models::ExecutionPlanFactory model) {
910*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
911*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neonfma_dup_ld64,
912*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neonfma_dup_ld64,
913*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_dup_ld64,
914*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_dup_ld64,
915*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
916*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
917*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
918*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
919*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
920*4bdc9457SAndroid Build Coastguard Worker   }
921*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8__neonfma_dup_ld128(benchmark::State & state,models::ExecutionPlanFactory model)922*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__neonfma_dup_ld128(benchmark::State& state, models::ExecutionPlanFactory model) {
923*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
924*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__neonfma_dup_ld128,
925*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__neonfma_dup_ld128,
926*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__neonfma_dup_ld64,
927*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__neonfma_dup_ld64,
928*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
929*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
930*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
931*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
932*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
933*4bdc9457SAndroid Build Coastguard Worker   }
934*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8s4__neon(benchmark::State & state,models::ExecutionPlanFactory model)935*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__neon(benchmark::State& state, models::ExecutionPlanFactory model) {
936*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
937*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__neon,
938*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__neon,
939*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neon,
940*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neon,
941*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
942*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
943*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
944*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
945*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
946*4bdc9457SAndroid Build Coastguard Worker   }
947*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8s4__neonfma(benchmark::State & state,models::ExecutionPlanFactory model)948*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__neonfma(benchmark::State& state, models::ExecutionPlanFactory model) {
949*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
950*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__neonfma,
951*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__neonfma,
952*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neonfma,
953*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neonfma,
954*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
955*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
956*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
957*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
958*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
959*4bdc9457SAndroid Build Coastguard Worker   }
960*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8s4__neon(benchmark::State & state,models::ExecutionPlanFactory model)961*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__neon(benchmark::State& state, models::ExecutionPlanFactory model) {
962*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
963*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__neon,
964*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__neon,
965*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neon,
966*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neon,
967*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
968*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
969*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
970*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
971*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
972*4bdc9457SAndroid Build Coastguard Worker   }
973*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_6x8s4__neonfma(benchmark::State & state,models::ExecutionPlanFactory model)974*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__neonfma(benchmark::State& state, models::ExecutionPlanFactory model) {
975*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
976*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__neonfma,
977*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__neonfma,
978*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neonfma,
979*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neonfma,
980*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
981*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
982*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
983*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
984*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
985*4bdc9457SAndroid Build Coastguard Worker   }
986*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_8x8s4__neon(benchmark::State & state,models::ExecutionPlanFactory model)987*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_8x8s4__neon(benchmark::State& state, models::ExecutionPlanFactory model) {
988*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
989*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_8x8s4__neon,
990*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_8x8s4__neon,
991*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neon,
992*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neon,
993*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
994*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
995*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
996*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
997*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEON);
998*4bdc9457SAndroid Build Coastguard Worker   }
999*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_8x8s4__neonfma(benchmark::State & state,models::ExecutionPlanFactory model)1000*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_8x8s4__neonfma(benchmark::State& state, models::ExecutionPlanFactory model) {
1001*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1002*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_8x8s4__neonfma,
1003*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_8x8s4__neonfma,
1004*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__neonfma,
1005*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__neonfma,
1006*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1007*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1008*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1009*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */,
1010*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckNEONFMA);
1011*4bdc9457SAndroid Build Coastguard Worker   }
1012*4bdc9457SAndroid Build Coastguard Worker 
1013*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x2__neon_lane_ld64);
1014*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x2__neon_lane_ld64);
1015*4bdc9457SAndroid Build Coastguard Worker 
1016*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neon_lane_ld64);
1017*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neon_lane_ld128);
1018*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neon_lane_ld64);
1019*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neon_lane_ld128);
1020*4bdc9457SAndroid Build Coastguard Worker 
1021*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neon_dup_ld64);
1022*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neon_dup_ld128);
1023*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neon_dup_ld64);
1024*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neon_dup_ld128);
1025*4bdc9457SAndroid Build Coastguard Worker 
1026*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neonfma_dup_ld64);
1027*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__neonfma_dup_ld128);
1028*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neonfma_dup_ld64);
1029*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__neonfma_dup_ld128);
1030*4bdc9457SAndroid Build Coastguard Worker 
1031*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__neon);
1032*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__neon);
1033*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_8x8s4__neon);
1034*4bdc9457SAndroid Build Coastguard Worker 
1035*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__neonfma);
1036*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__neonfma);
1037*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_8x8s4__neonfma);
1038*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1039*4bdc9457SAndroid Build Coastguard Worker 
1040*4bdc9457SAndroid Build Coastguard Worker 
1041*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
f32_gemm_4x16__avx512f_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1042*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x16__avx512f_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1043*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1044*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x16__avx512f_broadcast,
1045*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x16__avx512f_broadcast,
1046*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx512f_broadcast,
1047*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx512f_broadcast,
1048*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1049*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1050*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1051*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1052*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
1053*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x16__avx512f_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1054*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x16__avx512f_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1055*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1056*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x16__avx512f_broadcast,
1057*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x16__avx512f_broadcast,
1058*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx512f_broadcast,
1059*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx512f_broadcast,
1060*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1061*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1062*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1063*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1064*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
1065*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x16__avx512f_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1066*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x16__avx512f_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1067*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1068*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x16__avx512f_broadcast,
1069*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x16__avx512f_broadcast,
1070*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx512f_broadcast,
1071*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx512f_broadcast,
1072*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1073*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1074*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1075*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1076*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
1077*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_7x16__avx512f_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1078*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_7x16__avx512f_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1079*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1080*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_7x16__avx512f_broadcast,
1081*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_7x16__avx512f_broadcast,
1082*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx512f_broadcast,
1083*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx512f_broadcast,
1084*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1085*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1086*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1087*4bdc9457SAndroid Build Coastguard Worker       7 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1088*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
1089*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_8x16__avx512f_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1090*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_8x16__avx512f_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1091*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1092*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_8x16__avx512f_broadcast,
1093*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_8x16__avx512f_broadcast,
1094*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx512f_broadcast,
1095*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx512f_broadcast,
1096*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1097*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1098*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
1099*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1100*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX512F);
1101*4bdc9457SAndroid Build Coastguard Worker   }
1102*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1103*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1104*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1105*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__fma3_broadcast,
1106*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__fma3_broadcast,
1107*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__fma3_broadcast,
1108*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__fma3_broadcast,
1109*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1110*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1111*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1112*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1113*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1114*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1115*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1116*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1117*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__fma3_broadcast,
1118*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__fma3_broadcast,
1119*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__fma3_broadcast,
1120*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__fma3_broadcast,
1121*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1122*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1123*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1124*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1125*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1126*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1127*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1128*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1129*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__fma3_broadcast,
1130*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__fma3_broadcast,
1131*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__fma3_broadcast,
1132*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__fma3_broadcast,
1133*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1134*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1135*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1136*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1137*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1138*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_7x8__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1139*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_7x8__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1140*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1141*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_7x8__fma3_broadcast,
1142*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_7x8__fma3_broadcast,
1143*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__fma3_broadcast,
1144*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__fma3_broadcast,
1145*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1146*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1147*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1148*4bdc9457SAndroid Build Coastguard Worker       7 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1149*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1150*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_8x8__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1151*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_8x8__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1152*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1153*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_8x8__fma3_broadcast,
1154*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_8x8__fma3_broadcast,
1155*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__fma3_broadcast,
1156*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__fma3_broadcast,
1157*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1158*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1159*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1160*4bdc9457SAndroid Build Coastguard Worker       8 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1161*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1162*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x16__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1163*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x16__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1164*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1165*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x16__fma3_broadcast,
1166*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x16__fma3_broadcast,
1167*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__fma3_broadcast,
1168*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__fma3_broadcast,
1169*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1170*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1171*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1172*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1173*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1174*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x16__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1175*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x16__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1176*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1177*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x16__fma3_broadcast,
1178*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x16__fma3_broadcast,
1179*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__fma3_broadcast,
1180*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__fma3_broadcast,
1181*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1182*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1183*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1184*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1185*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1186*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x16__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1187*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x16__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1188*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1189*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x16__fma3_broadcast,
1190*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x16__fma3_broadcast,
1191*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__fma3_broadcast,
1192*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__fma3_broadcast,
1193*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1194*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1195*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1196*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1197*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1198*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x16s4__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1199*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x16s4__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1200*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1201*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x16s4__fma3_broadcast,
1202*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x16s4__fma3_broadcast,
1203*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16s4__fma3_broadcast,
1204*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16s4__fma3_broadcast,
1205*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1206*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1207*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1208*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 2 /* log2_sr */,
1209*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1210*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x16s4__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1211*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x16s4__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1212*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1213*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x16s4__fma3_broadcast,
1214*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x16s4__fma3_broadcast,
1215*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16s4__fma3_broadcast,
1216*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16s4__fma3_broadcast,
1217*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1218*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1219*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1220*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 2 /* log2_sr */,
1221*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1222*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x16s4__fma3_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1223*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x16s4__fma3_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1224*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1225*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x16s4__fma3_broadcast,
1226*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x16s4__fma3_broadcast,
1227*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16s4__fma3_broadcast,
1228*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16s4__fma3_broadcast,
1229*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1230*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1231*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1232*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 16 /* nr */, 0 /* log2_kr */, 2 /* log2_sr */,
1233*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckFMA3);
1234*4bdc9457SAndroid Build Coastguard Worker   }
1235*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x8__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1236*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1237*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1238*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__avx_broadcast,
1239*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__avx_broadcast,
1240*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__avx_broadcast,
1241*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__avx_broadcast,
1242*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1243*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1244*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1245*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1246*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1247*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1248*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1249*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1250*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__avx_broadcast,
1251*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__avx_broadcast,
1252*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__avx_broadcast,
1253*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__avx_broadcast,
1254*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1255*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1256*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1257*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1258*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1259*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1260*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1261*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1262*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__avx_broadcast,
1263*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__avx_broadcast,
1264*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__avx_broadcast,
1265*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__avx_broadcast,
1266*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1267*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1268*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1269*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1270*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1271*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_7x8__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1272*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_7x8__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1273*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1274*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_7x8__avx_broadcast,
1275*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_7x8__avx_broadcast,
1276*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__avx_broadcast,
1277*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__avx_broadcast,
1278*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1279*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1280*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1281*4bdc9457SAndroid Build Coastguard Worker       7 /* mr */, 8 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1282*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1283*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x16__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1284*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x16__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1285*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1286*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x16__avx_broadcast,
1287*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x16__avx_broadcast,
1288*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx_broadcast,
1289*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx_broadcast,
1290*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1291*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1292*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1293*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1294*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1295*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x16__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1296*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x16__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1297*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1298*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x16__avx_broadcast,
1299*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x16__avx_broadcast,
1300*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx_broadcast,
1301*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx_broadcast,
1302*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1303*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1304*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1305*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1306*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1307*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x16__avx_broadcast(benchmark::State & state,models::ExecutionPlanFactory model)1308*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x16__avx_broadcast(benchmark::State& state, models::ExecutionPlanFactory model) {
1309*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1310*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x16__avx_broadcast,
1311*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x16__avx_broadcast,
1312*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x16__avx_broadcast,
1313*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x16__avx_broadcast,
1314*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1315*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1316*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_avx_params,
1317*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 16 /* nr */, 0 /* log2_kr */, 0 /* log2_sr */,
1318*4bdc9457SAndroid Build Coastguard Worker       benchmark::utils::CheckAVX);
1319*4bdc9457SAndroid Build Coastguard Worker   }
1320*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_3x8__sse2_dup(benchmark::State & state,models::ExecutionPlanFactory model)1321*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__sse2_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1322*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1323*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__sse2_dup,
1324*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__sse2_dup,
1325*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse2_dup,
1326*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse2_dup,
1327*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1328*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1329*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1330*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1331*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__sse2_dup(benchmark::State & state,models::ExecutionPlanFactory model)1332*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__sse2_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1333*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1334*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__sse2_dup,
1335*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__sse2_dup,
1336*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse2_dup,
1337*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse2_dup,
1338*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1339*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1340*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1341*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1342*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__sse2_dup(benchmark::State & state,models::ExecutionPlanFactory model)1343*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__sse2_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1344*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1345*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__sse2_dup,
1346*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__sse2_dup,
1347*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse2_dup,
1348*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse2_dup,
1349*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1350*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1351*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1352*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1353*4bdc9457SAndroid Build Coastguard Worker   }
1354*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_3x8__sse_load1(benchmark::State & state,models::ExecutionPlanFactory model)1355*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__sse_load1(benchmark::State& state, models::ExecutionPlanFactory model) {
1356*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1357*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__sse_load1,
1358*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__sse_load1,
1359*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_load1,
1360*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_load1,
1361*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1362*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1363*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1364*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1365*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__sse_load1(benchmark::State & state,models::ExecutionPlanFactory model)1366*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__sse_load1(benchmark::State& state, models::ExecutionPlanFactory model) {
1367*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1368*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__sse_load1,
1369*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__sse_load1,
1370*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_load1,
1371*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_load1,
1372*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1373*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1374*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1375*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1376*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__sse_load1(benchmark::State & state,models::ExecutionPlanFactory model)1377*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__sse_load1(benchmark::State& state, models::ExecutionPlanFactory model) {
1378*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1379*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__sse_load1,
1380*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__sse_load1,
1381*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_load1,
1382*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_load1,
1383*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1384*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1385*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1386*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1387*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__sse_dup(benchmark::State & state,models::ExecutionPlanFactory model)1388*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__sse_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1389*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1390*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__sse_dup,
1391*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__sse_dup,
1392*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_dup,
1393*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_dup,
1394*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1395*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1396*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1397*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1398*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__sse_dup(benchmark::State & state,models::ExecutionPlanFactory model)1399*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__sse_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1400*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1401*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__sse_dup,
1402*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__sse_dup,
1403*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_dup,
1404*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_dup,
1405*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1406*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1407*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1408*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1409*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__sse_dup(benchmark::State & state,models::ExecutionPlanFactory model)1410*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__sse_dup(benchmark::State& state, models::ExecutionPlanFactory model) {
1411*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1412*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__sse_dup,
1413*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__sse_dup,
1414*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__sse_dup,
1415*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__sse_dup,
1416*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1417*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1418*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1419*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1420*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8s4__sse(benchmark::State & state,models::ExecutionPlanFactory model)1421*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8s4__sse(benchmark::State& state, models::ExecutionPlanFactory model) {
1422*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1423*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8s4__sse,
1424*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8s4__sse,
1425*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__sse,
1426*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__sse,
1427*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1428*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1429*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1430*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1431*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8s4__sse(benchmark::State & state,models::ExecutionPlanFactory model)1432*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__sse(benchmark::State& state, models::ExecutionPlanFactory model) {
1433*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1434*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__sse,
1435*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__sse,
1436*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__sse,
1437*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__sse,
1438*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1439*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1440*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1441*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1442*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8s4__sse(benchmark::State & state,models::ExecutionPlanFactory model)1443*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8s4__sse(benchmark::State& state, models::ExecutionPlanFactory model) {
1444*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1445*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8s4__sse,
1446*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8s4__sse,
1447*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__sse,
1448*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__sse,
1449*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm_relu */, nullptr /* igemm_relu */, nullptr /* gemm1_relu */, nullptr /* igemm1_relu */,
1450*4bdc9457SAndroid Build Coastguard Worker       nullptr /* gemm */, nullptr /* igemm */, nullptr /* gemm1 */, nullptr /* igemm1 */,
1451*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_sse_params,
1452*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1453*4bdc9457SAndroid Build Coastguard Worker   }
1454*4bdc9457SAndroid Build Coastguard Worker 
1455*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x16__avx512f_broadcast);
1456*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x16__avx512f_broadcast);
1457*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x16__avx512f_broadcast);
1458*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_7x16__avx512f_broadcast);
1459*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_8x16__avx512f_broadcast);
1460*4bdc9457SAndroid Build Coastguard Worker 
1461*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__fma3_broadcast);
1462*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__fma3_broadcast);
1463*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__fma3_broadcast);
1464*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_7x8__fma3_broadcast);
1465*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_8x8__fma3_broadcast);
1466*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x16__fma3_broadcast);
1467*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x16__fma3_broadcast);
1468*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x16__fma3_broadcast);
1469*4bdc9457SAndroid Build Coastguard Worker 
1470*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x16s4__fma3_broadcast);
1471*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x16s4__fma3_broadcast);
1472*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x16s4__fma3_broadcast);
1473*4bdc9457SAndroid Build Coastguard Worker 
1474*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__avx_broadcast);
1475*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__avx_broadcast);
1476*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__avx_broadcast);
1477*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_7x8__avx_broadcast);
1478*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x16__avx_broadcast);
1479*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x16__avx_broadcast);
1480*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x16__avx_broadcast);
1481*4bdc9457SAndroid Build Coastguard Worker 
1482*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__sse2_dup);
1483*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__sse2_dup);
1484*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__sse2_dup);
1485*4bdc9457SAndroid Build Coastguard Worker 
1486*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__sse_load1);
1487*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__sse_load1);
1488*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__sse_load1);
1489*4bdc9457SAndroid Build Coastguard Worker 
1490*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__sse_dup);
1491*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__sse_dup);
1492*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__sse_dup);
1493*4bdc9457SAndroid Build Coastguard Worker 
1494*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8s4__sse);
1495*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__sse);
1496*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8s4__sse);
1497*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
1498*4bdc9457SAndroid Build Coastguard Worker 
1499*4bdc9457SAndroid Build Coastguard Worker 
1500*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMRELAXEDSIMD
f32_gemm_3x8__wasmrelaxedsimd_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1501*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmrelaxedsimd_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1502*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1503*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmrelaxedsimd_loadsplat,
1504*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmrelaxedsimd_loadsplat,
1505*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1506*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1507*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_loadsplat,
1508*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_loadsplat,
1509*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1510*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1511*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_loadsplat,
1512*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_loadsplat,
1513*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1514*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1515*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1516*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1517*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmrelaxedsimd_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1518*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmrelaxedsimd_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1519*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1520*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmrelaxedsimd_loadsplat,
1521*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmrelaxedsimd_loadsplat,
1522*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1523*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1524*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_loadsplat,
1525*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_loadsplat,
1526*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1527*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1528*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_loadsplat,
1529*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_loadsplat,
1530*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1531*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1532*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1533*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1534*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmrelaxedsimd_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1535*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmrelaxedsimd_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1536*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1537*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmrelaxedsimd_loadsplat,
1538*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmrelaxedsimd_loadsplat,
1539*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1540*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1541*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_loadsplat,
1542*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_loadsplat,
1543*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1544*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1545*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_loadsplat,
1546*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_loadsplat,
1547*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1548*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1549*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1550*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1551*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmrelaxedsimd_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1552*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmrelaxedsimd_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1553*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1554*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmrelaxedsimd_loadsplat,
1555*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmrelaxedsimd_loadsplat,
1556*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1557*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_loadsplat,
1558*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_loadsplat,
1559*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_loadsplat,
1560*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1561*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1562*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_loadsplat,
1563*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_loadsplat,
1564*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1565*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1566*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1567*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
1568*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1569*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1570*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1571*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1572*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1573*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1574*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1575*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1576*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1577*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1578*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1579*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1580*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmrelaxedsimd_fma_loadsplat,
1581*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1582*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1583*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1584*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1585*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1586*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1587*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1588*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1589*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1590*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1591*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1592*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1593*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1594*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1595*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1596*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1597*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmrelaxedsimd_fma_loadsplat,
1598*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1599*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1600*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1601*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1602*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1603*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1604*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1605*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1606*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1607*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1608*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1609*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1610*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1611*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1612*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1613*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1614*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmrelaxedsimd_fma_loadsplat,
1615*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1616*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1617*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1618*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1619*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1620*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmrelaxedsimd_fma_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1621*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1622*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1623*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1624*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1625*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1626*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1627*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1628*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1629*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1630*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1631*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmrelaxedsimd_fma_loadsplat,
1632*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1633*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_loadsplat,
1634*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1635*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
1636*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmrelaxedsimd_splat(benchmark::State & state,models::ExecutionPlanFactory model)1637*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmrelaxedsimd_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1638*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1639*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmrelaxedsimd_splat,
1640*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmrelaxedsimd_splat,
1641*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1642*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1643*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_splat,
1644*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_splat,
1645*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
1646*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
1647*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_splat,
1648*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_splat,
1649*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
1650*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
1651*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1652*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1653*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmrelaxedsimd_splat(benchmark::State & state,models::ExecutionPlanFactory model)1654*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmrelaxedsimd_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1655*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1656*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmrelaxedsimd_splat,
1657*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmrelaxedsimd_splat,
1658*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1659*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1660*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_splat,
1661*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_splat,
1662*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
1663*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
1664*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_splat,
1665*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_splat,
1666*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
1667*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
1668*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1669*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1670*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmrelaxedsimd_splat(benchmark::State & state,models::ExecutionPlanFactory model)1671*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmrelaxedsimd_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1672*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1673*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmrelaxedsimd_splat,
1674*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmrelaxedsimd_splat,
1675*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1676*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1677*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_splat,
1678*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_splat,
1679*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
1680*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
1681*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_splat,
1682*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_splat,
1683*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
1684*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
1685*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1686*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1687*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmrelaxedsimd_splat(benchmark::State & state,models::ExecutionPlanFactory model)1688*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmrelaxedsimd_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1689*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1690*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmrelaxedsimd_splat,
1691*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmrelaxedsimd_splat,
1692*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1693*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_splat,
1694*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_splat,
1695*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_splat,
1696*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
1697*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
1698*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_splat,
1699*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_splat,
1700*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
1701*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
1702*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1703*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
1704*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmrelaxedsimd_fma_splat(benchmark::State & state,models::ExecutionPlanFactory model)1705*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmrelaxedsimd_fma_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1706*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1707*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1708*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1709*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1710*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1711*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1712*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1713*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1714*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1715*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1716*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmrelaxedsimd_fma_splat,
1717*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1718*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1719*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1720*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1721*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmrelaxedsimd_fma_splat(benchmark::State & state,models::ExecutionPlanFactory model)1722*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmrelaxedsimd_fma_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1723*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1724*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1725*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1726*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1727*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1728*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1729*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1730*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1731*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1732*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1733*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmrelaxedsimd_fma_splat,
1734*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1735*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1736*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1737*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1738*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmrelaxedsimd_fma_splat(benchmark::State & state,models::ExecutionPlanFactory model)1739*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmrelaxedsimd_fma_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1740*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1741*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1742*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1743*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1744*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1745*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1746*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1747*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1748*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1749*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1750*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmrelaxedsimd_fma_splat,
1751*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1752*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1753*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1754*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1755*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmrelaxedsimd_fma_splat(benchmark::State & state,models::ExecutionPlanFactory model)1756*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmrelaxedsimd_fma_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
1757*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1758*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1759*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1760*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1761*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1762*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1763*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1764*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1765*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1766*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1767*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmrelaxedsimd_fma_splat,
1768*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1769*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmrelaxedsimd_fma_splat,
1770*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1771*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
1772*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8s4__wasmrelaxedsimd(benchmark::State & state,models::ExecutionPlanFactory model)1773*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8s4__wasmrelaxedsimd(benchmark::State& state, models::ExecutionPlanFactory model) {
1774*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1775*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8s4__wasmrelaxedsimd,
1776*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8s4__wasmrelaxedsimd,
1777*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1778*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1779*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8s4__wasmsimd,
1780*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8s4__wasmsimd,
1781*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
1782*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
1783*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8s4__wasmsimd,
1784*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8s4__wasmsimd,
1785*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
1786*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
1787*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1788*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1789*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8s4__wasmrelaxedsimd(benchmark::State & state,models::ExecutionPlanFactory model)1790*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__wasmrelaxedsimd(benchmark::State& state, models::ExecutionPlanFactory model) {
1791*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1792*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__wasmrelaxedsimd,
1793*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__wasmrelaxedsimd,
1794*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1795*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1796*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8s4__wasmsimd,
1797*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8s4__wasmsimd,
1798*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
1799*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
1800*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8s4__wasmsimd,
1801*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8s4__wasmsimd,
1802*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
1803*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
1804*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1805*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1806*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8s4__wasmrelaxedsimd(benchmark::State & state,models::ExecutionPlanFactory model)1807*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8s4__wasmrelaxedsimd(benchmark::State& state, models::ExecutionPlanFactory model) {
1808*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1809*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8s4__wasmrelaxedsimd,
1810*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8s4__wasmrelaxedsimd,
1811*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1812*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1813*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8s4__wasmsimd,
1814*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8s4__wasmsimd,
1815*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
1816*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
1817*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8s4__wasmsimd,
1818*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8s4__wasmsimd,
1819*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
1820*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
1821*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1822*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1823*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8s4__wasmrelaxedsimd(benchmark::State & state,models::ExecutionPlanFactory model)1824*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__wasmrelaxedsimd(benchmark::State& state, models::ExecutionPlanFactory model) {
1825*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1826*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__wasmrelaxedsimd,
1827*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__wasmrelaxedsimd,
1828*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1829*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd,
1830*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8s4__wasmsimd,
1831*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8s4__wasmsimd,
1832*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
1833*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
1834*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8s4__wasmsimd,
1835*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8s4__wasmsimd,
1836*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
1837*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
1838*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1839*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1840*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8s4__wasmrelaxedsimd_fma(benchmark::State & state,models::ExecutionPlanFactory model)1841*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8s4__wasmrelaxedsimd_fma(benchmark::State& state, models::ExecutionPlanFactory model) {
1842*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1843*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8s4__wasmrelaxedsimd_fma,
1844*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8s4__wasmrelaxedsimd_fma,
1845*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1846*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1847*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8s4__wasmrelaxedsimd_fma,
1848*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8s4__wasmrelaxedsimd_fma,
1849*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1850*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1851*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8s4__wasmrelaxedsimd_fma,
1852*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8s4__wasmrelaxedsimd_fma,
1853*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1854*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1855*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1856*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1857*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8s4__wasmrelaxedsimd_fma(benchmark::State & state,models::ExecutionPlanFactory model)1858*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__wasmrelaxedsimd_fma(benchmark::State& state, models::ExecutionPlanFactory model) {
1859*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1860*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__wasmrelaxedsimd_fma,
1861*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__wasmrelaxedsimd_fma,
1862*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1863*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1864*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8s4__wasmrelaxedsimd_fma,
1865*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8s4__wasmrelaxedsimd_fma,
1866*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1867*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1868*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8s4__wasmrelaxedsimd_fma,
1869*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8s4__wasmrelaxedsimd_fma,
1870*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1871*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1872*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1873*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1874*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8s4__wasmrelaxedsimd_fma(benchmark::State & state,models::ExecutionPlanFactory model)1875*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8s4__wasmrelaxedsimd_fma(benchmark::State& state, models::ExecutionPlanFactory model) {
1876*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1877*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8s4__wasmrelaxedsimd_fma,
1878*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8s4__wasmrelaxedsimd_fma,
1879*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1880*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1881*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8s4__wasmrelaxedsimd_fma,
1882*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8s4__wasmrelaxedsimd_fma,
1883*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1884*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1885*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8s4__wasmrelaxedsimd_fma,
1886*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8s4__wasmrelaxedsimd_fma,
1887*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1888*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1889*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1890*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1891*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8s4__wasmrelaxedsimd_fma(benchmark::State & state,models::ExecutionPlanFactory model)1892*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__wasmrelaxedsimd_fma(benchmark::State& state, models::ExecutionPlanFactory model) {
1893*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1894*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__wasmrelaxedsimd_fma,
1895*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__wasmrelaxedsimd_fma,
1896*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1897*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmrelaxedsimd_fma,
1898*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8s4__wasmrelaxedsimd_fma,
1899*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8s4__wasmrelaxedsimd_fma,
1900*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1901*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmrelaxedsimd_fma,
1902*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8s4__wasmrelaxedsimd_fma,
1903*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8s4__wasmrelaxedsimd_fma,
1904*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1905*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmrelaxedsimd_fma,
1906*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1907*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
1908*4bdc9457SAndroid Build Coastguard Worker   }
1909*4bdc9457SAndroid Build Coastguard Worker 
1910*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmrelaxedsimd_loadsplat);
1911*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmrelaxedsimd_loadsplat);
1912*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmrelaxedsimd_loadsplat);
1913*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmrelaxedsimd_loadsplat);
1914*4bdc9457SAndroid Build Coastguard Worker 
1915*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmrelaxedsimd_fma_loadsplat);
1916*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmrelaxedsimd_fma_loadsplat);
1917*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmrelaxedsimd_fma_loadsplat);
1918*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmrelaxedsimd_fma_loadsplat);
1919*4bdc9457SAndroid Build Coastguard Worker 
1920*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmrelaxedsimd_splat);
1921*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmrelaxedsimd_splat);
1922*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmrelaxedsimd_splat);
1923*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmrelaxedsimd_splat);
1924*4bdc9457SAndroid Build Coastguard Worker 
1925*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmrelaxedsimd_fma_splat);
1926*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmrelaxedsimd_fma_splat);
1927*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmrelaxedsimd_fma_splat);
1928*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmrelaxedsimd_fma_splat);
1929*4bdc9457SAndroid Build Coastguard Worker 
1930*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8s4__wasmrelaxedsimd);
1931*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__wasmrelaxedsimd);
1932*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8s4__wasmrelaxedsimd);
1933*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__wasmrelaxedsimd);
1934*4bdc9457SAndroid Build Coastguard Worker 
1935*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8s4__wasmrelaxedsimd_fma);
1936*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__wasmrelaxedsimd_fma);
1937*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8s4__wasmrelaxedsimd_fma);
1938*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__wasmrelaxedsimd_fma);
1939*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMRELAXEDSIMD
1940*4bdc9457SAndroid Build Coastguard Worker 
1941*4bdc9457SAndroid Build Coastguard Worker 
1942*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
f32_gemm_3x8__wasmsimd_arm_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1943*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmsimd_arm_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1944*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1945*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmsimd_arm_loadsplat,
1946*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmsimd_arm_loadsplat,
1947*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1948*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1949*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_loadsplat,
1950*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_loadsplat,
1951*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1952*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1953*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_loadsplat,
1954*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_loadsplat,
1955*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1956*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1957*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1958*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
1959*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmsimd_arm_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1960*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmsimd_arm_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1961*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1962*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmsimd_arm_loadsplat,
1963*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmsimd_arm_loadsplat,
1964*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1965*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1966*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_loadsplat,
1967*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_loadsplat,
1968*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1969*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1970*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_loadsplat,
1971*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_loadsplat,
1972*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1973*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1974*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1975*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
1976*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmsimd_arm_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1977*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmsimd_arm_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1978*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1979*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmsimd_arm_loadsplat,
1980*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmsimd_arm_loadsplat,
1981*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1982*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1983*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_loadsplat,
1984*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_loadsplat,
1985*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1986*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
1987*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_loadsplat,
1988*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_loadsplat,
1989*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
1990*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
1991*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
1992*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
1993*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmsimd_arm_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)1994*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmsimd_arm_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
1995*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
1996*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmsimd_arm_loadsplat,
1997*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmsimd_arm_loadsplat,
1998*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
1999*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_loadsplat,
2000*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_loadsplat,
2001*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_loadsplat,
2002*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2003*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2004*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_loadsplat,
2005*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_loadsplat,
2006*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
2007*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
2008*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2009*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
2010*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmsimd_x86_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)2011*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmsimd_x86_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
2012*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2013*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmsimd_x86_loadsplat,
2014*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmsimd_x86_loadsplat,
2015*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2016*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2017*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_loadsplat,
2018*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_loadsplat,
2019*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2020*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2021*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_loadsplat,
2022*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_loadsplat,
2023*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
2024*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
2025*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2026*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
2027*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmsimd_x86_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)2028*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmsimd_x86_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
2029*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2030*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmsimd_x86_loadsplat,
2031*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmsimd_x86_loadsplat,
2032*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2033*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2034*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_loadsplat,
2035*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_loadsplat,
2036*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2037*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2038*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_loadsplat,
2039*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_loadsplat,
2040*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
2041*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
2042*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2043*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
2044*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmsimd_x86_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)2045*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmsimd_x86_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
2046*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2047*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmsimd_x86_loadsplat,
2048*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmsimd_x86_loadsplat,
2049*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2050*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2051*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_loadsplat,
2052*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_loadsplat,
2053*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2054*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2055*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_loadsplat,
2056*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_loadsplat,
2057*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
2058*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
2059*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2060*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
2061*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmsimd_x86_loadsplat(benchmark::State & state,models::ExecutionPlanFactory model)2062*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmsimd_x86_loadsplat(benchmark::State& state, models::ExecutionPlanFactory model) {
2063*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2064*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmsimd_x86_loadsplat,
2065*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmsimd_x86_loadsplat,
2066*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2067*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_loadsplat,
2068*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_loadsplat,
2069*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_loadsplat,
2070*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2071*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_loadsplat,
2072*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_loadsplat,
2073*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_loadsplat,
2074*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_loadsplat,
2075*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_loadsplat,
2076*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2077*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
2078*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmsimd_arm_splat(benchmark::State & state,models::ExecutionPlanFactory model)2079*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmsimd_arm_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2080*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2081*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmsimd_arm_splat,
2082*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmsimd_arm_splat,
2083*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2084*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2085*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_splat,
2086*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_splat,
2087*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2088*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2089*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_splat,
2090*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_splat,
2091*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2092*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2093*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2094*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
2095*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmsimd_arm_splat(benchmark::State & state,models::ExecutionPlanFactory model)2096*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmsimd_arm_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2097*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2098*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmsimd_arm_splat,
2099*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmsimd_arm_splat,
2100*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2101*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2102*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_splat,
2103*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_splat,
2104*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2105*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2106*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_splat,
2107*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_splat,
2108*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2109*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2110*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2111*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
2112*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmsimd_arm_splat(benchmark::State & state,models::ExecutionPlanFactory model)2113*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmsimd_arm_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2114*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2115*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmsimd_arm_splat,
2116*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmsimd_arm_splat,
2117*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2118*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2119*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_splat,
2120*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_splat,
2121*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2122*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2123*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_splat,
2124*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_splat,
2125*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2126*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2127*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2128*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
2129*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmsimd_arm_splat(benchmark::State & state,models::ExecutionPlanFactory model)2130*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmsimd_arm_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2131*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2132*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmsimd_arm_splat,
2133*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmsimd_arm_splat,
2134*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2135*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_arm_splat,
2136*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_splat,
2137*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_splat,
2138*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2139*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2140*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_splat,
2141*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_splat,
2142*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2143*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2144*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2145*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
2146*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8__wasmsimd_x86_splat(benchmark::State & state,models::ExecutionPlanFactory model)2147*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8__wasmsimd_x86_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2148*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2149*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8__wasmsimd_x86_splat,
2150*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8__wasmsimd_x86_splat,
2151*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2152*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2153*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8__wasmsimd_splat,
2154*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8__wasmsimd_splat,
2155*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2156*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2157*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8__wasmsimd_splat,
2158*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8__wasmsimd_splat,
2159*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2160*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2161*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2162*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */);
2163*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8__wasmsimd_x86_splat(benchmark::State & state,models::ExecutionPlanFactory model)2164*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8__wasmsimd_x86_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2165*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2166*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8__wasmsimd_x86_splat,
2167*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8__wasmsimd_x86_splat,
2168*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2169*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2170*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8__wasmsimd_splat,
2171*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8__wasmsimd_splat,
2172*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2173*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2174*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8__wasmsimd_splat,
2175*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8__wasmsimd_splat,
2176*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2177*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2178*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2179*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */);
2180*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8__wasmsimd_x86_splat(benchmark::State & state,models::ExecutionPlanFactory model)2181*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8__wasmsimd_x86_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2182*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2183*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8__wasmsimd_x86_splat,
2184*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8__wasmsimd_x86_splat,
2185*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2186*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2187*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8__wasmsimd_splat,
2188*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8__wasmsimd_splat,
2189*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2190*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2191*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8__wasmsimd_splat,
2192*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8__wasmsimd_splat,
2193*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2194*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2195*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2196*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */);
2197*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8__wasmsimd_x86_splat(benchmark::State & state,models::ExecutionPlanFactory model)2198*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8__wasmsimd_x86_splat(benchmark::State& state, models::ExecutionPlanFactory model) {
2199*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2200*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8__wasmsimd_x86_splat,
2201*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8__wasmsimd_x86_splat,
2202*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2203*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8__wasmsimd_x86_splat,
2204*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8__wasmsimd_splat,
2205*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8__wasmsimd_splat,
2206*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8__wasmsimd_splat,
2207*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8__wasmsimd_splat,
2208*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8__wasmsimd_splat,
2209*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8__wasmsimd_splat,
2210*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8__wasmsimd_splat,
2211*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8__wasmsimd_splat,
2212*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2213*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */);
2214*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8s4__wasmsimd_arm(benchmark::State & state,models::ExecutionPlanFactory model)2215*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8s4__wasmsimd_arm(benchmark::State& state, models::ExecutionPlanFactory model) {
2216*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2217*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8s4__wasmsimd_arm,
2218*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8s4__wasmsimd_arm,
2219*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2220*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2221*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8s4__wasmsimd,
2222*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8s4__wasmsimd,
2223*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2224*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2225*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8s4__wasmsimd,
2226*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8s4__wasmsimd,
2227*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2228*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2229*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2230*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2231*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8s4__wasmsimd_arm(benchmark::State & state,models::ExecutionPlanFactory model)2232*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__wasmsimd_arm(benchmark::State& state, models::ExecutionPlanFactory model) {
2233*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2234*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__wasmsimd_arm,
2235*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__wasmsimd_arm,
2236*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2237*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2238*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8s4__wasmsimd,
2239*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8s4__wasmsimd,
2240*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2241*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2242*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8s4__wasmsimd,
2243*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8s4__wasmsimd,
2244*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2245*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2246*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2247*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2248*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8s4__wasmsimd_arm(benchmark::State & state,models::ExecutionPlanFactory model)2249*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8s4__wasmsimd_arm(benchmark::State& state, models::ExecutionPlanFactory model) {
2250*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2251*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8s4__wasmsimd_arm,
2252*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8s4__wasmsimd_arm,
2253*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2254*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2255*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8s4__wasmsimd,
2256*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8s4__wasmsimd,
2257*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2258*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2259*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8s4__wasmsimd,
2260*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8s4__wasmsimd,
2261*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2262*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2263*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2264*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2265*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8s4__wasmsimd_arm(benchmark::State & state,models::ExecutionPlanFactory model)2266*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__wasmsimd_arm(benchmark::State& state, models::ExecutionPlanFactory model) {
2267*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2268*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__wasmsimd_arm,
2269*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__wasmsimd_arm,
2270*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2271*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_arm,
2272*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8s4__wasmsimd,
2273*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8s4__wasmsimd,
2274*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2275*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2276*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8s4__wasmsimd,
2277*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8s4__wasmsimd,
2278*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2279*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2280*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2281*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2282*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_3x8s4__wasmsimd_x86(benchmark::State & state,models::ExecutionPlanFactory model)2283*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_3x8s4__wasmsimd_x86(benchmark::State& state, models::ExecutionPlanFactory model) {
2284*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2285*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_3x8s4__wasmsimd_x86,
2286*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_3x8s4__wasmsimd_x86,
2287*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2288*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2289*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_3x8s4__wasmsimd,
2290*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_3x8s4__wasmsimd,
2291*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2292*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2293*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_3x8s4__wasmsimd,
2294*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_3x8s4__wasmsimd,
2295*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2296*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2297*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2298*4bdc9457SAndroid Build Coastguard Worker       3 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2299*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_4x8s4__wasmsimd_x86(benchmark::State & state,models::ExecutionPlanFactory model)2300*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x8s4__wasmsimd_x86(benchmark::State& state, models::ExecutionPlanFactory model) {
2301*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2302*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x8s4__wasmsimd_x86,
2303*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x8s4__wasmsimd_x86,
2304*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2305*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2306*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x8s4__wasmsimd,
2307*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x8s4__wasmsimd,
2308*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2309*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2310*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x8s4__wasmsimd,
2311*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x8s4__wasmsimd,
2312*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2313*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2314*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2315*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2316*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_5x8s4__wasmsimd_x86(benchmark::State & state,models::ExecutionPlanFactory model)2317*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_5x8s4__wasmsimd_x86(benchmark::State& state, models::ExecutionPlanFactory model) {
2318*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2319*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_5x8s4__wasmsimd_x86,
2320*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_5x8s4__wasmsimd_x86,
2321*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2322*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2323*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_5x8s4__wasmsimd,
2324*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_5x8s4__wasmsimd,
2325*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2326*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2327*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_5x8s4__wasmsimd,
2328*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_5x8s4__wasmsimd,
2329*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2330*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2331*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2332*4bdc9457SAndroid Build Coastguard Worker       5 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2333*4bdc9457SAndroid Build Coastguard Worker   }
f32_gemm_6x8s4__wasmsimd_x86(benchmark::State & state,models::ExecutionPlanFactory model)2334*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_6x8s4__wasmsimd_x86(benchmark::State& state, models::ExecutionPlanFactory model) {
2335*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2336*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_6x8s4__wasmsimd_x86,
2337*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_6x8s4__wasmsimd_x86,
2338*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2339*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x8s4__wasmsimd_x86,
2340*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_6x8s4__wasmsimd,
2341*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_6x8s4__wasmsimd,
2342*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x8s4__wasmsimd,
2343*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x8s4__wasmsimd,
2344*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_6x8s4__wasmsimd,
2345*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_6x8s4__wasmsimd,
2346*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x8s4__wasmsimd,
2347*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x8s4__wasmsimd,
2348*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_wasmsimd_params,
2349*4bdc9457SAndroid Build Coastguard Worker       6 /* mr */, 8 /* nr */, 0 /* log2(kr) */, 2 /* log2(sr) */);
2350*4bdc9457SAndroid Build Coastguard Worker   }
2351*4bdc9457SAndroid Build Coastguard Worker 
2352*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmsimd_arm_loadsplat);
2353*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmsimd_arm_loadsplat);
2354*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmsimd_arm_loadsplat);
2355*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmsimd_arm_loadsplat);
2356*4bdc9457SAndroid Build Coastguard Worker 
2357*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmsimd_x86_loadsplat);
2358*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmsimd_x86_loadsplat);
2359*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmsimd_x86_loadsplat);
2360*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmsimd_x86_loadsplat);
2361*4bdc9457SAndroid Build Coastguard Worker 
2362*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmsimd_arm_splat);
2363*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmsimd_arm_splat);
2364*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmsimd_arm_splat);
2365*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmsimd_arm_splat);
2366*4bdc9457SAndroid Build Coastguard Worker 
2367*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8__wasmsimd_x86_splat);
2368*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8__wasmsimd_x86_splat);
2369*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8__wasmsimd_x86_splat);
2370*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8__wasmsimd_x86_splat);
2371*4bdc9457SAndroid Build Coastguard Worker 
2372*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8s4__wasmsimd_arm);
2373*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__wasmsimd_arm);
2374*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8s4__wasmsimd_arm);
2375*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__wasmsimd_arm);
2376*4bdc9457SAndroid Build Coastguard Worker 
2377*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_3x8s4__wasmsimd_x86);
2378*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x8s4__wasmsimd_x86);
2379*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_5x8s4__wasmsimd_x86);
2380*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_6x8s4__wasmsimd_x86);
2381*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2382*4bdc9457SAndroid Build Coastguard Worker 
2383*4bdc9457SAndroid Build Coastguard Worker 
2384*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM
f32_gemm_2x4__wasm(benchmark::State & state,models::ExecutionPlanFactory model)2385*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_2x4__wasm(benchmark::State& state, models::ExecutionPlanFactory model) {
2386*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2387*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_2x4__wasm,
2388*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_2x4__wasm,
2389*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x4__wasm,
2390*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x4__wasm,
2391*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_2x4__wasm,
2392*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_2x4__wasm,
2393*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x4__wasm,
2394*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x4__wasm,
2395*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_2x4__scalar,
2396*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_2x4__scalar,
2397*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x4__scalar,
2398*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x4__scalar,
2399*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
2400*4bdc9457SAndroid Build Coastguard Worker       2 /* mr */, 4 /* nr */);
2401*4bdc9457SAndroid Build Coastguard Worker   }
2402*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x4__wasm(benchmark::State & state,models::ExecutionPlanFactory model)2403*4bdc9457SAndroid Build Coastguard Worker   static void f32_gemm_4x4__wasm(benchmark::State& state, models::ExecutionPlanFactory model) {
2404*4bdc9457SAndroid Build Coastguard Worker     GEMMEnd2EndBenchmark(state, model,
2405*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_4x4__wasm,
2406*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_4x4__wasm,
2407*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_minmax_ukernel_1x4__wasm,
2408*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_minmax_ukernel_1x4__wasm,
2409*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_4x4__wasm,
2410*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_4x4__wasm,
2411*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_relu_ukernel_1x4__wasm,
2412*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_relu_ukernel_1x4__wasm,
2413*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_4x4__scalar,
2414*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_4x4__scalar,
2415*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_gemm_ukernel_1x4__scalar,
2416*4bdc9457SAndroid Build Coastguard Worker       xnn_f32_igemm_ukernel_1x4__scalar,
2417*4bdc9457SAndroid Build Coastguard Worker       xnn_init_f32_minmax_scalar_params,
2418*4bdc9457SAndroid Build Coastguard Worker       4 /* mr */, 4 /* nr */);
2419*4bdc9457SAndroid Build Coastguard Worker   }
2420*4bdc9457SAndroid Build Coastguard Worker 
2421*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_2x4__wasm);
2422*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_FP32_END2END(f32_gemm_4x4__wasm);
2423*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_WASM
2424*4bdc9457SAndroid Build Coastguard Worker 
2425*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_2x4__scalar(benchmark::State & state,models::ExecutionPlanFactory model)2426*4bdc9457SAndroid Build Coastguard Worker static void f32_gemm_2x4__scalar(benchmark::State& state, models::ExecutionPlanFactory model) {
2427*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
2428*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_minmax_ukernel_2x4__scalar,
2429*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_minmax_ukernel_2x4__scalar,
2430*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_minmax_ukernel_1x4__scalar,
2431*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_minmax_ukernel_1x4__scalar,
2432*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_relu_ukernel_2x4__scalar,
2433*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_relu_ukernel_2x4__scalar,
2434*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_relu_ukernel_1x4__scalar,
2435*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_relu_ukernel_1x4__scalar,
2436*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_ukernel_2x4__scalar,
2437*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_ukernel_2x4__scalar,
2438*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_ukernel_1x4__scalar,
2439*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_ukernel_1x4__scalar,
2440*4bdc9457SAndroid Build Coastguard Worker     xnn_init_f32_minmax_scalar_params,
2441*4bdc9457SAndroid Build Coastguard Worker     2 /* mr */, 4 /* nr */);
2442*4bdc9457SAndroid Build Coastguard Worker }
2443*4bdc9457SAndroid Build Coastguard Worker 
f32_gemm_4x4__scalar(benchmark::State & state,models::ExecutionPlanFactory model)2444*4bdc9457SAndroid Build Coastguard Worker static void f32_gemm_4x4__scalar(benchmark::State& state, models::ExecutionPlanFactory model) {
2445*4bdc9457SAndroid Build Coastguard Worker   GEMMEnd2EndBenchmark(state, model,
2446*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_minmax_ukernel_4x4__scalar,
2447*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_minmax_ukernel_4x4__scalar,
2448*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_minmax_ukernel_1x4__scalar,
2449*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_minmax_ukernel_1x4__scalar,
2450*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_relu_ukernel_4x4__scalar,
2451*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_relu_ukernel_4x4__scalar,
2452*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_relu_ukernel_1x4__scalar,
2453*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_relu_ukernel_1x4__scalar,
2454*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_ukernel_4x4__scalar,
2455*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_ukernel_4x4__scalar,
2456*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_gemm_ukernel_1x4__scalar,
2457*4bdc9457SAndroid Build Coastguard Worker     xnn_f32_igemm_ukernel_1x4__scalar,
2458*4bdc9457SAndroid Build Coastguard Worker     xnn_init_f32_minmax_scalar_params,
2459*4bdc9457SAndroid Build Coastguard Worker     4 /* mr */, 4 /* nr */);
2460*4bdc9457SAndroid Build Coastguard Worker }
2461*4bdc9457SAndroid Build Coastguard Worker 
2462*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(f32_gemm_2x4__scalar);
2463*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_FP32_END2END(f32_gemm_4x4__scalar);
2464*4bdc9457SAndroid Build Coastguard Worker 
2465*4bdc9457SAndroid Build Coastguard Worker 
2466*4bdc9457SAndroid Build Coastguard Worker #ifndef XNNPACK_BENCHMARK_NO_MAIN
2467*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_MAIN();
2468*4bdc9457SAndroid Build Coastguard Worker #endif
2469