blob: 7302af01647f1fb828b300fb8b2d27c2e7c76931 [file] [log] [blame]
Frank Barchardd793f6c2020-05-08 13:37:43 -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// Auto-generated file. Do not edit!
7// Specification: test/f16-vmaxc.yaml
8// Generator: tools/generate-vbinary-test.py
9
10
11#include <gtest/gtest.h>
12
13#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
Marat Dukhan87bd5112021-08-02 11:43:53 -070016#include <xnnpack/params-init.h>
Frank Barchardd793f6c2020-05-08 13:37:43 -070017#include <xnnpack/vbinary.h>
18#include "vbinaryc-microkernel-tester.h"
19
20
21#if XNN_ARCH_ARM64
22 TEST(F16_VMAXC__NEONFP16ARITH_X8, batch_eq_8) {
23 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070024 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070025 .batch_size(8)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070026 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070027 }
28
29 TEST(F16_VMAXC__NEONFP16ARITH_X8, batch_div_8) {
30 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
31 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070032 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070033 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070034 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070035 }
36 }
37
38 TEST(F16_VMAXC__NEONFP16ARITH_X8, batch_lt_8) {
39 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
40 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070041 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070042 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070043 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070044 }
45 }
46
47 TEST(F16_VMAXC__NEONFP16ARITH_X8, batch_gt_8) {
48 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
49 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070050 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070051 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070052 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070053 }
54 }
55
56 TEST(F16_VMAXC__NEONFP16ARITH_X8, inplace) {
57 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
58 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070059 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070060 .batch_size(batch_size)
61 .inplace(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070062 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070063 }
64 }
Frank Barchardd793f6c2020-05-08 13:37:43 -070065#endif // XNN_ARCH_ARM64
66
67
68#if XNN_ARCH_ARM64
69 TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_eq_16) {
70 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070071 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070072 .batch_size(16)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070073 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070074 }
75
76 TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_div_16) {
77 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
78 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070079 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070080 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070081 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070082 }
83 }
84
85 TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_lt_16) {
86 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
87 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070088 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070089 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070090 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -070091 }
92 }
93
94 TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_gt_16) {
95 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
96 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070097 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070098 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070099 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700100 }
101 }
102
103 TEST(F16_VMAXC__NEONFP16ARITH_X16, inplace) {
104 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
105 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700106 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700107 .batch_size(batch_size)
108 .inplace(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700109 .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700110 }
111 }
Frank Barchardd793f6c2020-05-08 13:37:43 -0700112#endif // XNN_ARCH_ARM64
Marat Dukhand4545452022-01-10 16:13:11 -0800113
114
115#if XNN_ARCH_X86 || XNN_ARCH_X86_64
116 TEST(F16_VMAXC__F16C_X8, batch_eq_8) {
117 TEST_REQUIRES_X86_F16C;
118 VBinaryCMicrokernelTester()
119 .batch_size(8)
120 .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC);
121 }
122
123 TEST(F16_VMAXC__F16C_X8, batch_div_8) {
124 TEST_REQUIRES_X86_F16C;
125 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
126 VBinaryCMicrokernelTester()
127 .batch_size(batch_size)
128 .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC);
129 }
130 }
131
132 TEST(F16_VMAXC__F16C_X8, batch_lt_8) {
133 TEST_REQUIRES_X86_F16C;
134 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
135 VBinaryCMicrokernelTester()
136 .batch_size(batch_size)
137 .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC);
138 }
139 }
140
141 TEST(F16_VMAXC__F16C_X8, batch_gt_8) {
142 TEST_REQUIRES_X86_F16C;
143 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
144 VBinaryCMicrokernelTester()
145 .batch_size(batch_size)
146 .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC);
147 }
148 }
149
150 TEST(F16_VMAXC__F16C_X8, inplace) {
151 TEST_REQUIRES_X86_F16C;
152 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
153 VBinaryCMicrokernelTester()
154 .batch_size(batch_size)
155 .inplace(true)
156 .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC);
157 }
158 }
159#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
160
161
162#if XNN_ARCH_X86 || XNN_ARCH_X86_64
163 TEST(F16_VMAXC__F16C_X16, batch_eq_16) {
164 TEST_REQUIRES_X86_F16C;
165 VBinaryCMicrokernelTester()
166 .batch_size(16)
167 .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC);
168 }
169
170 TEST(F16_VMAXC__F16C_X16, batch_div_16) {
171 TEST_REQUIRES_X86_F16C;
172 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
173 VBinaryCMicrokernelTester()
174 .batch_size(batch_size)
175 .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC);
176 }
177 }
178
179 TEST(F16_VMAXC__F16C_X16, batch_lt_16) {
180 TEST_REQUIRES_X86_F16C;
181 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
182 VBinaryCMicrokernelTester()
183 .batch_size(batch_size)
184 .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC);
185 }
186 }
187
188 TEST(F16_VMAXC__F16C_X16, batch_gt_16) {
189 TEST_REQUIRES_X86_F16C;
190 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
191 VBinaryCMicrokernelTester()
192 .batch_size(batch_size)
193 .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC);
194 }
195 }
196
197 TEST(F16_VMAXC__F16C_X16, inplace) {
198 TEST_REQUIRES_X86_F16C;
199 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
200 VBinaryCMicrokernelTester()
201 .batch_size(batch_size)
202 .inplace(true)
203 .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC);
204 }
205 }
206#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64