blob: 24465d3f2bf3fb8b208e82621f65b75eccd29773 [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 "channel-pad-operator-tester.h"
11
12
Marat Dukhanefc47b82019-11-18 09:25:38 -080013TEST(CHANNEL_PAD_NC_X32, unit_batch_copy) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070014 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
15 ChannelPadOperatorTester()
16 .batch_size(1)
17 .input_channels(input_channels)
18 .iterations(3)
19 .TestX32();
20 }
21}
22
Marat Dukhanefc47b82019-11-18 09:25:38 -080023TEST(CHANNEL_PAD_NC_X32, unit_batch_pad_before) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070024 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
25 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
26 ChannelPadOperatorTester()
27 .batch_size(1)
28 .input_channels(input_channels)
29 .pad_before(pad_channels)
30 .iterations(3)
31 .TestX32();
32 }
33 }
34}
35
Marat Dukhanefc47b82019-11-18 09:25:38 -080036TEST(CHANNEL_PAD_NC_X32, unit_batch_pad_after) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070037 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
38 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
39 ChannelPadOperatorTester()
40 .batch_size(1)
41 .input_channels(input_channels)
42 .pad_after(pad_channels)
43 .iterations(3)
44 .TestX32();
45 }
46 }
47}
48
Marat Dukhanefc47b82019-11-18 09:25:38 -080049TEST(CHANNEL_PAD_NC_X32, unit_batch_pad_both) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070050 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
51 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
52 ChannelPadOperatorTester()
53 .batch_size(1)
54 .input_channels(input_channels)
55 .pad_before(pad_channels)
56 .pad_after(pad_channels + 1)
57 .iterations(3)
58 .TestX32();
59 }
60 }
61}
62
Marat Dukhanefc47b82019-11-18 09:25:38 -080063TEST(CHANNEL_PAD_NC_X32, small_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070064 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
65 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
66 ChannelPadOperatorTester()
67 .batch_size(xnn_params.x32.pad.mr)
68 .input_channels(input_channels)
69 .pad_before(pad_channels)
70 .pad_after(pad_channels + 1)
71 .iterations(3)
72 .TestX32();
73 }
74 }
75}
76
Marat Dukhanefc47b82019-11-18 09:25:38 -080077TEST(CHANNEL_PAD_NC_X32, small_batch_with_x_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070078 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
79 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
80 ChannelPadOperatorTester()
81 .batch_size(xnn_params.x32.pad.mr)
82 .input_channels(input_channels)
83 .pad_before(pad_channels)
84 .pad_after(pad_channels + 1)
85 .input_stride(123)
86 .iterations(3)
87 .TestX32();
88 }
89 }
90}
91
Marat Dukhanefc47b82019-11-18 09:25:38 -080092TEST(CHANNEL_PAD_NC_X32, small_batch_with_y_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070093 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
94 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
95 ChannelPadOperatorTester()
96 .batch_size(xnn_params.x32.pad.mr)
97 .input_channels(input_channels)
98 .pad_before(pad_channels)
99 .pad_after(pad_channels + 1)
100 .output_stride(509)
101 .iterations(3)
102 .TestX32();
103 }
104 }
105}
106
Marat Dukhanefc47b82019-11-18 09:25:38 -0800107TEST(CHANNEL_PAD_NC_X32, small_batch_with_x_stride_and_y_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700108 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
109 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
110 ChannelPadOperatorTester()
111 .batch_size(xnn_params.x32.pad.mr)
112 .input_channels(input_channels)
113 .pad_before(pad_channels)
114 .pad_after(pad_channels + 1)
115 .input_stride(123)
116 .output_stride(509)
117 .iterations(3)
118 .TestX32();
119 }
120 }
121}
122
Marat Dukhanefc47b82019-11-18 09:25:38 -0800123TEST(CHANNEL_PAD_NC_X32, large_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700124 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
125 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
126 ChannelPadOperatorTester()
127 .batch_size(3 * xnn_params.x32.pad.mr + 1)
128 .input_channels(input_channels)
129 .pad_before(pad_channels)
130 .pad_after(pad_channels + 1)
131 .iterations(1)
132 .TestX32();
133 }
134 }
135}
136
Marat Dukhanefc47b82019-11-18 09:25:38 -0800137TEST(CHANNEL_PAD_NC_X32, large_batch_with_x_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700138 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
139 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
140 ChannelPadOperatorTester()
141 .batch_size(3 * xnn_params.x32.pad.mr + 1)
142 .input_channels(input_channels)
143 .pad_before(pad_channels)
144 .pad_after(pad_channels + 1)
145 .input_stride(123)
146 .iterations(1)
147 .TestX32();
148 }
149 }
150}
151
Marat Dukhanefc47b82019-11-18 09:25:38 -0800152TEST(CHANNEL_PAD_NC_X32, large_batch_with_y_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700153 for (size_t input_channels = 1; input_channels < 100; input_channels += 15) {
154 for (size_t pad_channels = 1; pad_channels < 50; pad_channels += 7) {
155 ChannelPadOperatorTester()
156 .batch_size(3 * xnn_params.x32.pad.mr + 1)
157 .input_channels(input_channels)
158 .pad_before(pad_channels)
159 .pad_after(pad_channels + 1)
160 .output_stride(509)
161 .iterations(1)
162 .TestX32();
163 }
164 }
165}