blob: a337726702124f2d1c9395e92cec29ac97e19e43 [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, small_batch) {
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()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080026 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070027 .channels(channels)
28 .iterations(3)
29 .TestF32();
30 }
31}
32
Marat Dukhanefc47b82019-11-18 09:25:38 -080033TEST(PRELU_NC_F32, small_batch_with_x_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080034 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 -070035 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080036 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070037 .channels(channels)
38 .x_stride(123)
39 .iterations(3)
40 .TestF32();
41 }
42}
43
Marat Dukhanefc47b82019-11-18 09:25:38 -080044TEST(PRELU_NC_F32, small_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080045 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 -070046 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080047 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -070048 .channels(channels)
49 .y_stride(117)
50 .iterations(3)
51 .TestF32();
52 }
53}
54
Marat Dukhanefc47b82019-11-18 09:25:38 -080055TEST(PRELU_NC_F32, small_batch_with_x_stride_and_y_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 .y_stride(117)
62 .iterations(3)
63 .TestF32();
64 }
65}
66
Marat Dukhanefc47b82019-11-18 09:25:38 -080067TEST(PRELU_NC_F32, large_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080068 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 -070069 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080070 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -070071 .channels(channels)
72 .iterations(1)
73 .TestF32();
74 }
75}
76
Marat Dukhanefc47b82019-11-18 09:25:38 -080077TEST(PRELU_NC_F32, large_batch_with_x_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(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -070081 .channels(channels)
82 .x_stride(123)
83 .iterations(1)
84 .TestF32();
85 }
86}
87
Marat Dukhanefc47b82019-11-18 09:25:38 -080088TEST(PRELU_NC_F32, large_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080089 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 -070090 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080091 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -070092 .channels(channels)
93 .y_stride(117)
94 .iterations(1)
95 .TestF32();
96 }
97}
98
Marat Dukhanefc47b82019-11-18 09:25:38 -080099TEST(PRELU_NC_F32, large_batch_with_x_stride_and_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800100 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 -0700101 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800102 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700103 .channels(channels)
104 .x_stride(123)
105 .y_stride(117)
106 .iterations(1)
107 .TestF32();
108 }
109}