blob: d4e1efdec88d7f2decd0716c58b20a54189ad148 [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -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#include <gtest/gtest.h>
7
8#include <xnnpack/params.h>
9
10#include "prelu-operator-tester.h"
11
12
Marat Dukhanefc47b82019-11-18 09:25:38 -080013TEST(PRELU_NC_F32, unit_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080014 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070015 PReLUOperatorTester()
16 .batch_size(1)
17 .channels(channels)
18 .iterations(3)
19 .TestF32();
20 }
21}
22
Marat Dukhanefc47b82019-11-18 09:25:38 -080023TEST(PRELU_NC_F32, unit_batch_with_qmin) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080024 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070025 PReLUOperatorTester()
26 .batch_size(1)
27 .channels(channels)
28 .qmin(128)
29 .iterations(3)
30 .TestF32();
31 }
32}
33
Marat Dukhanefc47b82019-11-18 09:25:38 -080034TEST(PRELU_NC_F32, unit_batch_with_qmax) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080035 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070036 PReLUOperatorTester()
37 .batch_size(1)
38 .channels(channels)
39 .qmax(128)
40 .iterations(3)
41 .TestF32();
42 }
43}
44
Marat Dukhanefc47b82019-11-18 09:25:38 -080045TEST(PRELU_NC_F32, small_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080046 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070047 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080048 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070049 .channels(channels)
50 .iterations(3)
51 .TestF32();
52 }
53}
54
Marat Dukhanefc47b82019-11-18 09:25:38 -080055TEST(PRELU_NC_F32, small_batch_with_x_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080056 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070057 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080058 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070059 .channels(channels)
60 .x_stride(123)
61 .iterations(3)
62 .TestF32();
63 }
64}
65
Marat Dukhanefc47b82019-11-18 09:25:38 -080066TEST(PRELU_NC_F32, small_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080067 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070068 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080069 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070070 .channels(channels)
71 .y_stride(117)
72 .iterations(3)
73 .TestF32();
74 }
75}
76
Marat Dukhanefc47b82019-11-18 09:25:38 -080077TEST(PRELU_NC_F32, small_batch_with_x_stride_and_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080078 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070079 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080080 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070081 .channels(channels)
82 .x_stride(123)
83 .y_stride(117)
84 .iterations(3)
85 .TestF32();
86 }
87}
88
Marat Dukhanefc47b82019-11-18 09:25:38 -080089TEST(PRELU_NC_F32, small_batch_with_qmin) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080090 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070091 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080092 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070093 .channels(channels)
94 .qmin(128)
95 .iterations(3)
96 .TestF32();
97 }
98}
99
Marat Dukhanefc47b82019-11-18 09:25:38 -0800100TEST(PRELU_NC_F32, small_batch_with_qmax) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800101 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700102 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800103 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700104 .channels(channels)
105 .qmax(128)
106 .iterations(3)
107 .TestF32();
108 }
109}
110
Marat Dukhanefc47b82019-11-18 09:25:38 -0800111TEST(PRELU_NC_F32, large_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800112 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700113 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800114 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700115 .channels(channels)
116 .iterations(1)
117 .TestF32();
118 }
119}
120
Marat Dukhanefc47b82019-11-18 09:25:38 -0800121TEST(PRELU_NC_F32, large_batch_with_x_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800122 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700123 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800124 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700125 .channels(channels)
126 .x_stride(123)
127 .iterations(1)
128 .TestF32();
129 }
130}
131
Marat Dukhanefc47b82019-11-18 09:25:38 -0800132TEST(PRELU_NC_F32, large_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800133 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700134 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800135 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700136 .channels(channels)
137 .y_stride(117)
138 .iterations(1)
139 .TestF32();
140 }
141}
142
Marat Dukhanefc47b82019-11-18 09:25:38 -0800143TEST(PRELU_NC_F32, large_batch_with_x_stride_and_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800144 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700145 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800146 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700147 .channels(channels)
148 .x_stride(123)
149 .y_stride(117)
150 .iterations(1)
151 .TestF32();
152 }
153}