blob: e4f79eb1f4270d0cf65add07e8234b483b7aa0d5 [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright (c) Facebook, Inc. and its affiliates.
2// All rights reserved.
3//
4// Copyright 2019 Google LLC
5//
6// This source code is licensed under the BSD-style license found in the
7// LICENSE file in the root directory of this source tree.
8
9#include <gtest/gtest.h>
10
11#include "add-operator-tester.h"
12
13
Marat Dukhanefc47b82019-11-18 09:25:38 -080014TEST(ADD_NC_Q8, unit_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070015 for (size_t channels = 1; channels < 100; channels += 15) {
16 AddOperatorTester()
17 .batch_size(1)
18 .channels(channels)
19 .iterations(3)
20 .TestQ8();
21 }
22}
23
Marat Dukhanefc47b82019-11-18 09:25:38 -080024TEST(ADD_NC_Q8, unit_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070025 for (size_t channels = 1; channels < 100; channels += 15) {
26 AddOperatorTester()
27 .batch_size(1)
28 .channels(channels)
29 .qmin(128)
30 .iterations(3)
31 .TestQ8();
32 }
33}
34
Marat Dukhanefc47b82019-11-18 09:25:38 -080035TEST(ADD_NC_Q8, unit_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070036 for (size_t channels = 1; channels < 100; channels += 15) {
37 AddOperatorTester()
38 .batch_size(1)
39 .channels(channels)
40 .qmax(128)
41 .iterations(3)
42 .TestQ8();
43 }
44}
45
Marat Dukhanefc47b82019-11-18 09:25:38 -080046TEST(ADD_NC_Q8, unit_batch_with_a_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070047 for (size_t channels = 1; channels < 100; channels += 15) {
48 for (float a_scale = 1.0e-2f; a_scale < 1.0e+2f; a_scale *= 10.0f) {
49 AddOperatorTester()
50 .batch_size(1)
51 .channels(channels)
52 .a_scale(a_scale)
53 .iterations(1)
54 .TestQ8();
55 }
56 }
57}
58
Marat Dukhanefc47b82019-11-18 09:25:38 -080059TEST(ADD_NC_Q8, unit_batch_with_b_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070060 for (size_t channels = 1; channels < 100; channels += 15) {
61 for (float b_scale = 1.0e-2f; b_scale < 1.0e+2f; b_scale *= 10.0f) {
62 AddOperatorTester()
63 .batch_size(1)
64 .channels(channels)
65 .b_scale(b_scale)
66 .iterations(1)
67 .TestQ8();
68 }
69 }
70}
71
Marat Dukhanefc47b82019-11-18 09:25:38 -080072TEST(ADD_NC_Q8, unit_batch_with_y_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070073 for (size_t channels = 1; channels < 100; channels += 15) {
74 for (float y_scale = 1.0e-2f; y_scale < 1.0e+2f; y_scale *= 10.0f) {
75 AddOperatorTester()
76 .batch_size(1)
77 .channels(channels)
78 .y_scale(y_scale)
79 .iterations(1)
80 .TestQ8();
81 }
82 }
83}
84
Marat Dukhanefc47b82019-11-18 09:25:38 -080085TEST(ADD_NC_Q8, unit_batch_with_a_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070086 for (size_t channels = 1; channels < 100; channels += 15) {
87 for (int32_t a_zero_point = 0; a_zero_point <= 255; a_zero_point += 51) {
88 AddOperatorTester()
89 .batch_size(1)
90 .channels(channels)
91 .a_zero_point(uint8_t(a_zero_point))
92 .iterations(1)
93 .TestQ8();
94 }
95 }
96}
97
Marat Dukhanefc47b82019-11-18 09:25:38 -080098TEST(ADD_NC_Q8, unit_batch_with_b_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070099 for (size_t channels = 1; channels < 100; channels += 15) {
100 for (int32_t b_zero_point = 0; b_zero_point <= 255; b_zero_point += 51) {
101 AddOperatorTester()
102 .batch_size(1)
103 .channels(channels)
104 .b_zero_point(uint8_t(b_zero_point))
105 .iterations(1)
106 .TestQ8();
107 }
108 }
109}
110
Marat Dukhanefc47b82019-11-18 09:25:38 -0800111TEST(ADD_NC_Q8, unit_batch_with_y_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700112 for (size_t channels = 1; channels < 100; channels += 15) {
113 for (int32_t y_zero_point = 0; y_zero_point <= 255; y_zero_point += 51) {
114 AddOperatorTester()
115 .batch_size(1)
116 .channels(channels)
117 .y_zero_point(uint8_t(y_zero_point))
118 .iterations(1)
119 .TestQ8();
120 }
121 }
122}
123
Marat Dukhanefc47b82019-11-18 09:25:38 -0800124TEST(ADD_NC_Q8, small_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700125 for (size_t channels = 1; channels < 100; channels += 15) {
126 AddOperatorTester()
127 .batch_size(3)
128 .channels(channels)
129 .iterations(3)
130 .TestQ8();
131 }
132}
133
Marat Dukhanefc47b82019-11-18 09:25:38 -0800134TEST(ADD_NC_Q8, small_batch_with_a_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700135 for (size_t channels = 1; channels < 100; channels += 15) {
136 AddOperatorTester()
137 .batch_size(3)
138 .channels(channels)
139 .a_stride(129)
140 .iterations(3)
141 .TestQ8();
142 }
143}
144
Marat Dukhanefc47b82019-11-18 09:25:38 -0800145TEST(ADD_NC_Q8, small_batch_with_b_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700146 for (size_t channels = 1; channels < 100; channels += 15) {
147 AddOperatorTester()
148 .batch_size(3)
149 .channels(channels)
150 .b_stride(123)
151 .iterations(3)
152 .TestQ8();
153 }
154}
155
Marat Dukhanefc47b82019-11-18 09:25:38 -0800156TEST(ADD_NC_Q8, small_batch_with_y_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700157 for (size_t channels = 1; channels < 100; channels += 15) {
158 AddOperatorTester()
159 .batch_size(3)
160 .channels(channels)
161 .y_stride(117)
162 .iterations(3)
163 .TestQ8();
164 }
165}
166
Marat Dukhanefc47b82019-11-18 09:25:38 -0800167TEST(ADD_NC_Q8, small_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700168 for (size_t channels = 1; channels < 100; channels += 15) {
169 AddOperatorTester()
170 .batch_size(3)
171 .channels(channels)
172 .qmin(128)
173 .iterations(3)
174 .TestQ8();
175 }
176}
177
Marat Dukhanefc47b82019-11-18 09:25:38 -0800178TEST(ADD_NC_Q8, small_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700179 for (size_t channels = 1; channels < 100; channels += 15) {
180 AddOperatorTester()
181 .batch_size(3)
182 .channels(channels)
183 .qmax(128)
184 .iterations(3)
185 .TestQ8();
186 }
187}
188
Marat Dukhanefc47b82019-11-18 09:25:38 -0800189TEST(ADD_NC_Q8, small_batch_with_a_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700190 for (size_t channels = 1; channels < 100; channels += 15) {
191 for (float a_scale = 1.0e-2f; a_scale < 1.0e+2f; a_scale *= 10.0f) {
192 AddOperatorTester()
193 .batch_size(3)
194 .channels(channels)
195 .a_scale(a_scale)
196 .iterations(1)
197 .TestQ8();
198 }
199 }
200}
201
Marat Dukhanefc47b82019-11-18 09:25:38 -0800202TEST(ADD_NC_Q8, small_batch_with_b_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700203 for (size_t channels = 1; channels < 100; channels += 15) {
204 for (float b_scale = 1.0e-2f; b_scale < 1.0e+2f; b_scale *= 10.0f) {
205 AddOperatorTester()
206 .batch_size(3)
207 .channels(channels)
208 .b_scale(b_scale)
209 .iterations(1)
210 .TestQ8();
211 }
212 }
213}
214
Marat Dukhanefc47b82019-11-18 09:25:38 -0800215TEST(ADD_NC_Q8, small_batch_with_y_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700216 for (size_t channels = 1; channels < 100; channels += 15) {
217 for (float y_scale = 1.0e-2f; y_scale < 1.0e+2f; y_scale *= 10.0f) {
218 AddOperatorTester()
219 .batch_size(3)
220 .channels(channels)
221 .y_scale(y_scale)
222 .iterations(1)
223 .TestQ8();
224 }
225 }
226}
227
Marat Dukhanefc47b82019-11-18 09:25:38 -0800228TEST(ADD_NC_Q8, small_batch_with_a_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700229 for (size_t channels = 1; channels < 100; channels += 15) {
230 for (int32_t a_zero_point = 0; a_zero_point <= 255; a_zero_point += 51) {
231 AddOperatorTester()
232 .batch_size(3)
233 .channels(channels)
234 .a_zero_point(uint8_t(a_zero_point))
235 .iterations(1)
236 .TestQ8();
237 }
238 }
239}
240
Marat Dukhanefc47b82019-11-18 09:25:38 -0800241TEST(ADD_NC_Q8, small_batch_with_b_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700242 for (size_t channels = 1; channels < 100; channels += 15) {
243 for (int32_t b_zero_point = 0; b_zero_point <= 255; b_zero_point += 51) {
244 AddOperatorTester()
245 .batch_size(3)
246 .channels(channels)
247 .b_zero_point(uint8_t(b_zero_point))
248 .iterations(1)
249 .TestQ8();
250 }
251 }
252}
253
Marat Dukhanefc47b82019-11-18 09:25:38 -0800254TEST(ADD_NC_Q8, small_batch_with_y_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700255 for (size_t channels = 1; channels < 100; channels += 15) {
256 for (int32_t y_zero_point = 0; y_zero_point <= 255; y_zero_point += 51) {
257 AddOperatorTester()
258 .batch_size(3)
259 .channels(channels)
260 .y_zero_point(uint8_t(y_zero_point))
261 .iterations(1)
262 .TestQ8();
263 }
264 }
265}
266
Marat Dukhanefc47b82019-11-18 09:25:38 -0800267TEST(ADD_NC_Q8, strided_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700268 for (size_t channels = 1; channels < 100; channels += 15) {
269 AddOperatorTester()
270 .batch_size(3)
271 .channels(channels)
272 .a_stride(129)
273 .b_stride(123)
274 .y_stride(117)
275 .iterations(3)
276 .TestQ8();
277 }
278}
279
Marat Dukhanefc47b82019-11-18 09:25:38 -0800280TEST(ADD_NC_Q8, strided_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700281 for (size_t channels = 1; channels < 100; channels += 15) {
282 AddOperatorTester()
283 .batch_size(3)
284 .channels(channels)
285 .a_stride(129)
286 .b_stride(123)
287 .y_stride(117)
288 .qmin(128)
289 .iterations(3)
290 .TestQ8();
291 }
292}
293
Marat Dukhanefc47b82019-11-18 09:25:38 -0800294TEST(ADD_NC_Q8, strided_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700295 for (size_t channels = 1; channels < 100; channels += 15) {
296 AddOperatorTester()
297 .batch_size(3)
298 .channels(channels)
299 .a_stride(129)
300 .b_stride(123)
301 .y_stride(117)
302 .qmax(128)
303 .iterations(3)
304 .TestQ8();
305 }
306}
307
Marat Dukhanefc47b82019-11-18 09:25:38 -0800308TEST(ADD_NC_Q8, strided_batch_with_a_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700309 for (size_t channels = 1; channels < 100; channels += 15) {
310 for (float a_scale = 1.0e-2f; a_scale < 1.0e+2f; a_scale *= 10.0f) {
311 AddOperatorTester()
312 .batch_size(3)
313 .channels(channels)
314 .a_stride(129)
315 .b_stride(123)
316 .y_stride(117)
317 .a_scale(a_scale)
318 .iterations(1)
319 .TestQ8();
320 }
321 }
322}
323
Marat Dukhanefc47b82019-11-18 09:25:38 -0800324TEST(ADD_NC_Q8, strided_batch_with_b_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700325 for (size_t channels = 1; channels < 100; channels += 15) {
326 for (float b_scale = 1.0e-2f; b_scale < 1.0e+2f; b_scale *= 10.0f) {
327 AddOperatorTester()
328 .batch_size(3)
329 .channels(channels)
330 .a_stride(129)
331 .b_stride(123)
332 .y_stride(117)
333 .b_scale(b_scale)
334 .iterations(1)
335 .TestQ8();
336 }
337 }
338}
339
Marat Dukhanefc47b82019-11-18 09:25:38 -0800340TEST(ADD_NC_Q8, strided_batch_with_y_scale) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700341 for (size_t channels = 1; channels < 100; channels += 15) {
342 for (float y_scale = 1.0e-2f; y_scale < 1.0e+2f; y_scale *= 10.0f) {
343 AddOperatorTester()
344 .batch_size(3)
345 .channels(channels)
346 .a_stride(129)
347 .b_stride(123)
348 .y_stride(117)
349 .y_scale(y_scale)
350 .iterations(1)
351 .TestQ8();
352 }
353 }
354}
355
Marat Dukhanefc47b82019-11-18 09:25:38 -0800356TEST(ADD_NC_Q8, strided_batch_with_a_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700357 for (size_t channels = 1; channels < 100; channels += 15) {
358 for (int32_t a_zero_point = 0; a_zero_point <= 255; a_zero_point += 51) {
359 AddOperatorTester()
360 .batch_size(3)
361 .channels(channels)
362 .a_stride(129)
363 .b_stride(123)
364 .y_stride(117)
365 .a_zero_point(uint8_t(a_zero_point))
366 .iterations(1)
367 .TestQ8();
368 }
369 }
370}
371
Marat Dukhanefc47b82019-11-18 09:25:38 -0800372TEST(ADD_NC_Q8, strided_batch_with_b_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700373 for (size_t channels = 1; channels < 100; channels += 15) {
374 for (int32_t b_zero_point = 0; b_zero_point <= 255; b_zero_point += 51) {
375 AddOperatorTester()
376 .batch_size(3)
377 .channels(channels)
378 .a_stride(129)
379 .b_stride(123)
380 .y_stride(117)
381 .b_zero_point(uint8_t(b_zero_point))
382 .iterations(1)
383 .TestQ8();
384 }
385 }
386}
387
Marat Dukhanefc47b82019-11-18 09:25:38 -0800388TEST(ADD_NC_Q8, strided_batch_with_y_zero_point) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700389 for (size_t channels = 1; channels < 100; channels += 15) {
390 for (int32_t y_zero_point = 0; y_zero_point <= 255; y_zero_point += 51) {
391 AddOperatorTester()
392 .batch_size(3)
393 .channels(channels)
394 .a_stride(129)
395 .b_stride(123)
396 .y_stride(117)
397 .y_zero_point(uint8_t(y_zero_point))
398 .iterations(1)
399 .TestQ8();
400 }
401 }
402}
403
Marat Dukhanefc47b82019-11-18 09:25:38 -0800404TEST(ADD_NC_F32, unit_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700405 for (size_t channels = 1; channels < 100; channels += 15) {
406 AddOperatorTester()
407 .batch_size(1)
408 .channels(channels)
409 .iterations(3)
410 .TestF32();
411 }
412}
413
Marat Dukhanefc47b82019-11-18 09:25:38 -0800414TEST(ADD_NC_F32, unit_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700415 for (size_t channels = 1; channels < 100; channels += 15) {
416 AddOperatorTester()
417 .batch_size(1)
418 .channels(channels)
419 .qmin(128)
420 .iterations(3)
421 .TestF32();
422 }
423}
424
Marat Dukhanefc47b82019-11-18 09:25:38 -0800425TEST(ADD_NC_F32, unit_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700426 for (size_t channels = 1; channels < 100; channels += 15) {
427 AddOperatorTester()
428 .batch_size(1)
429 .channels(channels)
430 .qmax(128)
431 .iterations(3)
432 .TestF32();
433 }
434}
435
Marat Dukhanefc47b82019-11-18 09:25:38 -0800436TEST(ADD_NC_F32, small_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700437 for (size_t channels = 1; channels < 100; channels += 15) {
438 AddOperatorTester()
439 .batch_size(3)
440 .channels(channels)
441 .iterations(3)
442 .TestF32();
443 }
444}
445
Marat Dukhanefc47b82019-11-18 09:25:38 -0800446TEST(ADD_NC_F32, small_batch_with_a_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700447 for (size_t channels = 1; channels < 100; channels += 15) {
448 AddOperatorTester()
449 .batch_size(3)
450 .channels(channels)
451 .a_stride(129)
452 .iterations(3)
453 .TestF32();
454 }
455}
456
Marat Dukhanefc47b82019-11-18 09:25:38 -0800457TEST(ADD_NC_F32, small_batch_with_b_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700458 for (size_t channels = 1; channels < 100; channels += 15) {
459 AddOperatorTester()
460 .batch_size(3)
461 .channels(channels)
462 .b_stride(123)
463 .iterations(3)
464 .TestF32();
465 }
466}
467
Marat Dukhanefc47b82019-11-18 09:25:38 -0800468TEST(ADD_NC_F32, small_batch_with_y_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700469 for (size_t channels = 1; channels < 100; channels += 15) {
470 AddOperatorTester()
471 .batch_size(3)
472 .channels(channels)
473 .y_stride(117)
474 .iterations(3)
475 .TestF32();
476 }
477}
478
Marat Dukhanefc47b82019-11-18 09:25:38 -0800479TEST(ADD_NC_F32, small_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700480 for (size_t channels = 1; channels < 100; channels += 15) {
481 AddOperatorTester()
482 .batch_size(3)
483 .channels(channels)
484 .qmin(128)
485 .iterations(3)
486 .TestF32();
487 }
488}
489
Marat Dukhanefc47b82019-11-18 09:25:38 -0800490TEST(ADD_NC_F32, small_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700491 for (size_t channels = 1; channels < 100; channels += 15) {
492 AddOperatorTester()
493 .batch_size(3)
494 .channels(channels)
495 .qmax(128)
496 .iterations(3)
497 .TestF32();
498 }
499}
500
Marat Dukhanefc47b82019-11-18 09:25:38 -0800501TEST(ADD_NC_F32, strided_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700502 for (size_t channels = 1; channels < 100; channels += 15) {
503 AddOperatorTester()
504 .batch_size(3)
505 .channels(channels)
506 .a_stride(129)
507 .b_stride(123)
508 .y_stride(117)
509 .iterations(3)
510 .TestF32();
511 }
512}
513
Marat Dukhanefc47b82019-11-18 09:25:38 -0800514TEST(ADD_NC_F32, strided_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700515 for (size_t channels = 1; channels < 100; channels += 15) {
516 AddOperatorTester()
517 .batch_size(3)
518 .channels(channels)
519 .a_stride(129)
520 .b_stride(123)
521 .y_stride(117)
522 .qmin(128)
523 .iterations(3)
524 .TestF32();
525 }
526}
527
Marat Dukhanefc47b82019-11-18 09:25:38 -0800528TEST(ADD_NC_F32, strided_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700529 for (size_t channels = 1; channels < 100; channels += 15) {
530 AddOperatorTester()
531 .batch_size(3)
532 .channels(channels)
533 .a_stride(129)
534 .b_stride(123)
535 .y_stride(117)
536 .qmax(128)
537 .iterations(3)
538 .TestF32();
539 }
540}