1 // 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/common.h>
9 #include <xnnpack/isa-checks.h>
10
11 #include <xnnpack/unpool.h>
12 #include "unpool-microkernel-tester.h"
13
14
15 #if !XNN_ARCH_WASM && !XNN_ARCH_ASMJS
TEST(X32_UNPOOL__PSIMD,c_eq_4)16 TEST(X32_UNPOOL__PSIMD, c_eq_4) {
17 TEST_REQUIRES_PSIMD;
18 UnpoolMicrokernelTester()
19 .p(10)
20 .c(4)
21 .Test(xnn_x32_unpool_ukernel__psimd);
22 }
23
TEST(X32_UNPOOL__PSIMD,c_div_4)24 TEST(X32_UNPOOL__PSIMD, c_div_4) {
25 TEST_REQUIRES_PSIMD;
26 for (size_t c = 8; c < 32; c += 4) {
27 UnpoolMicrokernelTester()
28 .p(10)
29 .c(c)
30 .Test(xnn_x32_unpool_ukernel__psimd);
31 }
32 }
33
TEST(X32_UNPOOL__PSIMD,c_lt_4)34 TEST(X32_UNPOOL__PSIMD, c_lt_4) {
35 TEST_REQUIRES_PSIMD;
36 for (size_t c = 1; c < 4; c++) {
37 UnpoolMicrokernelTester()
38 .p(10)
39 .c(c)
40 .Test(xnn_x32_unpool_ukernel__psimd);
41 }
42 }
43
TEST(X32_UNPOOL__PSIMD,c_gt_4)44 TEST(X32_UNPOOL__PSIMD, c_gt_4) {
45 TEST_REQUIRES_PSIMD;
46 for (size_t c = 5; c < 8; c++) {
47 UnpoolMicrokernelTester()
48 .p(10)
49 .c(4)
50 .Test(xnn_x32_unpool_ukernel__psimd);
51 }
52 }
53
TEST(X32_UNPOOL__PSIMD,varying_p)54 TEST(X32_UNPOOL__PSIMD, varying_p) {
55 TEST_REQUIRES_PSIMD;
56 for (size_t p = 1; p < 20; p += 3) {
57 for (size_t c = 1; c < 32; c += 5) {
58 UnpoolMicrokernelTester()
59 .p(p)
60 .c(c)
61 .Test(xnn_x32_unpool_ukernel__psimd);
62 }
63 }
64 }
65
TEST(X32_UNPOOL__PSIMD,varying_f)66 TEST(X32_UNPOOL__PSIMD, varying_f) {
67 TEST_REQUIRES_PSIMD;
68 for (size_t c = 1; c < 32; c += 5) {
69 UnpoolMicrokernelTester()
70 .p(10)
71 .c(c)
72 .f(0xDEADBEAF)
73 .Test(xnn_x32_unpool_ukernel__psimd);
74 }
75 }
76
TEST(X32_UNPOOL__PSIMD,y_stride)77 TEST(X32_UNPOOL__PSIMD, y_stride) {
78 TEST_REQUIRES_PSIMD;
79 for (size_t c = 1; c < 32; c += 5) {
80 UnpoolMicrokernelTester()
81 .p(10)
82 .c(c)
83 .y_stride(c * 2 + 7)
84 .Test(xnn_x32_unpool_ukernel__psimd);
85 }
86 }
87 #endif // !XNN_ARCH_WASM && !XNN_ARCH_ASMJS
88
89
TEST(X32_UNPOOL__SCALAR,c_eq_1)90 TEST(X32_UNPOOL__SCALAR, c_eq_1) {
91 UnpoolMicrokernelTester()
92 .p(10)
93 .c(1)
94 .Test(xnn_x32_unpool_ukernel__scalar);
95 }
96
TEST(X32_UNPOOL__SCALAR,c_gt_1)97 TEST(X32_UNPOOL__SCALAR, c_gt_1) {
98 for (size_t c = 2; c < 16; c++) {
99 UnpoolMicrokernelTester()
100 .p(10)
101 .c(c)
102 .Test(xnn_x32_unpool_ukernel__scalar);
103 }
104 }
105
TEST(X32_UNPOOL__SCALAR,varying_p)106 TEST(X32_UNPOOL__SCALAR, varying_p) {
107 for (size_t p = 1; p < 20; p += 3) {
108 for (size_t c = 1; c < 16; c += 3) {
109 UnpoolMicrokernelTester()
110 .p(p)
111 .c(c)
112 .Test(xnn_x32_unpool_ukernel__scalar);
113 }
114 }
115 }
116
TEST(X32_UNPOOL__SCALAR,varying_f)117 TEST(X32_UNPOOL__SCALAR, varying_f) {
118 for (size_t c = 1; c < 16; c += 3) {
119 UnpoolMicrokernelTester()
120 .p(10)
121 .c(c)
122 .f(0xDEADBEAF)
123 .Test(xnn_x32_unpool_ukernel__scalar);
124 }
125 }
126
TEST(X32_UNPOOL__SCALAR,y_stride)127 TEST(X32_UNPOOL__SCALAR, y_stride) {
128 for (size_t c = 1; c < 16; c += 3) {
129 UnpoolMicrokernelTester()
130 .p(10)
131 .c(c)
132 .y_stride(c * 2 + 7)
133 .Test(xnn_x32_unpool_ukernel__scalar);
134 }
135 }
136