blob: df4463367a2778bd25b45936564c432de430d65f [file] [log] [blame]
Frank Barchard2a1049c2020-06-03 02:31:27 -07001// Copyright 2019 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
5//
6// Auto-generated file. Do not edit!
7// Specification: test/f16-vmulcaddc-minmax.yaml
8// Generator: tools/generate-vmulcaddc-test.py
9
10
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
16#include <xnnpack/vmulcaddc.h>
17#include "vmulcaddc-microkernel-tester.h"
18
19
20#if XNN_ARCH_ARM64
Marat Dukhan9531e9f2020-07-24 15:25:02 -070021 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, channels_eq_8) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070022 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
23 VMulCAddCMicrokernelTester()
24 .channel_tile(8)
25 .channels(8)
26 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070027 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070028 }
29
Marat Dukhan9531e9f2020-07-24 15:25:02 -070030 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, channels_div_8) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070031 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
32 for (size_t channels = 16; channels < 80; channels += 8) {
33 VMulCAddCMicrokernelTester()
34 .channel_tile(8)
35 .channels(channels)
36 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070037 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070038 }
39 }
40
Marat Dukhan9531e9f2020-07-24 15:25:02 -070041 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, channels_lt_8) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070042 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
43 for (size_t channels = 1; channels < 8; channels++) {
44 VMulCAddCMicrokernelTester()
45 .channel_tile(8)
46 .channels(channels)
47 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070048 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070049 }
50 }
51
Marat Dukhan9531e9f2020-07-24 15:25:02 -070052 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, channels_gt_8) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070053 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
54 for (size_t channels = 9; channels < 16; channels++) {
55 VMulCAddCMicrokernelTester()
56 .channel_tile(8)
57 .channels(channels)
58 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070059 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070060 }
61 }
62
Marat Dukhan9531e9f2020-07-24 15:25:02 -070063 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, rows_lt_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070064 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
65 for (size_t rows = 1; rows < 2; rows++) {
66 for (size_t channels = 1; channels <= 40; channels += 7) {
67 VMulCAddCMicrokernelTester()
68 .channel_tile(8)
69 .channels(channels)
70 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070071 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070072 }
73 }
74 }
75
Marat Dukhan9531e9f2020-07-24 15:25:02 -070076 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, rows_div_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070077 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
78 for (size_t rows = 4; rows <= 8; rows += 2) {
79 for (size_t channels = 1; channels <= 40; channels += 7) {
80 VMulCAddCMicrokernelTester()
81 .channel_tile(8)
82 .channels(channels)
83 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070084 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070085 }
86 }
87 }
88
Marat Dukhan9531e9f2020-07-24 15:25:02 -070089 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, rows_gt_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -070090 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
91 for (size_t rows = 3; rows < 4; rows++) {
92 for (size_t channels = 1; channels <= 40; channels += 7) {
93 VMulCAddCMicrokernelTester()
94 .channel_tile(8)
95 .channels(channels)
96 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -070097 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -070098 }
99 }
100 }
101
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700102 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, input_stride) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700103 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
104 for (size_t rows = 1; rows <= 6; rows += 1) {
105 for (size_t channels = 1; channels <= 40; channels += 7) {
106 VMulCAddCMicrokernelTester()
107 .channel_tile(8)
108 .channels(channels)
109 .rows(rows)
110 .input_stride(43)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700111 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700112 }
113 }
114 }
115
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700116 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, output_stride) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700117 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
118 for (size_t rows = 1; rows <= 6; rows += 1) {
119 for (size_t channels = 1; channels <= 40; channels += 7) {
120 VMulCAddCMicrokernelTester()
121 .channel_tile(8)
122 .channels(channels)
123 .rows(rows)
124 .output_stride(43)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700125 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700126 }
127 }
128 }
129
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700130 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, inplace) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700131 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
132 for (size_t rows = 1; rows <= 6; rows += 1) {
133 for (size_t channels = 1; channels <= 40; channels += 7) {
134 VMulCAddCMicrokernelTester()
135 .channel_tile(8)
136 .channels(channels)
137 .rows(rows)
138 .inplace(true)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700139 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700140 }
141 }
142 }
143
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700144 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, qmin) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700145 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
146 for (size_t rows = 1; rows <= 6; rows += 1) {
147 for (size_t channels = 1; channels <= 40; channels += 7) {
148 VMulCAddCMicrokernelTester()
149 .channel_tile(8)
150 .channels(channels)
151 .rows(rows)
152 .qmin(128)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700153 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700154 }
155 }
156 }
157
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700158 TEST(F16_VMULCADDC_MINMAX_C8__NEONFP16ARITH_2X, qmax) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700159 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
160 for (size_t rows = 1; rows <= 6; rows += 1) {
161 for (size_t channels = 1; channels <= 40; channels += 7) {
162 VMulCAddCMicrokernelTester()
163 .channel_tile(8)
164 .channels(channels)
165 .rows(rows)
166 .qmax(128)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700167 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c8__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700168 }
169 }
170 }
171#endif // XNN_ARCH_ARM64
172
173
174#if XNN_ARCH_ARM64
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700175 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, channels_eq_16) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700176 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
177 VMulCAddCMicrokernelTester()
178 .channel_tile(16)
179 .channels(16)
180 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700181 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700182 }
183
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700184 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, channels_div_16) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700185 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
186 for (size_t channels = 32; channels < 160; channels += 16) {
187 VMulCAddCMicrokernelTester()
188 .channel_tile(16)
189 .channels(channels)
190 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700191 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700192 }
193 }
194
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700195 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, channels_lt_16) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700196 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
197 for (size_t channels = 1; channels < 16; channels++) {
198 VMulCAddCMicrokernelTester()
199 .channel_tile(16)
200 .channels(channels)
201 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700202 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700203 }
204 }
205
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700206 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, channels_gt_16) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700207 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
208 for (size_t channels = 17; channels < 32; channels++) {
209 VMulCAddCMicrokernelTester()
210 .channel_tile(16)
211 .channels(channels)
212 .rows(2)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700213 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700214 }
215 }
216
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700217 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, rows_lt_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700218 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
219 for (size_t rows = 1; rows < 2; rows++) {
220 for (size_t channels = 1; channels <= 80; channels += 15) {
221 VMulCAddCMicrokernelTester()
222 .channel_tile(16)
223 .channels(channels)
224 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700225 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700226 }
227 }
228 }
229
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700230 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, rows_div_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700231 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
232 for (size_t rows = 4; rows <= 8; rows += 2) {
233 for (size_t channels = 1; channels <= 80; channels += 15) {
234 VMulCAddCMicrokernelTester()
235 .channel_tile(16)
236 .channels(channels)
237 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700238 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700239 }
240 }
241 }
242
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700243 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, rows_gt_2) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700244 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
245 for (size_t rows = 3; rows < 4; rows++) {
246 for (size_t channels = 1; channels <= 80; channels += 15) {
247 VMulCAddCMicrokernelTester()
248 .channel_tile(16)
249 .channels(channels)
250 .rows(rows)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700251 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700252 }
253 }
254 }
255
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700256 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, input_stride) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700257 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
258 for (size_t rows = 1; rows <= 6; rows += 1) {
259 for (size_t channels = 1; channels <= 80; channels += 15) {
260 VMulCAddCMicrokernelTester()
261 .channel_tile(16)
262 .channels(channels)
263 .rows(rows)
264 .input_stride(83)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700265 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700266 }
267 }
268 }
269
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700270 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, output_stride) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700271 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
272 for (size_t rows = 1; rows <= 6; rows += 1) {
273 for (size_t channels = 1; channels <= 80; channels += 15) {
274 VMulCAddCMicrokernelTester()
275 .channel_tile(16)
276 .channels(channels)
277 .rows(rows)
278 .output_stride(83)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700279 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700280 }
281 }
282 }
283
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700284 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, inplace) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700285 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
286 for (size_t rows = 1; rows <= 6; rows += 1) {
287 for (size_t channels = 1; channels <= 80; channels += 15) {
288 VMulCAddCMicrokernelTester()
289 .channel_tile(16)
290 .channels(channels)
291 .rows(rows)
292 .inplace(true)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700293 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700294 }
295 }
296 }
297
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700298 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, qmin) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700299 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
300 for (size_t rows = 1; rows <= 6; rows += 1) {
301 for (size_t channels = 1; channels <= 80; channels += 15) {
302 VMulCAddCMicrokernelTester()
303 .channel_tile(16)
304 .channels(channels)
305 .rows(rows)
306 .qmin(128)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700307 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700308 }
309 }
310 }
311
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700312 TEST(F16_VMULCADDC_MINMAX_C16__NEONFP16ARITH_2X, qmax) {
Frank Barchard2a1049c2020-06-03 02:31:27 -0700313 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
314 for (size_t rows = 1; rows <= 6; rows += 1) {
315 for (size_t channels = 1; channels <= 80; channels += 15) {
316 VMulCAddCMicrokernelTester()
317 .channel_tile(16)
318 .channels(channels)
319 .rows(rows)
320 .qmax(128)
Marat Dukhan9531e9f2020-07-24 15:25:02 -0700321 .Test(xnn_f16_vmulcaddc_minmax_ukernel_c16__neonfp16arith_2x);
Frank Barchard2a1049c2020-06-03 02:31:27 -0700322 }
323 }
324 }
325#endif // XNN_ARCH_ARM64