blob: e48c9d33558944a10338ec16dee9ae2492c792b2 [file] [log] [blame]
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001// Copyright 2020 Google LLC
XNNPACK Teamb455b122019-09-27 18:10:33 -07002//
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.
Marat Dukhan5c5fa962020-03-10 18:38:33 -07005//
6// Auto-generated file. Do not edit!
Marat Dukhan6674d692021-05-05 22:27:00 -07007// Specification: test/u8-vclamp.yaml
8// Generator: tools/generate-vclamp-test.py
Marat Dukhan5c5fa962020-03-10 18:38:33 -07009
XNNPACK Teamb455b122019-09-27 18:10:33 -070010
XNNPACK Teamb455b122019-09-27 18:10:33 -070011#include <gtest/gtest.h>
12
Marat Dukhan1dadbf72019-10-01 10:46:20 -070013#include <xnnpack/common.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070014#include <xnnpack/isa-checks.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070015
Marat Dukhan60d3f242021-05-13 11:59:02 -070016#include <xnnpack/vunary.h>
Marat Dukhan6674d692021-05-05 22:27:00 -070017#include "vclamp-microkernel-tester.h"
XNNPACK Teamb455b122019-09-27 18:10:33 -070018
19
Marat Dukhan1dadbf72019-10-01 10:46:20 -070020#if XNN_ARCH_ARM || XNN_ARCH_ARM64
Marat Dukhan6674d692021-05-05 22:27:00 -070021 TEST(U8_VCLAMP__NEON_X64, batch_eq_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070022 TEST_REQUIRES_ARM_NEON;
23 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070024 .batch_size(64)
Marat Dukhan6674d692021-05-05 22:27:00 -070025 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070026 }
27
Marat Dukhan6674d692021-05-05 22:27:00 -070028 TEST(U8_VCLAMP__NEON_X64, batch_div_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070029 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070030 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070031 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070032 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -070033 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070034 }
35 }
36
Marat Dukhan6674d692021-05-05 22:27:00 -070037 TEST(U8_VCLAMP__NEON_X64, batch_lt_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070038 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070039 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070040 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070041 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -070042 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070043 }
44 }
45
Marat Dukhan6674d692021-05-05 22:27:00 -070046 TEST(U8_VCLAMP__NEON_X64, batch_gt_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070047 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070048 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070049 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070050 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -070051 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070052 }
53 }
54
Marat Dukhan6674d692021-05-05 22:27:00 -070055 TEST(U8_VCLAMP__NEON_X64, inplace) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070056 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070057 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070058 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070059 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070060 .inplace(true)
Marat Dukhan6674d692021-05-05 22:27:00 -070061 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070062 }
63 }
64
Marat Dukhan6674d692021-05-05 22:27:00 -070065 TEST(U8_VCLAMP__NEON_X64, qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070066 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070067 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070068 for (uint8_t qmin = 1; qmin < 255; qmin++) {
69 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070070 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070071 .qmin(qmin)
72 .qmax(255)
Marat Dukhan6674d692021-05-05 22:27:00 -070073 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070074 }
75 }
76 }
77
Marat Dukhan6674d692021-05-05 22:27:00 -070078 TEST(U8_VCLAMP__NEON_X64, qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070079 TEST_REQUIRES_ARM_NEON;
Marat Dukhan5c5fa962020-03-10 18:38:33 -070080 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070081 for (uint8_t qmax = 1; qmax < 255; qmax++) {
82 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070083 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -070084 .qmin(0)
85 .qmax(qmax)
Marat Dukhan6674d692021-05-05 22:27:00 -070086 .Test(xnn_u8_vclamp_ukernel__neon_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070087 }
88 }
89 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -070090#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -070091
Marat Dukhan5c5fa962020-03-10 18:38:33 -070092
Marat Dukhan1dadbf72019-10-01 10:46:20 -070093#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Marat Dukhan6674d692021-05-05 22:27:00 -070094 TEST(U8_VCLAMP__SSE2_X64, batch_eq_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070095 TEST_REQUIRES_X86_SSE2;
96 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -070097 .batch_size(64)
Marat Dukhan6674d692021-05-05 22:27:00 -070098 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -070099 }
100
Marat Dukhan6674d692021-05-05 22:27:00 -0700101 TEST(U8_VCLAMP__SSE2_X64, batch_div_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700102 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700103 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700104 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700105 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700106 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700107 }
108 }
109
Marat Dukhan6674d692021-05-05 22:27:00 -0700110 TEST(U8_VCLAMP__SSE2_X64, batch_lt_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700111 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700112 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700113 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700114 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700115 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700116 }
117 }
118
Marat Dukhan6674d692021-05-05 22:27:00 -0700119 TEST(U8_VCLAMP__SSE2_X64, batch_gt_64) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700120 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700121 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700122 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700123 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700124 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700125 }
126 }
127
Marat Dukhan6674d692021-05-05 22:27:00 -0700128 TEST(U8_VCLAMP__SSE2_X64, inplace) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700129 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700130 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700131 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700132 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700133 .inplace(true)
Marat Dukhan6674d692021-05-05 22:27:00 -0700134 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700135 }
136 }
137
Marat Dukhan6674d692021-05-05 22:27:00 -0700138 TEST(U8_VCLAMP__SSE2_X64, qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700139 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700140 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700141 for (uint8_t qmin = 1; qmin < 255; qmin++) {
142 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700143 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700144 .qmin(qmin)
145 .qmax(255)
Marat Dukhan6674d692021-05-05 22:27:00 -0700146 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700147 }
148 }
149 }
150
Marat Dukhan6674d692021-05-05 22:27:00 -0700151 TEST(U8_VCLAMP__SSE2_X64, qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700152 TEST_REQUIRES_X86_SSE2;
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700153 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700154 for (uint8_t qmax = 1; qmax < 255; qmax++) {
155 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700156 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700157 .qmin(0)
158 .qmax(qmax)
Marat Dukhan6674d692021-05-05 22:27:00 -0700159 .Test(xnn_u8_vclamp_ukernel__sse2_x64);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700160 }
161 }
162 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -0700163#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -0700164
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700165
Marat Dukhan6674d692021-05-05 22:27:00 -0700166TEST(U8_VCLAMP__SCALAR_X4, batch_eq_4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700167 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700168 .batch_size(4)
Marat Dukhan6674d692021-05-05 22:27:00 -0700169 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700170}
171
Marat Dukhan6674d692021-05-05 22:27:00 -0700172TEST(U8_VCLAMP__SCALAR_X4, batch_div_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700173 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700174 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700175 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700176 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700177 }
178}
179
Marat Dukhan6674d692021-05-05 22:27:00 -0700180TEST(U8_VCLAMP__SCALAR_X4, batch_lt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700181 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700182 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700183 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700184 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700185 }
186}
187
Marat Dukhan6674d692021-05-05 22:27:00 -0700188TEST(U8_VCLAMP__SCALAR_X4, batch_gt_4) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700189 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
190 ClampMicrokernelTester()
191 .batch_size(batch_size)
Marat Dukhan6674d692021-05-05 22:27:00 -0700192 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700193 }
194}
195
Marat Dukhan6674d692021-05-05 22:27:00 -0700196TEST(U8_VCLAMP__SCALAR_X4, inplace) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700197 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
198 ClampMicrokernelTester()
199 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700200 .inplace(true)
Marat Dukhan6674d692021-05-05 22:27:00 -0700201 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700202 }
203}
204
Marat Dukhan6674d692021-05-05 22:27:00 -0700205TEST(U8_VCLAMP__SCALAR_X4, qmin) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700206 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700207 for (uint8_t qmin = 1; qmin < 255; qmin++) {
208 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700209 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700210 .qmin(qmin)
211 .qmax(255)
Marat Dukhan6674d692021-05-05 22:27:00 -0700212 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700213 }
214 }
215}
216
Marat Dukhan6674d692021-05-05 22:27:00 -0700217TEST(U8_VCLAMP__SCALAR_X4, qmax) {
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700218 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700219 for (uint8_t qmax = 1; qmax < 255; qmax++) {
220 ClampMicrokernelTester()
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700221 .batch_size(batch_size)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700222 .qmin(0)
223 .qmax(qmax)
Marat Dukhan6674d692021-05-05 22:27:00 -0700224 .Test(xnn_u8_vclamp_ukernel__scalar_x4, ClampMicrokernelTester::Variant::Scalar);
XNNPACK Teamb455b122019-09-27 18:10:33 -0700225 }
226 }
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700227}