1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2020 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 <cfloat>
8*4bdc9457SAndroid Build Coastguard Worker #include <chrono>
9*4bdc9457SAndroid Build Coastguard Worker #include <cmath>
10*4bdc9457SAndroid Build Coastguard Worker #include <functional>
11*4bdc9457SAndroid Build Coastguard Worker #include <limits>
12*4bdc9457SAndroid Build Coastguard Worker #include <mutex>
13*4bdc9457SAndroid Build Coastguard Worker #include <random>
14*4bdc9457SAndroid Build Coastguard Worker #include <vector>
15*4bdc9457SAndroid Build Coastguard Worker
16*4bdc9457SAndroid Build Coastguard Worker #include <cpuinfo.h>
17*4bdc9457SAndroid Build Coastguard Worker
18*4bdc9457SAndroid Build Coastguard Worker #include <benchmark/benchmark.h>
19*4bdc9457SAndroid Build Coastguard Worker #ifdef BENCHMARK_RUY
20*4bdc9457SAndroid Build Coastguard Worker #include "ruy/ruy.h"
21*4bdc9457SAndroid Build Coastguard Worker #endif // BENCHMARK_RUY
22*4bdc9457SAndroid Build Coastguard Worker #include "bench/gemm.h"
23*4bdc9457SAndroid Build Coastguard Worker #include "bench/utils.h"
24*4bdc9457SAndroid Build Coastguard Worker
25*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack.h>
26*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/aligned-allocator.h>
27*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
28*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/gemm.h>
29*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/math.h>
30*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microfnptr.h>
31*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams-init.h>
32*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/pack.h>
33*4bdc9457SAndroid Build Coastguard Worker
34*4bdc9457SAndroid Build Coastguard Worker
GEMMBenchmark(benchmark::State & state,xnn_qs8_gemm_minmax_ukernel_function gemm,size_t mr,size_t nr,size_t kr,size_t sr,xnn_init_qs8_conv_minmax_params_fn init_params,benchmark::utils::IsaCheckFunction isa_check=nullptr,bool extended_weights=false)35*4bdc9457SAndroid Build Coastguard Worker static void GEMMBenchmark(benchmark::State& state,
36*4bdc9457SAndroid Build Coastguard Worker xnn_qs8_gemm_minmax_ukernel_function gemm,
37*4bdc9457SAndroid Build Coastguard Worker size_t mr, size_t nr, size_t kr, size_t sr,
38*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params,
39*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::IsaCheckFunction isa_check = nullptr,
40*4bdc9457SAndroid Build Coastguard Worker bool extended_weights = false)
41*4bdc9457SAndroid Build Coastguard Worker {
42*4bdc9457SAndroid Build Coastguard Worker if (!cpuinfo_initialize()) {
43*4bdc9457SAndroid Build Coastguard Worker state.SkipWithError("cpuinfo initialization failed");
44*4bdc9457SAndroid Build Coastguard Worker return;
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
50*4bdc9457SAndroid Build Coastguard Worker const size_t mc = state.range(0);
51*4bdc9457SAndroid Build Coastguard Worker const size_t nc = state.range(1);
52*4bdc9457SAndroid Build Coastguard Worker const size_t kc = state.range(2);
53*4bdc9457SAndroid Build Coastguard Worker
54*4bdc9457SAndroid Build Coastguard Worker const size_t nc_stride = benchmark::utils::RoundUp(nc, nr);
55*4bdc9457SAndroid Build Coastguard Worker const size_t kc_stride = benchmark::utils::RoundUp(kc, kr * sr);
56*4bdc9457SAndroid Build Coastguard Worker
57*4bdc9457SAndroid Build Coastguard Worker std::random_device random_device;
58*4bdc9457SAndroid Build Coastguard Worker auto rng = std::mt19937(random_device());
59*4bdc9457SAndroid Build Coastguard Worker auto i32rng = std::bind(std::uniform_int_distribution<int32_t>(-10000, 10000), std::ref(rng));
60*4bdc9457SAndroid Build Coastguard Worker auto i8rng = std::bind(
61*4bdc9457SAndroid Build Coastguard Worker std::uniform_int_distribution<int32_t>(-std::numeric_limits<int8_t>::max(), std::numeric_limits<int8_t>::max()), std::ref(rng));
62*4bdc9457SAndroid Build Coastguard Worker
63*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> a(mc * kc + XNN_EXTRA_BYTES / sizeof(int8_t));
64*4bdc9457SAndroid Build Coastguard Worker std::generate(a.begin(), a.end(), std::ref(i8rng));
65*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> k(nc * kc);
66*4bdc9457SAndroid Build Coastguard Worker std::generate(k.begin(), k.end(), std::ref(i8rng));
67*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t> b(nc);
68*4bdc9457SAndroid Build Coastguard Worker std::generate(b.begin(), b.end(), std::ref(i32rng));
69*4bdc9457SAndroid Build Coastguard Worker
70*4bdc9457SAndroid Build Coastguard Worker const size_t w_element_size = extended_weights ? sizeof(int16_t) : sizeof(int8_t);
71*4bdc9457SAndroid Build Coastguard Worker const size_t w_size = nc_stride * sizeof(int32_t) + kc_stride * nc_stride * w_element_size;
72*4bdc9457SAndroid Build Coastguard Worker const size_t c_elements = mc * nc;
73*4bdc9457SAndroid Build Coastguard Worker const size_t num_buffers = 1 +
74*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::DivideRoundUp<size_t>(benchmark::utils::GetMaxCacheSize(), w_size + c_elements * sizeof(int8_t));
75*4bdc9457SAndroid Build Coastguard Worker
76*4bdc9457SAndroid Build Coastguard Worker std::vector<char, AlignedAllocator<char, 64>> w(w_size * num_buffers);
77*4bdc9457SAndroid Build Coastguard Worker std::fill(w.begin(), w.end(), 0);
78*4bdc9457SAndroid Build Coastguard Worker const xnn_qs8_packing_params packing_params = { 127 };
79*4bdc9457SAndroid Build Coastguard Worker if (extended_weights) {
80*4bdc9457SAndroid Build Coastguard Worker xnn_pack_qs8_gemm_xw_goi_w(1 /* groups */, nc, kc, nr, kr, sr, k.data(), b.data(), w.data(), 0, &packing_params);
81*4bdc9457SAndroid Build Coastguard Worker } else {
82*4bdc9457SAndroid Build Coastguard Worker xnn_pack_qs8_gemm_goi_w(1 /* groups */, nc, kc, nr, kr, sr, k.data(), b.data(), w.data(), 0, &packing_params);
83*4bdc9457SAndroid Build Coastguard Worker }
84*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> c(c_elements * num_buffers);
85*4bdc9457SAndroid Build Coastguard Worker std::fill(c.begin(), c.end(), 0xA5);
86*4bdc9457SAndroid Build Coastguard Worker
87*4bdc9457SAndroid Build Coastguard Worker union xnn_qs8_conv_minmax_params quantization_params;
88*4bdc9457SAndroid Build Coastguard Worker init_params(&quantization_params, 0.75f, 127, -127, 126);
89*4bdc9457SAndroid Build Coastguard Worker
90*4bdc9457SAndroid Build Coastguard Worker size_t buffer_index = 0;
91*4bdc9457SAndroid Build Coastguard Worker for (auto _ : state) {
92*4bdc9457SAndroid Build Coastguard Worker // Use circular buffers (exceeding cache size) and prefetch to control cache state:
93*4bdc9457SAndroid Build Coastguard Worker // - A is always in L1 cache (if fits, otherwise L2, L3, etc)
94*4bdc9457SAndroid Build Coastguard Worker // - W is not in cache (for any cache level)
95*4bdc9457SAndroid Build Coastguard Worker // - C is not in cache (for any cache level)
96*4bdc9457SAndroid Build Coastguard Worker state.PauseTiming();
97*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::PrefetchToL1(a.data(), a.size() * sizeof(int8_t));
98*4bdc9457SAndroid Build Coastguard Worker buffer_index = (buffer_index + 1) % num_buffers;
99*4bdc9457SAndroid Build Coastguard Worker state.ResumeTiming();
100*4bdc9457SAndroid Build Coastguard Worker
101*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 0; m < mc; m += mr) {
102*4bdc9457SAndroid Build Coastguard Worker const uint32_t mb = min(mc - m, mr);
103*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 0; n < nc; n += nr) {
104*4bdc9457SAndroid Build Coastguard Worker const uint32_t nb = min(nc - n, nr);
105*4bdc9457SAndroid Build Coastguard Worker gemm(
106*4bdc9457SAndroid Build Coastguard Worker mb, nb, kc * sizeof(int8_t),
107*4bdc9457SAndroid Build Coastguard Worker a.data() + m * kc, kc * sizeof(int8_t),
108*4bdc9457SAndroid Build Coastguard Worker w.data() + w_size * buffer_index + n * (kc_stride * w_element_size + sizeof(int32_t)),
109*4bdc9457SAndroid Build Coastguard Worker c.data() + (mc * buffer_index + m) * nc + n, nc * sizeof(int8_t), nr * sizeof(int8_t),
110*4bdc9457SAndroid Build Coastguard Worker &quantization_params);
111*4bdc9457SAndroid Build Coastguard Worker }
112*4bdc9457SAndroid Build Coastguard Worker }
113*4bdc9457SAndroid Build Coastguard Worker }
114*4bdc9457SAndroid Build Coastguard Worker
115*4bdc9457SAndroid Build Coastguard Worker const uint64_t cpu_frequency = benchmark::utils::GetCurrentCpuFrequency();
116*4bdc9457SAndroid Build Coastguard Worker if (cpu_frequency != 0) {
117*4bdc9457SAndroid Build Coastguard Worker state.counters["cpufreq"] = cpu_frequency;
118*4bdc9457SAndroid Build Coastguard Worker }
119*4bdc9457SAndroid Build Coastguard Worker
120*4bdc9457SAndroid Build Coastguard Worker state.counters["OPS"] = benchmark::Counter(
121*4bdc9457SAndroid Build Coastguard Worker uint64_t(state.iterations()) * 2 * mc * nc * kc, benchmark::Counter::kIsRate);
122*4bdc9457SAndroid Build Coastguard Worker }
123*4bdc9457SAndroid Build Coastguard Worker
124*4bdc9457SAndroid Build Coastguard Worker #ifdef BENCHMARK_RUY
RuyBenchmark(benchmark::State & state,size_t threads)125*4bdc9457SAndroid Build Coastguard Worker static void RuyBenchmark(benchmark::State& state, size_t threads)
126*4bdc9457SAndroid Build Coastguard Worker {
127*4bdc9457SAndroid Build Coastguard Worker const size_t mc = state.range(0);
128*4bdc9457SAndroid Build Coastguard Worker const size_t nc = state.range(1);
129*4bdc9457SAndroid Build Coastguard Worker const size_t kc = state.range(2);
130*4bdc9457SAndroid Build Coastguard Worker
131*4bdc9457SAndroid Build Coastguard Worker std::random_device random_device;
132*4bdc9457SAndroid Build Coastguard Worker auto rng = std::mt19937(random_device());
133*4bdc9457SAndroid Build Coastguard Worker auto i32rng = std::bind(std::uniform_int_distribution<int32_t>(-10000, 10000), std::ref(rng));
134*4bdc9457SAndroid Build Coastguard Worker auto u8rng = std::bind(std::uniform_int_distribution<uint32_t>(0, std::numeric_limits<uint8_t>::max()), std::ref(rng));
135*4bdc9457SAndroid Build Coastguard Worker
136*4bdc9457SAndroid Build Coastguard Worker const size_t num_buffers = 1 +
137*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::DivideRoundUp<size_t>(benchmark::utils::GetMaxCacheSize(),
138*4bdc9457SAndroid Build Coastguard Worker nc * (sizeof(int8_t) * (mc + kc) + sizeof(int32_t)));
139*4bdc9457SAndroid Build Coastguard Worker
140*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> a(mc * kc);
141*4bdc9457SAndroid Build Coastguard Worker std::generate(a.begin(), a.end(), std::ref(u8rng));
142*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> k(num_buffers * nc * kc);
143*4bdc9457SAndroid Build Coastguard Worker std::generate(k.begin(), k.end(), std::ref(u8rng));
144*4bdc9457SAndroid Build Coastguard Worker std::vector<int32_t> b(num_buffers * nc);
145*4bdc9457SAndroid Build Coastguard Worker std::generate(b.begin(), b.end(), std::ref(i32rng));
146*4bdc9457SAndroid Build Coastguard Worker std::vector<int8_t> c(num_buffers * nc * mc);
147*4bdc9457SAndroid Build Coastguard Worker std::fill(c.begin(), c.end(), std::nanf(""));
148*4bdc9457SAndroid Build Coastguard Worker
149*4bdc9457SAndroid Build Coastguard Worker // Note: context must be static to avoid the cost of re-creating it for each benchmark.
150*4bdc9457SAndroid Build Coastguard Worker static ruy::Context context;
151*4bdc9457SAndroid Build Coastguard Worker context.set_max_num_threads(threads);
152*4bdc9457SAndroid Build Coastguard Worker
153*4bdc9457SAndroid Build Coastguard Worker ruy::Matrix<int8_t> ruy_a;
154*4bdc9457SAndroid Build Coastguard Worker ruy::MakeSimpleLayout(nc, kc, ruy::Order::kRowMajor, ruy_a.mutable_layout());
155*4bdc9457SAndroid Build Coastguard Worker ruy_a.set_zero_point(127);
156*4bdc9457SAndroid Build Coastguard Worker ruy::Matrix<int8_t> ruy_b;
157*4bdc9457SAndroid Build Coastguard Worker ruy::MakeSimpleLayout(kc, mc, ruy::Order::kColMajor, ruy_b.mutable_layout());
158*4bdc9457SAndroid Build Coastguard Worker ruy_b.set_data(a.data());
159*4bdc9457SAndroid Build Coastguard Worker ruy_b.set_zero_point(127);
160*4bdc9457SAndroid Build Coastguard Worker ruy::Matrix<int8_t> ruy_c;
161*4bdc9457SAndroid Build Coastguard Worker ruy::MakeSimpleLayout(nc, mc, ruy::Order::kColMajor, ruy_c.mutable_layout());
162*4bdc9457SAndroid Build Coastguard Worker ruy_c.set_zero_point(127);
163*4bdc9457SAndroid Build Coastguard Worker
164*4bdc9457SAndroid Build Coastguard Worker ruy::MulParams<int32_t, int8_t> mul_params;
165*4bdc9457SAndroid Build Coastguard Worker mul_params.set_multiplier_fixedpoint(0x40000000);
166*4bdc9457SAndroid Build Coastguard Worker
167*4bdc9457SAndroid Build Coastguard Worker // ruy::Context uses deferred initialization, which affects percieved GEMM performance. Initialization happens during
168*4bdc9457SAndroid Build Coastguard Worker // the first GEMM calls, and per Benoit Jacob it takes up to ~250 milliseconds for performance to stabilize.
169*4bdc9457SAndroid Build Coastguard Worker // Thus, on the first benchmark, we compute GEMM for 500 milliseconds (to be safe) without recording performance, and
170*4bdc9457SAndroid Build Coastguard Worker // keep the ruy::Context object initialized (by being static) between subsequent benchmarks.
171*4bdc9457SAndroid Build Coastguard Worker static std::once_flag warmup;
172*4bdc9457SAndroid Build Coastguard Worker std::call_once(warmup, [&](){
173*4bdc9457SAndroid Build Coastguard Worker auto start = std::chrono::steady_clock::now();
174*4bdc9457SAndroid Build Coastguard Worker do {
175*4bdc9457SAndroid Build Coastguard Worker ruy_a.set_data(k.data());
176*4bdc9457SAndroid Build Coastguard Worker ruy_c.set_data(c.data());
177*4bdc9457SAndroid Build Coastguard Worker mul_params.set_bias(b.data());
178*4bdc9457SAndroid Build Coastguard Worker
179*4bdc9457SAndroid Build Coastguard Worker ruy::Mul(ruy_a, ruy_b, mul_params, &context, &ruy_c);
180*4bdc9457SAndroid Build Coastguard Worker } while (std::chrono::duration<double>(std::chrono::steady_clock::now() - start).count() < 0.5);
181*4bdc9457SAndroid Build Coastguard Worker });
182*4bdc9457SAndroid Build Coastguard Worker
183*4bdc9457SAndroid Build Coastguard Worker size_t buffer_index = 0;
184*4bdc9457SAndroid Build Coastguard Worker for (auto _ : state) {
185*4bdc9457SAndroid Build Coastguard Worker // Use circular buffers (exceeding cache size) and prefetch to control cache state:
186*4bdc9457SAndroid Build Coastguard Worker // - A is always in L1 cache (if fits, otherwise L2, L3, etc)
187*4bdc9457SAndroid Build Coastguard Worker // - K is not in cache (for any cache level)
188*4bdc9457SAndroid Build Coastguard Worker // - B is not in cache (for any cache level)
189*4bdc9457SAndroid Build Coastguard Worker // - C is not in cache (for any cache level)
190*4bdc9457SAndroid Build Coastguard Worker state.PauseTiming();
191*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::PrefetchToL1(a.data(), a.size() * sizeof(int8_t));
192*4bdc9457SAndroid Build Coastguard Worker buffer_index = (buffer_index + 1) % num_buffers;
193*4bdc9457SAndroid Build Coastguard Worker state.ResumeTiming();
194*4bdc9457SAndroid Build Coastguard Worker
195*4bdc9457SAndroid Build Coastguard Worker ruy_a.set_data(k.data() + buffer_index * nc * kc);
196*4bdc9457SAndroid Build Coastguard Worker ruy_c.set_data(c.data() + buffer_index * mc * nc);
197*4bdc9457SAndroid Build Coastguard Worker mul_params.set_bias(b.data() + buffer_index * nc);
198*4bdc9457SAndroid Build Coastguard Worker
199*4bdc9457SAndroid Build Coastguard Worker ruy::Mul(ruy_a, ruy_b, mul_params, &context, &ruy_c);
200*4bdc9457SAndroid Build Coastguard Worker }
201*4bdc9457SAndroid Build Coastguard Worker
202*4bdc9457SAndroid Build Coastguard Worker const uint64_t cpu_frequency = benchmark::utils::GetCurrentCpuFrequency();
203*4bdc9457SAndroid Build Coastguard Worker if (cpu_frequency != 0) {
204*4bdc9457SAndroid Build Coastguard Worker state.counters["cpufreq"] = cpu_frequency;
205*4bdc9457SAndroid Build Coastguard Worker }
206*4bdc9457SAndroid Build Coastguard Worker
207*4bdc9457SAndroid Build Coastguard Worker state.counters["OPS"] = benchmark::Counter(
208*4bdc9457SAndroid Build Coastguard Worker uint64_t(state.iterations()) * 2 * mc * nc * kc, benchmark::Counter::kIsRate);
209*4bdc9457SAndroid Build Coastguard Worker }
210*4bdc9457SAndroid Build Coastguard Worker
ruy_st(benchmark::State & state,const char * net)211*4bdc9457SAndroid Build Coastguard Worker static void ruy_st(benchmark::State& state, const char* net)
212*4bdc9457SAndroid Build Coastguard Worker {
213*4bdc9457SAndroid Build Coastguard Worker RuyBenchmark(state, 1);
214*4bdc9457SAndroid Build Coastguard Worker }
215*4bdc9457SAndroid Build Coastguard Worker #endif // BENCHMARK_RUY
216*4bdc9457SAndroid Build Coastguard Worker
217*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_PLATFORM_JIT && XNN_ENABLE_JIT
GEMMBenchmark(benchmark::State & state,xnn_jit_gemm_code_generator_function generator,size_t mr,size_t nr,size_t kr,size_t sr,xnn_init_qs8_conv_minmax_params_fn init_params,benchmark::utils::IsaCheckFunction isa_check=nullptr)218*4bdc9457SAndroid Build Coastguard Worker static void GEMMBenchmark(benchmark::State& state,
219*4bdc9457SAndroid Build Coastguard Worker xnn_jit_gemm_code_generator_function generator,
220*4bdc9457SAndroid Build Coastguard Worker size_t mr, size_t nr, size_t kr, size_t sr,
221*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_params_fn init_params,
222*4bdc9457SAndroid Build Coastguard Worker benchmark::utils::IsaCheckFunction isa_check = nullptr)
223*4bdc9457SAndroid Build Coastguard Worker {
224*4bdc9457SAndroid Build Coastguard Worker xnn_initialize(/*allocator=*/nullptr);
225*4bdc9457SAndroid Build Coastguard Worker xnn_code_buffer code_buffer;
226*4bdc9457SAndroid Build Coastguard Worker xnn_allocate_code_memory(&code_buffer, XNN_DEFAULT_CODE_BUFFER_SIZE);
227*4bdc9457SAndroid Build Coastguard Worker const size_t nc = state.range(1);
228*4bdc9457SAndroid Build Coastguard Worker const size_t kc = state.range(2);
229*4bdc9457SAndroid Build Coastguard Worker generator(&code_buffer, mr, nc % nr, kc, nullptr);
230*4bdc9457SAndroid Build Coastguard Worker xnn_finalize_code_memory(&code_buffer);
231*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(
232*4bdc9457SAndroid Build Coastguard Worker state,
233*4bdc9457SAndroid Build Coastguard Worker reinterpret_cast<xnn_qs8_gemm_minmax_ukernel_function>(code_buffer.start),
234*4bdc9457SAndroid Build Coastguard Worker mr, nr, kr, sr, init_params, isa_check);
235*4bdc9457SAndroid Build Coastguard Worker xnn_release_code_memory(&code_buffer);
236*4bdc9457SAndroid Build Coastguard Worker }
237*4bdc9457SAndroid Build Coastguard Worker
jit_qs8_gemm_4x8c4__aarch32_neondot_ld64(benchmark::State & state,const char * net)238*4bdc9457SAndroid Build Coastguard Worker static void jit_qs8_gemm_4x8c4__aarch32_neondot_ld64(benchmark::State& state, const char* net) {
239*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_generate_qs8_gemm_rndnu_ukernel_4x8c4__aarch32_neondot_ld64, 4, 8, 4, 1,
240*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
241*4bdc9457SAndroid Build Coastguard Worker }
jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State & state,const char * net)242*4bdc9457SAndroid Build Coastguard Worker static void jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State& state, const char* net) {
243*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_generate_qs8_gemm_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64, 4, 8, 1, 1,
244*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
245*4bdc9457SAndroid Build Coastguard Worker }
jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State & state,const char * net)246*4bdc9457SAndroid Build Coastguard Worker static void jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State& state, const char* net) {
247*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_generate_qs8_gemm_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64, 4, 8, 1, 1,
248*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
249*4bdc9457SAndroid Build Coastguard Worker }
250*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(jit_qs8_gemm_4x8c4__aarch32_neondot_ld64)
BENCHMARK_GEMM(jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64)251*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64)
252*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(jit_qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64)
253*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_PLATFORM_JIT && XNN_ENABLE_JIT
254*4bdc9457SAndroid Build Coastguard Worker
255*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
256*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__aarch32_neondot_ld64(benchmark::State& state, const char* net) {
257*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_ld64, 4, 8, 4, 1,
258*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
259*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__aarch32_neondot_cortex_a55(benchmark::State & state,const char * net)260*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__aarch32_neondot_cortex_a55(benchmark::State& state, const char* net) {
261*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_cortex_a55, 4, 8, 4, 1,
262*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
263*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53(benchmark::State & state,const char * net)264*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53(benchmark::State& state, const char* net) {
265*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, 4, 8, 1, 1,
266*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
267*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,const char * net)268*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, const char* net) {
269*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, 4, 8, 1, 1,
270*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
271*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State & state,const char * net)272*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State& state, const char* net) {
273*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, 4, 8, 1, 1,
274*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
275*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State & state,const char * net)276*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State& state, const char* net) {
277*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, 4, 8, 1, 1,
278*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
279*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State & state,const char * net)280*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64(benchmark::State& state, const char* net) {
281*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64, 4, 8, 1, 1,
282*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
283*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State & state,const char * net)284*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64(benchmark::State& state, const char* net) {
285*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64, 4, 8, 1, 1,
286*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
287*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State & state,const char * net)288*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8__aarch32_neon_mlal_lane_cortex_a7(benchmark::State& state, const char* net) {
289*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, 1, 8, 1, 1,
290*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
291*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State & state,const char * net)292*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7(benchmark::State& state, const char* net) {
293*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7, 1, 8, 1, 1,
294*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
295*4bdc9457SAndroid Build Coastguard Worker }
296*4bdc9457SAndroid Build Coastguard Worker
297*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__aarch32_neondot_ld64)
BENCHMARK_GEMM(qs8_gemm_4x8c4__aarch32_neondot_cortex_a55)298*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__aarch32_neondot_cortex_a55)
299*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a53)
300*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53)
301*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_cortex_a7)
302*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7)
303*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_ld64)
304*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch32_neon_mlal_lane_prfm_ld64)
305*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8__aarch32_neon_mlal_lane_cortex_a7)
306*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7)
307*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY
308*4bdc9457SAndroid Build Coastguard Worker
309*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
310*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__aarch64_neondot_cortex_a55(benchmark::State& state, const char* net) {
311*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, 4, 16, 4, 1,
312*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
313*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__aarch64_neondot_ld32(benchmark::State & state,const char * net)314*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__aarch64_neondot_ld32(benchmark::State& state, const char* net) {
315*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld32, 1, 16, 4, 1,
316*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
317*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__aarch64_neondot_ld64(benchmark::State & state,const char * net)318*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__aarch64_neondot_ld64(benchmark::State& state, const char* net) {
319*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__aarch64_neondot_ld64, 1, 16, 4, 1,
320*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
321*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__aarch64_neondot_ld32(benchmark::State & state,const char * net)322*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__aarch64_neondot_ld32(benchmark::State& state, const char* net) {
323*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld32, 4, 16, 4, 1,
324*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
325*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__aarch64_neondot_ld64(benchmark::State & state,const char * net)326*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__aarch64_neondot_ld64(benchmark::State& state, const char* net) {
327*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld64, 4, 16, 4, 1,
328*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
329*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State & state,const char * net)330*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__aarch64_neondot_ld128(benchmark::State& state, const char* net) {
331*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, 4, 16, 4, 1,
332*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
333*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64(benchmark::State & state,const char * net)334*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64(benchmark::State& state, const char* net) {
335*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_ld64, 4, 8, 1, 1,
336*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
337*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State & state,const char * net)338*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State& state, const char* net) {
339*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_prfm_ld64, 4, 8, 1, 1,
340*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
341*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State & state,const char * net)342*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53(benchmark::State& state, const char* net) {
343*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53, 4, 16, 1, 1,
344*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
345*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State & state,const char * net)346*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53(benchmark::State& state, const char* net) {
347*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, 4, 16, 1, 1,
348*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
349*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State & state,const char * net)350*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64(benchmark::State& state, const char* net) {
351*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64, 4, 16, 1, 1,
352*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
353*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State & state,const char * net)354*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64(benchmark::State& state, const char* net) {
355*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64, 4, 16, 1, 1,
356*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
357*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__aarch64_neon_mlal_prfm(benchmark::State & state,const char * net)358*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__aarch64_neon_mlal_prfm(benchmark::State& state, const char* net) {
359*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm, 1, 8, 8, 1,
360*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
361*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__aarch64_neon_mlal(benchmark::State & state,const char * net)362*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__aarch64_neon_mlal(benchmark::State& state, const char* net) {
363*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal, 1, 8, 8, 1,
364*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
365*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State & state,const char * net)366*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State& state, const char* net) {
367*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_cortex_a53, 1, 8, 8, 1,
368*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
369*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State & state,const char * net)370*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State& state, const char* net) {
371*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm_cortex_a53, 1, 8, 8, 1,
372*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
373*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__aarch64_neon_mull(benchmark::State & state,const char * net)374*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__aarch64_neon_mull(benchmark::State& state, const char* net) {
375*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mull, 2, 8, 8, 1,
376*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
377*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__aarch64_neon_mlal(benchmark::State & state,const char * net)378*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__aarch64_neon_mlal(benchmark::State& state, const char* net) {
379*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal, 2, 8, 8, 1,
380*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
381*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__aarch64_neon_mlal_prfm(benchmark::State & state,const char * net)382*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__aarch64_neon_mlal_prfm(benchmark::State& state, const char* net) {
383*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm, 2, 8, 8, 1,
384*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
385*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State & state,const char * net)386*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53(benchmark::State& state, const char* net) {
387*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_cortex_a53, 2, 8, 8, 1,
388*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
389*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State & state,const char * net)390*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53(benchmark::State& state, const char* net) {
391*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm_cortex_a53, 2, 8, 8, 1,
392*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
393*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c16__aarch64_neon_mlal(benchmark::State & state,const char * net)394*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c16__aarch64_neon_mlal(benchmark::State& state, const char* net) {
395*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c16__aarch64_neon_mlal, 2, 8, 16, 1,
396*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
397*4bdc9457SAndroid Build Coastguard Worker }
398*4bdc9457SAndroid Build Coastguard Worker
399*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__aarch64_neondot_ld32)
BENCHMARK_GEMM(qs8_gemm_1x16c4__aarch64_neondot_ld64)400*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__aarch64_neondot_ld64)
401*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__aarch64_neondot_ld32)
402*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__aarch64_neondot_ld64)
403*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__aarch64_neondot_ld128)
404*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__aarch64_neondot_cortex_a55)
405*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch64_neon_mlal_lane_ld64)
406*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__aarch64_neon_mlal_lane_prfm_ld64)
407*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__aarch64_neon_mlal_lane_cortex_a53)
408*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53)
409*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__aarch64_neon_mlal_lane_ld64)
410*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__aarch64_neon_mlal_lane_prfm_ld64)
411*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__aarch64_neon_mlal_prfm)
412*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__aarch64_neon_mlal)
413*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__aarch64_neon_mlal_prfm_cortex_a53)
414*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__aarch64_neon_mlal_cortex_a53)
415*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__aarch64_neon_mull)
416*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__aarch64_neon_mlal)
417*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__aarch64_neon_mlal_prfm)
418*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__aarch64_neon_mlal_cortex_a53)
419*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__aarch64_neon_mlal_prfm_cortex_a53)
420*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c16__aarch64_neon_mlal)
421*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY
422*4bdc9457SAndroid Build Coastguard Worker
423*4bdc9457SAndroid Build Coastguard Worker
424*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
425*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neondot(benchmark::State& state, const char* net) {
426*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neondot, 1, 8, 4, 1,
427*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
428*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neondot(benchmark::State & state,const char * net)429*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neondot(benchmark::State& state, const char* net) {
430*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, 4, 8, 4, 1,
431*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
432*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x8c4__neondot(benchmark::State & state,const char * net)433*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x8c4__neondot(benchmark::State& state, const char* net) {
434*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x8c4__neondot, 6, 8, 4, 1,
435*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
436*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_8x8c4__neondot(benchmark::State & state,const char * net)437*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_8x8c4__neondot(benchmark::State& state, const char* net) {
438*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_8x8c4__neondot, 8, 8, 4, 1,
439*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
440*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neondot(benchmark::State & state,const char * net)441*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neondot(benchmark::State& state, const char* net) {
442*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, 1, 16, 4, 1,
443*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
444*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neondot(benchmark::State & state,const char * net)445*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neondot(benchmark::State& state, const char* net) {
446*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neondot, 4, 16, 4, 1,
447*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
448*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x16c4__neondot(benchmark::State & state,const char * net)449*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x16c4__neondot(benchmark::State& state, const char* net) {
450*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, 6, 16, 4, 1,
451*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
452*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_8x16c4__neondot(benchmark::State & state,const char * net)453*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_8x16c4__neondot(benchmark::State& state, const char* net) {
454*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_8x16c4__neondot, 8, 16, 4, 1,
455*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEONDOT);
456*4bdc9457SAndroid Build Coastguard Worker }
457*4bdc9457SAndroid Build Coastguard Worker
458*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neondot)
BENCHMARK_GEMM(qs8_gemm_4x8c4__neondot)459*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neondot)
460*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x8c4__neondot)
461*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_8x8c4__neondot)
462*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neondot)
463*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neondot)
464*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x16c4__neondot)
465*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_8x16c4__neondot)
466*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM || XNN_ARCH_ARM64)
467*4bdc9457SAndroid Build Coastguard Worker
468*4bdc9457SAndroid Build Coastguard Worker
469*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
470*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8__neon_mlal_lane(benchmark::State& state, const char* net) {
471*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane, 1, 8, 1, 1,
472*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
473*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8__neon_mlal_lane(benchmark::State & state,const char * net)474*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8__neon_mlal_lane(benchmark::State& state, const char* net) {
475*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, 2, 8, 1, 1,
476*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
477*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8__neon_mlal_lane(benchmark::State & state,const char * net)478*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8__neon_mlal_lane(benchmark::State& state, const char* net) {
479*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, 3, 8, 1, 1,
480*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
481*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__neon_mlal_lane(benchmark::State & state,const char * net)482*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__neon_mlal_lane(benchmark::State& state, const char* net) {
483*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane, 4, 8, 1, 1,
484*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
485*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x8__neon_mlal_lane(benchmark::State & state,const char * net)486*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x8__neon_mlal_lane(benchmark::State& state, const char* net) {
487*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, 6, 8, 1, 1,
488*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
489*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16__neon_mlal_lane(benchmark::State & state,const char * net)490*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16__neon_mlal_lane(benchmark::State& state, const char* net) {
491*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, 1, 16, 1, 1,
492*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
493*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16__neon_mlal_lane(benchmark::State & state,const char * net)494*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16__neon_mlal_lane(benchmark::State& state, const char* net) {
495*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, 2, 16, 1, 1,
496*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
497*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16__neon_mlal_lane(benchmark::State & state,const char * net)498*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16__neon_mlal_lane(benchmark::State& state, const char* net) {
499*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, 3, 16, 1, 1,
500*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
501*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__neon_mlal_lane(benchmark::State & state,const char * net)502*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__neon_mlal_lane(benchmark::State& state, const char* net) {
503*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane, 4, 16, 1, 1,
504*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
505*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x16__neon_mlal_lane(benchmark::State & state,const char * net)506*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x16__neon_mlal_lane(benchmark::State& state, const char* net) {
507*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane, 6, 16, 1, 1,
508*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
509*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8__neon_mlal_lane_prfm(benchmark::State & state,const char * net)510*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
511*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm, 1, 8, 1, 1,
512*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
513*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8__neon_mlal_lane_prfm(benchmark::State & state,const char * net)514*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
515*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane_prfm, 2, 8, 1, 1,
516*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
517*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8__neon_mlal_lane_prfm(benchmark::State & state,const char * net)518*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
519*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane_prfm, 3, 8, 1, 1,
520*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
521*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8__neon_mlal_lane_prfm(benchmark::State & state,const char * net)522*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
523*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane_prfm, 4, 8, 1, 1,
524*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
525*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x8__neon_mlal_lane_prfm(benchmark::State & state,const char * net)526*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x8__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
527*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane_prfm, 6, 8, 1, 1,
528*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
529*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16__neon_mlal_lane_prfm(benchmark::State & state,const char * net)530*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
531*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm, 1, 16, 1, 1,
532*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
533*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16__neon_mlal_lane_prfm(benchmark::State & state,const char * net)534*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
535*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane_prfm, 2, 16, 1, 1,
536*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
537*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16__neon_mlal_lane_prfm(benchmark::State & state,const char * net)538*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
539*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane_prfm, 3, 16, 1, 1,
540*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
541*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16__neon_mlal_lane_prfm(benchmark::State & state,const char * net)542*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
543*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane_prfm, 4, 16, 1, 1,
544*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
545*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_6x16__neon_mlal_lane_prfm(benchmark::State & state,const char * net)546*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_6x16__neon_mlal_lane_prfm(benchmark::State& state, const char* net) {
547*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane_prfm, 6, 16, 1, 1,
548*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
549*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mull_dup(benchmark::State & state,const char * net)550*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mull_dup(benchmark::State& state, const char* net) {
551*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup, 1, 8, 2, 1,
552*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
553*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mull_dup(benchmark::State & state,const char * net)554*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mull_dup(benchmark::State& state, const char* net) {
555*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_dup, 2, 8, 2, 1,
556*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
557*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mull_dup(benchmark::State & state,const char * net)558*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mull_dup(benchmark::State& state, const char* net) {
559*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_dup, 3, 8, 2, 1,
560*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
561*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mull_dup(benchmark::State & state,const char * net)562*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mull_dup(benchmark::State& state, const char* net) {
563*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_dup, 4, 8, 2, 1,
564*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
565*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mull_dup(benchmark::State & state,const char * net)566*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mull_dup(benchmark::State& state, const char* net) {
567*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup, 1, 16, 2, 1,
568*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
569*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mull_dup(benchmark::State & state,const char * net)570*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mull_dup(benchmark::State& state, const char* net) {
571*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_dup, 2, 16, 2, 1,
572*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
573*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mull_dup(benchmark::State & state,const char * net)574*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mull_dup(benchmark::State& state, const char* net) {
575*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_dup, 3, 16, 2, 1,
576*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
577*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mull_dup(benchmark::State & state,const char * net)578*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mull_dup(benchmark::State& state, const char* net) {
579*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_dup, 4, 16, 2, 1,
580*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
581*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mlal_dup(benchmark::State & state,const char * net)582*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mlal_dup(benchmark::State& state, const char* net) {
583*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup, 1, 8, 2, 1,
584*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
585*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mlal_dup(benchmark::State & state,const char * net)586*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mlal_dup(benchmark::State& state, const char* net) {
587*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_dup, 2, 8, 2, 1,
588*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
589*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mlal_dup(benchmark::State & state,const char * net)590*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mlal_dup(benchmark::State& state, const char* net) {
591*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_dup, 3, 8, 2, 1,
592*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
593*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mlal_dup(benchmark::State & state,const char * net)594*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mlal_dup(benchmark::State& state, const char* net) {
595*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_dup, 4, 8, 2, 1,
596*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
597*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mlal_dup(benchmark::State & state,const char * net)598*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mlal_dup(benchmark::State& state, const char* net) {
599*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup, 1, 16, 2, 1,
600*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
601*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mlal_dup(benchmark::State & state,const char * net)602*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mlal_dup(benchmark::State& state, const char* net) {
603*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_dup, 2, 16, 2, 1,
604*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
605*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mlal_dup(benchmark::State & state,const char * net)606*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mlal_dup(benchmark::State& state, const char* net) {
607*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_dup, 3, 16, 2, 1,
608*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
609*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mlal_dup(benchmark::State & state,const char * net)610*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mlal_dup(benchmark::State& state, const char* net) {
611*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_dup, 4, 16, 2, 1,
612*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
613*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mull_ld1r(benchmark::State & state,const char * net)614*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
615*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r, 1, 8, 2, 1,
616*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
617*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mull_ld1r(benchmark::State & state,const char * net)618*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
619*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld1r, 2, 8, 2, 1,
620*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
621*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mull_ld1r(benchmark::State & state,const char * net)622*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
623*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld1r, 3, 8, 2, 1,
624*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
625*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mull_ld1r(benchmark::State & state,const char * net)626*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
627*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld1r, 4, 8, 2, 1,
628*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
629*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mull_ld1r(benchmark::State & state,const char * net)630*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
631*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r, 1, 16, 2, 1,
632*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
633*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mull_ld1r(benchmark::State & state,const char * net)634*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
635*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld1r, 2, 16, 2, 1,
636*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
637*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mull_ld1r(benchmark::State & state,const char * net)638*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
639*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld1r, 3, 16, 2, 1,
640*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
641*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mull_ld1r(benchmark::State & state,const char * net)642*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mull_ld1r(benchmark::State& state, const char* net) {
643*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld1r, 4, 16, 2, 1,
644*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
645*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mlal_ld1r(benchmark::State & state,const char * net)646*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
647*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r, 1, 8, 2, 1,
648*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
649*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mlal_ld1r(benchmark::State & state,const char * net)650*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
651*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld1r, 2, 8, 2, 1,
652*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
653*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mlal_ld1r(benchmark::State & state,const char * net)654*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
655*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld1r, 3, 8, 2, 1,
656*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
657*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mlal_ld1r(benchmark::State & state,const char * net)658*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
659*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld1r, 4, 8, 2, 1,
660*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
661*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mlal_ld1r(benchmark::State & state,const char * net)662*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
663*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r, 1, 16, 2, 1,
664*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
665*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mlal_ld1r(benchmark::State & state,const char * net)666*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
667*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld1r, 2, 16, 2, 1,
668*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
669*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mlal_ld1r(benchmark::State & state,const char * net)670*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
671*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld1r, 3, 16, 2, 1,
672*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
673*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mlal_ld1r(benchmark::State & state,const char * net)674*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mlal_ld1r(benchmark::State& state, const char* net) {
675*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld1r, 4, 16, 2, 1,
676*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
677*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mull_ld2r(benchmark::State & state,const char * net)678*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
679*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r, 1, 8, 2, 1,
680*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
681*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mull_ld2r(benchmark::State & state,const char * net)682*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
683*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld2r, 2, 8, 2, 1,
684*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
685*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mull_ld2r(benchmark::State & state,const char * net)686*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
687*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld2r, 3, 8, 2, 1,
688*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
689*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mull_ld2r(benchmark::State & state,const char * net)690*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
691*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld2r, 4, 8, 2, 1,
692*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
693*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mull_ld2r(benchmark::State & state,const char * net)694*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
695*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r, 1, 16, 2, 1,
696*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
697*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mull_ld2r(benchmark::State & state,const char * net)698*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
699*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld2r, 2, 16, 2, 1,
700*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
701*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mull_ld2r(benchmark::State & state,const char * net)702*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
703*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld2r, 3, 16, 2, 1,
704*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
705*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mull_ld2r(benchmark::State & state,const char * net)706*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mull_ld2r(benchmark::State& state, const char* net) {
707*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld2r, 4, 16, 2, 1,
708*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
709*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mlal_ld2r(benchmark::State & state,const char * net)710*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
711*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r, 1, 8, 2, 1,
712*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
713*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mlal_ld2r(benchmark::State & state,const char * net)714*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
715*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld2r, 2, 8, 2, 1,
716*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
717*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mlal_ld2r(benchmark::State & state,const char * net)718*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
719*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld2r, 3, 8, 2, 1,
720*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
721*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mlal_ld2r(benchmark::State & state,const char * net)722*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
723*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld2r, 4, 8, 2, 1,
724*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
725*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mlal_ld2r(benchmark::State & state,const char * net)726*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
727*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r, 1, 16, 2, 1,
728*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
729*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mlal_ld2r(benchmark::State & state,const char * net)730*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
731*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld2r, 2, 16, 2, 1,
732*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
733*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mlal_ld2r(benchmark::State & state,const char * net)734*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
735*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld2r, 3, 16, 2, 1,
736*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
737*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mlal_ld2r(benchmark::State & state,const char * net)738*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mlal_ld2r(benchmark::State& state, const char* net) {
739*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld2r, 4, 16, 2, 1,
740*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
741*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mull_ld4r(benchmark::State & state,const char * net)742*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
743*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r, 1, 8, 2, 1,
744*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
745*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mull_ld4r(benchmark::State & state,const char * net)746*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
747*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld4r, 2, 8, 2, 1,
748*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
749*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mull_ld4r(benchmark::State & state,const char * net)750*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
751*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld4r, 3, 8, 2, 1,
752*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
753*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mull_ld4r(benchmark::State & state,const char * net)754*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
755*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld4r, 4, 8, 2, 1,
756*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
757*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mull_ld4r(benchmark::State & state,const char * net)758*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
759*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r, 1, 16, 2, 1,
760*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
761*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mull_ld4r(benchmark::State & state,const char * net)762*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
763*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld4r, 2, 16, 2, 1,
764*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
765*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mull_ld4r(benchmark::State & state,const char * net)766*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
767*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld4r, 3, 16, 2, 1,
768*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
769*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mull_ld4r(benchmark::State & state,const char * net)770*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mull_ld4r(benchmark::State& state, const char* net) {
771*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld4r, 4, 16, 2, 1,
772*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
773*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2__neon_mlal_ld4r(benchmark::State & state,const char * net)774*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
775*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r, 1, 8, 2, 1,
776*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
777*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2__neon_mlal_ld4r(benchmark::State & state,const char * net)778*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
779*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld4r, 2, 8, 2, 1,
780*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
781*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2__neon_mlal_ld4r(benchmark::State & state,const char * net)782*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
783*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld4r, 3, 8, 2, 1,
784*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
785*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2__neon_mlal_ld4r(benchmark::State & state,const char * net)786*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
787*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld4r, 4, 8, 2, 1,
788*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
789*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2__neon_mlal_ld4r(benchmark::State & state,const char * net)790*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
791*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r, 1, 16, 2, 1,
792*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
793*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2__neon_mlal_ld4r(benchmark::State & state,const char * net)794*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
795*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld4r, 2, 16, 2, 1,
796*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
797*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2__neon_mlal_ld4r(benchmark::State & state,const char * net)798*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
799*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld4r, 3, 16, 2, 1,
800*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
801*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2__neon_mlal_ld4r(benchmark::State & state,const char * net)802*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2__neon_mlal_ld4r(benchmark::State& state, const char* net) {
803*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld4r, 4, 16, 2, 1,
804*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
805*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2s4__neon_mull(benchmark::State & state,const char * net)806*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2s4__neon_mull(benchmark::State& state, const char* net) {
807*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull, 1, 8, 2, 4,
808*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
809*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2s4__neon_mull(benchmark::State & state,const char * net)810*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2s4__neon_mull(benchmark::State& state, const char* net) {
811*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2s4__neon_mull, 2, 8, 2, 4,
812*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
813*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2s4__neon_mull(benchmark::State & state,const char * net)814*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2s4__neon_mull(benchmark::State& state, const char* net) {
815*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2s4__neon_mull, 3, 8, 2, 4,
816*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
817*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2s4__neon_mull(benchmark::State & state,const char * net)818*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2s4__neon_mull(benchmark::State& state, const char* net) {
819*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2s4__neon_mull, 4, 8, 2, 4,
820*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
821*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2s4__neon_mull(benchmark::State & state,const char * net)822*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2s4__neon_mull(benchmark::State& state, const char* net) {
823*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull, 1, 16, 2, 4,
824*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
825*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2s4__neon_mull(benchmark::State & state,const char * net)826*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2s4__neon_mull(benchmark::State& state, const char* net) {
827*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2s4__neon_mull, 2, 16, 2, 4,
828*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
829*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2s4__neon_mull(benchmark::State & state,const char * net)830*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2s4__neon_mull(benchmark::State& state, const char* net) {
831*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2s4__neon_mull, 3, 16, 2, 4,
832*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
833*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2s4__neon_mull(benchmark::State & state,const char * net)834*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2s4__neon_mull(benchmark::State& state, const char* net) {
835*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2s4__neon_mull, 4, 16, 2, 4,
836*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
837*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c2s4__neon_mlal(benchmark::State & state,const char * net)838*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c2s4__neon_mlal(benchmark::State& state, const char* net) {
839*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal, 1, 8, 2, 4,
840*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
841*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c2s4__neon_mlal(benchmark::State & state,const char * net)842*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c2s4__neon_mlal(benchmark::State& state, const char* net) {
843*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c2s4__neon_mlal, 2, 8, 2, 4,
844*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
845*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c2s4__neon_mlal(benchmark::State & state,const char * net)846*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c2s4__neon_mlal(benchmark::State& state, const char* net) {
847*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c2s4__neon_mlal, 3, 8, 2, 4,
848*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
849*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c2s4__neon_mlal(benchmark::State & state,const char * net)850*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c2s4__neon_mlal(benchmark::State& state, const char* net) {
851*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c2s4__neon_mlal, 4, 8, 2, 4,
852*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
853*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c2s4__neon_mlal(benchmark::State & state,const char * net)854*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c2s4__neon_mlal(benchmark::State& state, const char* net) {
855*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal, 1, 16, 2, 4,
856*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
857*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c2s4__neon_mlal(benchmark::State & state,const char * net)858*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c2s4__neon_mlal(benchmark::State& state, const char* net) {
859*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c2s4__neon_mlal, 2, 16, 2, 4,
860*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
861*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c2s4__neon_mlal(benchmark::State & state,const char * net)862*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c2s4__neon_mlal(benchmark::State& state, const char* net) {
863*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c2s4__neon_mlal, 3, 16, 2, 4,
864*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
865*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c2s4__neon_mlal(benchmark::State & state,const char * net)866*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c2s4__neon_mlal(benchmark::State& state, const char* net) {
867*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c2s4__neon_mlal, 4, 16, 2, 4,
868*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
869*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mull_dup(benchmark::State & state,const char * net)870*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mull_dup(benchmark::State& state, const char* net) {
871*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup, 1, 8, 4, 1,
872*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
873*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mull_dup(benchmark::State & state,const char * net)874*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mull_dup(benchmark::State& state, const char* net) {
875*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_dup, 2, 8, 4, 1,
876*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
877*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mull_dup(benchmark::State & state,const char * net)878*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mull_dup(benchmark::State& state, const char* net) {
879*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_dup, 3, 8, 4, 1,
880*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
881*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mull_dup(benchmark::State & state,const char * net)882*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mull_dup(benchmark::State& state, const char* net) {
883*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_dup, 4, 8, 4, 1,
884*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
885*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mull_dup(benchmark::State & state,const char * net)886*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mull_dup(benchmark::State& state, const char* net) {
887*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup, 1, 16, 4, 1,
888*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
889*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mull_dup(benchmark::State & state,const char * net)890*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mull_dup(benchmark::State& state, const char* net) {
891*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_dup, 2, 16, 4, 1,
892*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
893*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mull_dup(benchmark::State & state,const char * net)894*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mull_dup(benchmark::State& state, const char* net) {
895*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_dup, 3, 16, 4, 1,
896*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
897*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mull_dup(benchmark::State & state,const char * net)898*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mull_dup(benchmark::State& state, const char* net) {
899*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_dup, 4, 16, 4, 1,
900*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
901*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mlal_dup(benchmark::State & state,const char * net)902*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mlal_dup(benchmark::State& state, const char* net) {
903*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup, 1, 8, 4, 1,
904*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
905*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mlal_dup(benchmark::State & state,const char * net)906*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mlal_dup(benchmark::State& state, const char* net) {
907*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_dup, 2, 8, 4, 1,
908*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
909*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mlal_dup(benchmark::State & state,const char * net)910*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mlal_dup(benchmark::State& state, const char* net) {
911*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_dup, 3, 8, 4, 1,
912*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
913*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mlal_dup(benchmark::State & state,const char * net)914*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mlal_dup(benchmark::State& state, const char* net) {
915*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_dup, 4, 8, 4, 1,
916*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
917*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mlal_dup(benchmark::State & state,const char * net)918*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mlal_dup(benchmark::State& state, const char* net) {
919*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup, 1, 16, 4, 1,
920*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
921*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mlal_dup(benchmark::State & state,const char * net)922*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mlal_dup(benchmark::State& state, const char* net) {
923*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_dup, 2, 16, 4, 1,
924*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
925*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mlal_dup(benchmark::State & state,const char * net)926*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mlal_dup(benchmark::State& state, const char* net) {
927*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_dup, 3, 16, 4, 1,
928*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
929*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mlal_dup(benchmark::State & state,const char * net)930*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mlal_dup(benchmark::State& state, const char* net) {
931*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_dup, 4, 16, 4, 1,
932*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
933*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mull_ld1r(benchmark::State & state,const char * net)934*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
935*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r, 1, 8, 4, 1,
936*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
937*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mull_ld1r(benchmark::State & state,const char * net)938*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
939*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld1r, 2, 8, 4, 1,
940*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
941*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mull_ld1r(benchmark::State & state,const char * net)942*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
943*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld1r, 3, 8, 4, 1,
944*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
945*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mull_ld1r(benchmark::State & state,const char * net)946*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
947*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld1r, 4, 8, 4, 1,
948*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
949*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mull_ld1r(benchmark::State & state,const char * net)950*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
951*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r, 1, 16, 4, 1,
952*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
953*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mull_ld1r(benchmark::State & state,const char * net)954*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
955*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld1r, 2, 16, 4, 1,
956*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
957*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mull_ld1r(benchmark::State & state,const char * net)958*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
959*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld1r, 3, 16, 4, 1,
960*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
961*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mull_ld1r(benchmark::State & state,const char * net)962*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mull_ld1r(benchmark::State& state, const char* net) {
963*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld1r, 4, 16, 4, 1,
964*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
965*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mlal_ld1r(benchmark::State & state,const char * net)966*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
967*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r, 1, 8, 4, 1,
968*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
969*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mlal_ld1r(benchmark::State & state,const char * net)970*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
971*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld1r, 2, 8, 4, 1,
972*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
973*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mlal_ld1r(benchmark::State & state,const char * net)974*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
975*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld1r, 3, 8, 4, 1,
976*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
977*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mlal_ld1r(benchmark::State & state,const char * net)978*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
979*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld1r, 4, 8, 4, 1,
980*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
981*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mlal_ld1r(benchmark::State & state,const char * net)982*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
983*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r, 1, 16, 4, 1,
984*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
985*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mlal_ld1r(benchmark::State & state,const char * net)986*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
987*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld1r, 2, 16, 4, 1,
988*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
989*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mlal_ld1r(benchmark::State & state,const char * net)990*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
991*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld1r, 3, 16, 4, 1,
992*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
993*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mlal_ld1r(benchmark::State & state,const char * net)994*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mlal_ld1r(benchmark::State& state, const char* net) {
995*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld1r, 4, 16, 4, 1,
996*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
997*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mull_ld2r(benchmark::State & state,const char * net)998*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
999*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r, 1, 8, 4, 1,
1000*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1001*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mull_ld2r(benchmark::State & state,const char * net)1002*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1003*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld2r, 2, 8, 4, 1,
1004*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1005*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mull_ld2r(benchmark::State & state,const char * net)1006*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1007*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld2r, 3, 8, 4, 1,
1008*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1009*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mull_ld2r(benchmark::State & state,const char * net)1010*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1011*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld2r, 4, 8, 4, 1,
1012*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1013*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mull_ld2r(benchmark::State & state,const char * net)1014*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1015*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r, 1, 16, 4, 1,
1016*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1017*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mull_ld2r(benchmark::State & state,const char * net)1018*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1019*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld2r, 2, 16, 4, 1,
1020*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1021*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mull_ld2r(benchmark::State & state,const char * net)1022*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1023*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld2r, 3, 16, 4, 1,
1024*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1025*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mull_ld2r(benchmark::State & state,const char * net)1026*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mull_ld2r(benchmark::State& state, const char* net) {
1027*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld2r, 4, 16, 4, 1,
1028*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1029*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1030*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1031*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r, 1, 8, 4, 1,
1032*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1033*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1034*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1035*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld2r, 2, 8, 4, 1,
1036*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1037*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1038*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1039*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld2r, 3, 8, 4, 1,
1040*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1041*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1042*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1043*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld2r, 4, 8, 4, 1,
1044*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1045*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1046*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1047*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r, 1, 16, 4, 1,
1048*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1049*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1050*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1051*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld2r, 2, 16, 4, 1,
1052*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1053*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1054*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1055*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld2r, 3, 16, 4, 1,
1056*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1057*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c4__neon_mlal_ld2r(benchmark::State & state,const char * net)1058*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c4__neon_mlal_ld2r(benchmark::State& state, const char* net) {
1059*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld2r, 4, 16, 4, 1,
1060*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1061*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__neon_mull(benchmark::State & state,const char * net)1062*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__neon_mull(benchmark::State& state, const char* net) {
1063*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mull, 1, 8, 8, 1,
1064*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1065*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__neon_mull(benchmark::State & state,const char * net)1066*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__neon_mull(benchmark::State& state, const char* net) {
1067*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__neon_mull, 2, 8, 8, 1,
1068*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1069*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c8__neon_mull(benchmark::State & state,const char * net)1070*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c8__neon_mull(benchmark::State& state, const char* net) {
1071*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c8__neon_mull, 3, 8, 8, 1,
1072*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1073*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c8__neon_mull(benchmark::State & state,const char * net)1074*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c8__neon_mull(benchmark::State& state, const char* net) {
1075*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c8__neon_mull, 4, 8, 8, 1,
1076*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1077*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c8__neon_mull(benchmark::State & state,const char * net)1078*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c8__neon_mull(benchmark::State& state, const char* net) {
1079*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mull, 1, 16, 8, 1,
1080*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1081*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c8__neon_mull(benchmark::State & state,const char * net)1082*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c8__neon_mull(benchmark::State& state, const char* net) {
1083*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c8__neon_mull, 2, 16, 8, 1,
1084*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1085*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c8__neon_mull(benchmark::State & state,const char * net)1086*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c8__neon_mull(benchmark::State& state, const char* net) {
1087*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c8__neon_mull, 3, 16, 8, 1,
1088*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1089*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c8__neon_mull(benchmark::State & state,const char * net)1090*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c8__neon_mull(benchmark::State& state, const char* net) {
1091*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c8__neon_mull, 4, 16, 8, 1,
1092*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1093*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c8__neon_mlal(benchmark::State & state,const char * net)1094*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c8__neon_mlal(benchmark::State& state, const char* net) {
1095*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c8__neon_mlal, 1, 8, 8, 1,
1096*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1097*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c8__neon_mlal(benchmark::State & state,const char * net)1098*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__neon_mlal(benchmark::State& state, const char* net) {
1099*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c8__neon_mlal, 2, 8, 8, 1,
1100*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1101*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c8__neon_mlal(benchmark::State & state,const char * net)1102*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c8__neon_mlal(benchmark::State& state, const char* net) {
1103*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c8__neon_mlal, 3, 8, 8, 1,
1104*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1105*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c8__neon_mlal(benchmark::State & state,const char * net)1106*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c8__neon_mlal(benchmark::State& state, const char* net) {
1107*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c8__neon_mlal, 4, 8, 8, 1,
1108*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1109*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c8__neon_mlal(benchmark::State & state,const char * net)1110*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c8__neon_mlal(benchmark::State& state, const char* net) {
1111*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c8__neon_mlal, 1, 16, 8, 1,
1112*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1113*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c8__neon_mlal(benchmark::State & state,const char * net)1114*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c8__neon_mlal(benchmark::State& state, const char* net) {
1115*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c8__neon_mlal, 2, 16, 8, 1,
1116*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1117*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c8__neon_mlal(benchmark::State & state,const char * net)1118*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c8__neon_mlal(benchmark::State& state, const char* net) {
1119*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c8__neon_mlal, 3, 16, 8, 1,
1120*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1121*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c8__neon_mlal(benchmark::State & state,const char * net)1122*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c8__neon_mlal(benchmark::State& state, const char* net) {
1123*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c8__neon_mlal, 4, 16, 8, 1,
1124*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1125*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x8c16__neon_mlal(benchmark::State & state,const char * net)1126*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x8c16__neon_mlal(benchmark::State& state, const char* net) {
1127*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x8c16__neon_mlal, 1, 8, 16, 1,
1128*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1129*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x8c16__neon_mlal(benchmark::State & state,const char * net)1130*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c16__neon_mlal(benchmark::State& state, const char* net) {
1131*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x8c16__neon_mlal, 2, 8, 16, 1,
1132*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1133*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c16__neon_mlal(benchmark::State & state,const char * net)1134*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c16__neon_mlal(benchmark::State& state, const char* net) {
1135*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x8c16__neon_mlal, 3, 8, 16, 1,
1136*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1137*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x8c16__neon_mlal(benchmark::State & state,const char * net)1138*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x8c16__neon_mlal(benchmark::State& state, const char* net) {
1139*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x8c16__neon_mlal, 4, 8, 16, 1,
1140*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1141*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x16c16__neon_mlal(benchmark::State & state,const char * net)1142*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x16c16__neon_mlal(benchmark::State& state, const char* net) {
1143*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_1x16c16__neon_mlal, 1, 16, 16, 1,
1144*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1145*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x16c16__neon_mlal(benchmark::State & state,const char * net)1146*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c16__neon_mlal(benchmark::State& state, const char* net) {
1147*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_2x16c16__neon_mlal, 2, 16, 16, 1,
1148*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1149*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c16__neon_mlal(benchmark::State & state,const char * net)1150*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c16__neon_mlal(benchmark::State& state, const char* net) {
1151*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_3x16c16__neon_mlal, 3, 16, 16, 1,
1152*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1153*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c16__neon_mlal(benchmark::State & state,const char * net)1154*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c16__neon_mlal(benchmark::State& state, const char* net) {
1155*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_rndnu_ukernel_4x16c16__neon_mlal, 4, 16, 16, 1,
1156*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_rndnu_neon_params, benchmark::utils::CheckNEON);
1157*4bdc9457SAndroid Build Coastguard Worker }
1158*4bdc9457SAndroid Build Coastguard Worker
1159*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mull_dup)
BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mull_dup)1160*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mull_dup)
1161*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mull_dup)
1162*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mull_dup)
1163*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mull_dup)
1164*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mull_dup)
1165*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mull_dup)
1166*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mull_dup)
1167*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mlal_dup)
1168*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mlal_dup)
1169*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mlal_dup)
1170*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mlal_dup)
1171*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mlal_dup)
1172*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mlal_dup)
1173*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mlal_dup)
1174*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mlal_dup)
1175*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mull_ld1r)
1176*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mull_ld1r)
1177*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mull_ld1r)
1178*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mull_ld1r)
1179*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mull_ld1r)
1180*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mull_ld1r)
1181*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mull_ld1r)
1182*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mull_ld1r)
1183*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mlal_ld1r)
1184*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mlal_ld1r)
1185*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mlal_ld1r)
1186*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mlal_ld1r)
1187*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mlal_ld1r)
1188*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mlal_ld1r)
1189*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mlal_ld1r)
1190*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mlal_ld1r)
1191*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mull_ld2r)
1192*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mull_ld2r)
1193*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mull_ld2r)
1194*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mull_ld2r)
1195*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mull_ld2r)
1196*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mull_ld2r)
1197*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mull_ld2r)
1198*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mull_ld2r)
1199*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c4__neon_mlal_ld2r)
1200*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c4__neon_mlal_ld2r)
1201*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c4__neon_mlal_ld2r)
1202*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c4__neon_mlal_ld2r)
1203*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c4__neon_mlal_ld2r)
1204*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c4__neon_mlal_ld2r)
1205*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c4__neon_mlal_ld2r)
1206*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c4__neon_mlal_ld2r)
1207*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mull_dup)
1208*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mull_dup)
1209*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mull_dup)
1210*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mull_dup)
1211*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mull_dup)
1212*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mull_dup)
1213*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mull_dup)
1214*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mull_dup)
1215*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mlal_dup)
1216*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mlal_dup)
1217*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mlal_dup)
1218*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mlal_dup)
1219*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mlal_dup)
1220*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mlal_dup)
1221*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mlal_dup)
1222*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mlal_dup)
1223*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mull_ld1r)
1224*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mull_ld1r)
1225*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mull_ld1r)
1226*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mull_ld1r)
1227*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mull_ld1r)
1228*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mull_ld1r)
1229*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mull_ld1r)
1230*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mull_ld1r)
1231*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mlal_ld1r)
1232*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mlal_ld1r)
1233*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mlal_ld1r)
1234*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mlal_ld1r)
1235*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mlal_ld1r)
1236*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mlal_ld1r)
1237*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mlal_ld1r)
1238*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mlal_ld1r)
1239*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mull_ld2r)
1240*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mull_ld2r)
1241*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mull_ld2r)
1242*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mull_ld2r)
1243*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mull_ld2r)
1244*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mull_ld2r)
1245*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mull_ld2r)
1246*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mull_ld2r)
1247*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mlal_ld2r)
1248*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mlal_ld2r)
1249*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mlal_ld2r)
1250*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mlal_ld2r)
1251*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mlal_ld2r)
1252*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mlal_ld2r)
1253*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mlal_ld2r)
1254*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mlal_ld2r)
1255*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mull_ld4r)
1256*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mull_ld4r)
1257*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mull_ld4r)
1258*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mull_ld4r)
1259*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mull_ld4r)
1260*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mull_ld4r)
1261*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mull_ld4r)
1262*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mull_ld4r)
1263*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2__neon_mlal_ld4r)
1264*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2__neon_mlal_ld4r)
1265*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2__neon_mlal_ld4r)
1266*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2__neon_mlal_ld4r)
1267*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2__neon_mlal_ld4r)
1268*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2__neon_mlal_ld4r)
1269*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2__neon_mlal_ld4r)
1270*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2__neon_mlal_ld4r)
1271*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2s4__neon_mull)
1272*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2s4__neon_mull)
1273*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2s4__neon_mull)
1274*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2s4__neon_mull)
1275*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2s4__neon_mull)
1276*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2s4__neon_mull)
1277*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2s4__neon_mull)
1278*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2s4__neon_mull)
1279*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c2s4__neon_mlal)
1280*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c2s4__neon_mlal)
1281*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c2s4__neon_mlal)
1282*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c2s4__neon_mlal)
1283*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c2s4__neon_mlal)
1284*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c2s4__neon_mlal)
1285*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c2s4__neon_mlal)
1286*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c2s4__neon_mlal)
1287*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8__neon_mlal_lane)
1288*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8__neon_mlal_lane)
1289*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8__neon_mlal_lane)
1290*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__neon_mlal_lane)
1291*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x8__neon_mlal_lane)
1292*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16__neon_mlal_lane)
1293*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16__neon_mlal_lane)
1294*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16__neon_mlal_lane)
1295*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__neon_mlal_lane)
1296*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x16__neon_mlal_lane)
1297*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8__neon_mlal_lane_prfm)
1298*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8__neon_mlal_lane_prfm)
1299*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8__neon_mlal_lane_prfm)
1300*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8__neon_mlal_lane_prfm)
1301*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x8__neon_mlal_lane_prfm)
1302*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16__neon_mlal_lane_prfm)
1303*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16__neon_mlal_lane_prfm)
1304*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16__neon_mlal_lane_prfm)
1305*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16__neon_mlal_lane_prfm)
1306*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_6x16__neon_mlal_lane_prfm)
1307*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__neon_mull)
1308*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__neon_mull)
1309*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c8__neon_mull)
1310*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c8__neon_mull)
1311*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c8__neon_mull)
1312*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c8__neon_mull)
1313*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c8__neon_mull)
1314*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c8__neon_mull)
1315*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c8__neon_mlal)
1316*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c8__neon_mlal)
1317*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c8__neon_mlal)
1318*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c8__neon_mlal)
1319*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c8__neon_mlal)
1320*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c8__neon_mlal)
1321*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c8__neon_mlal)
1322*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c8__neon_mlal)
1323*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x8c16__neon_mlal)
1324*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x8c16__neon_mlal)
1325*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x8c16__neon_mlal)
1326*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x8c16__neon_mlal)
1327*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x16c16__neon_mlal)
1328*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x16c16__neon_mlal)
1329*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_3x16c16__neon_mlal)
1330*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_4x16c16__neon_mlal)
1331*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1332*4bdc9457SAndroid Build Coastguard Worker
1333*4bdc9457SAndroid Build Coastguard Worker
1334*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM
1335*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x1c4__armsimd32(benchmark::State& state, const char* net) {
1336*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32, 1, 1, 4, 1,
1337*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_armsimd32_params, benchmark::utils::CheckARMV6);
1338*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x1c4__armsimd32(benchmark::State & state,const char * net)1339*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x1c4__armsimd32(benchmark::State& state, const char* net) {
1340*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32, 2, 1, 4, 1,
1341*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_armsimd32_params, benchmark::utils::CheckARMV6);
1342*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_1x2c4__armsimd32(benchmark::State & state,const char * net)1343*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_1x2c4__armsimd32(benchmark::State& state, const char* net) {
1344*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32, 1, 2, 4, 1,
1345*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_armsimd32_params, benchmark::utils::CheckARMV6);
1346*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_2x2c4__armsimd32(benchmark::State & state,const char * net)1347*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x2c4__armsimd32(benchmark::State& state, const char* net) {
1348*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32, 2, 2, 4, 1,
1349*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_armsimd32_params, benchmark::utils::CheckARMV6);
1350*4bdc9457SAndroid Build Coastguard Worker }
1351*4bdc9457SAndroid Build Coastguard Worker
1352*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x1c4__armsimd32)
BENCHMARK_GEMM(qs8_gemm_2x1c4__armsimd32)1353*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x1c4__armsimd32)
1354*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_1x2c4__armsimd32)
1355*4bdc9457SAndroid Build Coastguard Worker BENCHMARK_GEMM(qs8_gemm_2x2c4__armsimd32)
1356*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM
1357*4bdc9457SAndroid Build Coastguard Worker
1358*4bdc9457SAndroid Build Coastguard Worker
1359*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
1360*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x16c8__avx512skx(benchmark::State& state, const char* net) {
1361*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x16c8__avx512skx, 2, 16, 8, 1,
1362*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx512_params, benchmark::utils::CheckAVX512SKX);
1363*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x16c8__avx512skx(benchmark::State & state,const char * net)1364*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x16c8__avx512skx(benchmark::State& state, const char* net) {
1365*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x16c8__avx512skx, 3, 16, 8, 1,
1366*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx512_params, benchmark::utils::CheckAVX512SKX);
1367*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x16c8__avx512skx(benchmark::State & state,const char * net)1368*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x16c8__avx512skx(benchmark::State& state, const char* net) {
1369*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x16c8__avx512skx, 4, 16, 8, 1,
1370*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx512_params, benchmark::utils::CheckAVX512SKX);
1371*4bdc9457SAndroid Build Coastguard Worker }
1372*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x8c8__avx2(benchmark::State & state,const char * net)1373*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x8c8__avx2(benchmark::State& state, const char* net) {
1374*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x8c8__avx2, 2, 8, 8, 1,
1375*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx2_params, benchmark::utils::CheckAVX2);
1376*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x8c8__avx2(benchmark::State & state,const char * net)1377*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x8c8__avx2(benchmark::State& state, const char* net) {
1378*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x8c8__avx2, 3, 8, 8, 1,
1379*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx2_params, benchmark::utils::CheckAVX2);
1380*4bdc9457SAndroid Build Coastguard Worker }
1381*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x8c8__avx2(benchmark::State & state,const char * net)1382*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x8c8__avx2(benchmark::State& state, const char* net) {
1383*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x8c8__avx2, 2, 8, 8, 1,
1384*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx2_params, benchmark::utils::CheckAVX2, true);
1385*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x8c8__avx2(benchmark::State & state,const char * net)1386*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x8c8__avx2(benchmark::State& state, const char* net) {
1387*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x8c8__avx2, 3, 8, 8, 1,
1388*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_avx2_params, benchmark::utils::CheckAVX2, true);
1389*4bdc9457SAndroid Build Coastguard Worker }
1390*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2__xop_ld64(benchmark::State & state,const char * net)1391*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2__xop_ld64(benchmark::State& state, const char* net) {
1392*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld64, 2, 4, 2, 1,
1393*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1394*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2__xop_ld64(benchmark::State & state,const char * net)1395*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2__xop_ld64(benchmark::State& state, const char* net) {
1396*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld64, 3, 4, 2, 1,
1397*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1398*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2__xop_ld64(benchmark::State & state,const char * net)1399*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2__xop_ld64(benchmark::State& state, const char* net) {
1400*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld64, 4, 4, 2, 1,
1401*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1402*4bdc9457SAndroid Build Coastguard Worker }
1403*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2__xop_ld128(benchmark::State & state,const char * net)1404*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2__xop_ld128(benchmark::State& state, const char* net) {
1405*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld128, 2, 4, 2, 1,
1406*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1407*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2__xop_ld128(benchmark::State & state,const char * net)1408*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2__xop_ld128(benchmark::State& state, const char* net) {
1409*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld128, 3, 4, 2, 1,
1410*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1411*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2__xop_ld128(benchmark::State & state,const char * net)1412*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2__xop_ld128(benchmark::State& state, const char* net) {
1413*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld128, 4, 4, 2, 1,
1414*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1415*4bdc9457SAndroid Build Coastguard Worker }
1416*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c2__xop(benchmark::State & state,const char * net)1417*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c2__xop(benchmark::State& state, const char* net) {
1418*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c2__xop, 2, 4, 2, 1,
1419*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1420*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c2__xop(benchmark::State & state,const char * net)1421*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c2__xop(benchmark::State& state, const char* net) {
1422*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c2__xop, 3, 4, 2, 1,
1423*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1424*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_4x4c2__xop(benchmark::State & state,const char * net)1425*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_4x4c2__xop(benchmark::State& state, const char* net) {
1426*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_4x4c2__xop, 4, 4, 2, 1,
1427*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1428*4bdc9457SAndroid Build Coastguard Worker }
1429*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2s4__xop_ld64(benchmark::State & state,const char * net)1430*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2s4__xop_ld64(benchmark::State& state, const char* net) {
1431*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__xop_ld64, 2, 4, 2, 4,
1432*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1433*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2s4__xop_ld64(benchmark::State & state,const char * net)1434*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2s4__xop_ld64(benchmark::State& state, const char* net) {
1435*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__xop_ld64, 3, 4, 2, 4,
1436*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1437*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2s4__xop_ld64(benchmark::State & state,const char * net)1438*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2s4__xop_ld64(benchmark::State& state, const char* net) {
1439*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__xop_ld64, 4, 4, 2, 4,
1440*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1441*4bdc9457SAndroid Build Coastguard Worker }
1442*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2s4__xop_ld128(benchmark::State & state,const char * net)1443*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2s4__xop_ld128(benchmark::State& state, const char* net) {
1444*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__xop_ld128, 2, 4, 2, 4,
1445*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1446*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2s4__xop_ld128(benchmark::State & state,const char * net)1447*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2s4__xop_ld128(benchmark::State& state, const char* net) {
1448*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__xop_ld128, 3, 4, 2, 4,
1449*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1450*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2s4__xop_ld128(benchmark::State & state,const char * net)1451*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2s4__xop_ld128(benchmark::State& state, const char* net) {
1452*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__xop_ld128, 4, 4, 2, 4,
1453*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1454*4bdc9457SAndroid Build Coastguard Worker }
1455*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c2s4__xop(benchmark::State & state,const char * net)1456*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c2s4__xop(benchmark::State& state, const char* net) {
1457*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c2s4__xop, 2, 4, 2, 4,
1458*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1459*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c2s4__xop(benchmark::State & state,const char * net)1460*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c2s4__xop(benchmark::State& state, const char* net) {
1461*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c2s4__xop, 3, 4, 2, 4,
1462*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1463*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_4x4c2s4__xop(benchmark::State & state,const char * net)1464*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_4x4c2s4__xop(benchmark::State& state, const char* net) {
1465*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_4x4c2s4__xop, 4, 4, 2, 4,
1466*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1467*4bdc9457SAndroid Build Coastguard Worker }
1468*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c8__xop_ld64(benchmark::State & state,const char * net)1469*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c8__xop_ld64(benchmark::State& state, const char* net) {
1470*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld64, 2, 4, 8, 1,
1471*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1472*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c8__xop_ld64(benchmark::State & state,const char * net)1473*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c8__xop_ld64(benchmark::State& state, const char* net) {
1474*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld64, 3, 4, 8, 1,
1475*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1476*4bdc9457SAndroid Build Coastguard Worker }
1477*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c8__xop_ld128(benchmark::State & state,const char * net)1478*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c8__xop_ld128(benchmark::State& state, const char* net) {
1479*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld128, 2, 4, 8, 1,
1480*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1481*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c8__xop_ld128(benchmark::State & state,const char * net)1482*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c8__xop_ld128(benchmark::State& state, const char* net) {
1483*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld128, 3, 4, 8, 1,
1484*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP);
1485*4bdc9457SAndroid Build Coastguard Worker }
1486*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c8__xop(benchmark::State & state,const char * net)1487*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c8__xop(benchmark::State& state, const char* net) {
1488*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c8__xop, 2, 4, 8, 1,
1489*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1490*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c8__xop(benchmark::State & state,const char * net)1491*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c8__xop(benchmark::State& state, const char* net) {
1492*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c8__xop, 3, 4, 8, 1,
1493*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckXOP, true);
1494*4bdc9457SAndroid Build Coastguard Worker }
1495*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2__avx_ld64(benchmark::State & state,const char * net)1496*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2__avx_ld64(benchmark::State& state, const char* net) {
1497*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld64, 2, 4, 2, 1,
1498*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1499*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2__avx_ld64(benchmark::State & state,const char * net)1500*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2__avx_ld64(benchmark::State& state, const char* net) {
1501*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld64, 3, 4, 2, 1,
1502*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1503*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2__avx_ld64(benchmark::State & state,const char * net)1504*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2__avx_ld64(benchmark::State& state, const char* net) {
1505*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld64, 4, 4, 2, 1,
1506*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1507*4bdc9457SAndroid Build Coastguard Worker }
1508*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2__avx_ld128(benchmark::State & state,const char * net)1509*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2__avx_ld128(benchmark::State& state, const char* net) {
1510*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld128, 2, 4, 2, 1,
1511*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1512*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2__avx_ld128(benchmark::State & state,const char * net)1513*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2__avx_ld128(benchmark::State& state, const char* net) {
1514*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld128, 3, 4, 2, 1,
1515*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1516*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2__avx_ld128(benchmark::State & state,const char * net)1517*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2__avx_ld128(benchmark::State& state, const char* net) {
1518*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld128, 4, 4, 2, 1,
1519*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1520*4bdc9457SAndroid Build Coastguard Worker }
1521*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c2__avx(benchmark::State & state,const char * net)1522*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c2__avx(benchmark::State& state, const char* net) {
1523*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c2__avx, 2, 4, 2, 1,
1524*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1525*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c2__avx(benchmark::State & state,const char * net)1526*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c2__avx(benchmark::State& state, const char* net) {
1527*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c2__avx, 3, 4, 2, 1,
1528*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1529*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_4x4c2__avx(benchmark::State & state,const char * net)1530*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_4x4c2__avx(benchmark::State& state, const char* net) {
1531*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_4x4c2__avx, 4, 4, 2, 1,
1532*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1533*4bdc9457SAndroid Build Coastguard Worker }
1534*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2s4__avx_ld64(benchmark::State & state,const char * net)1535*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2s4__avx_ld64(benchmark::State& state, const char* net) {
1536*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld64, 2, 4, 2, 4,
1537*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1538*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2s4__avx_ld64(benchmark::State & state,const char * net)1539*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2s4__avx_ld64(benchmark::State& state, const char* net) {
1540*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld64, 3, 4, 2, 4,
1541*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1542*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2s4__avx_ld64(benchmark::State & state,const char * net)1543*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2s4__avx_ld64(benchmark::State& state, const char* net) {
1544*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld64, 4, 4, 2, 4,
1545*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1546*4bdc9457SAndroid Build Coastguard Worker }
1547*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2s4__avx_ld128(benchmark::State & state,const char * net)1548*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2s4__avx_ld128(benchmark::State& state, const char* net) {
1549*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld128, 2, 4, 2, 4,
1550*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1551*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2s4__avx_ld128(benchmark::State & state,const char * net)1552*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c2s4__avx_ld128(benchmark::State& state, const char* net) {
1553*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld128, 3, 4, 2, 4,
1554*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1555*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_4x4c2s4__avx_ld128(benchmark::State & state,const char * net)1556*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_4x4c2s4__avx_ld128(benchmark::State& state, const char* net) {
1557*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld128, 4, 4, 2, 4,
1558*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1559*4bdc9457SAndroid Build Coastguard Worker }
1560*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c2s4__avx(benchmark::State & state,const char * net)1561*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c2s4__avx(benchmark::State& state, const char* net) {
1562*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c2s4__avx, 2, 4, 2, 4,
1563*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1564*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c2s4__avx(benchmark::State & state,const char * net)1565*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c2s4__avx(benchmark::State& state, const char* net) {
1566*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c2s4__avx, 3, 4, 2, 4,
1567*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1568*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_4x4c2s4__avx(benchmark::State & state,const char * net)1569*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_4x4c2s4__avx(benchmark::State& state, const char* net) {
1570*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_4x4c2s4__avx, 4, 4, 2, 4,
1571*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1572*4bdc9457SAndroid Build Coastguard Worker }
1573*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c8__avx_ld64(benchmark::State & state,const char * net)1574*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c8__avx_ld64(benchmark::State& state, const char* net) {
1575*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld64, 2, 4, 8, 1,
1576*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1577*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c8__avx_ld64(benchmark::State & state,const char * net)1578*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c8__avx_ld64(benchmark::State& state, const char* net) {
1579*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld64, 3, 4, 8, 1,
1580*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1581*4bdc9457SAndroid Build Coastguard Worker }
1582*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c8__avx_ld128(benchmark::State & state,const char * net)1583*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c8__avx_ld128(benchmark::State& state, const char* net) {
1584*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld128, 2, 4, 8, 1,
1585*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1586*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c8__avx_ld128(benchmark::State & state,const char * net)1587*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_3x4c8__avx_ld128(benchmark::State& state, const char* net) {
1588*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld128, 3, 4, 8, 1,
1589*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX);
1590*4bdc9457SAndroid Build Coastguard Worker }
1591*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_xw_2x4c8__avx(benchmark::State & state,const char * net)1592*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_2x4c8__avx(benchmark::State& state, const char* net) {
1593*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_2x4c8__avx, 2, 4, 8, 1,
1594*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1595*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_xw_3x4c8__avx(benchmark::State & state,const char * net)1596*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_xw_3x4c8__avx(benchmark::State& state, const char* net) {
1597*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_xw_minmax_fp32_ukernel_3x4c8__avx, 3, 4, 8, 1,
1598*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckAVX, true);
1599*4bdc9457SAndroid Build Coastguard Worker }
1600*4bdc9457SAndroid Build Coastguard Worker
qs8_gemm_2x4c2__sse41_ld64(benchmark::State & state,const char * net)1601*4bdc9457SAndroid Build Coastguard Worker static void qs8_gemm_2x4c2__sse41_ld64(benchmark::State& state, const char* net) {
1602*4bdc9457SAndroid Build Coastguard Worker GEMMBenchmark(state, xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld64, 2, 4, 2, 1,
1603*4bdc9457SAndroid Build Coastguard Worker xnn_init_qs8_conv_minmax_fp32_sse4_params, benchmark::utils::CheckSSE41);
1604*4bdc9457SAndroid Build Coastguard Worker }
qs8_gemm_3x4c2__sse41_ld64(benchmark::State & state,const char * net)1605