blob: ece65ea8c5634eae7c63277d7f6da8af046caca6 [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-vmul-minmax.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
16#include <xnnpack/vbinary.h>
17#include "vbinary-microkernel-tester.h"
18
19
20#if XNN_ARCH_ARM64
21 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, batch_eq_8) {
22 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070023 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070024 .batch_size(8)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070025 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070026 }
27
28 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, batch_div_8) {
29 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
30 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070031 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070032 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070033 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070034 }
35 }
36
37 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, batch_lt_8) {
38 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
39 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070040 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070041 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070042 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070043 }
44 }
45
46 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, batch_gt_8) {
47 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
48 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070049 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070050 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070051 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070052 }
53 }
54
55 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, inplace_a) {
56 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
57 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070058 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070059 .batch_size(batch_size)
60 .inplace_a(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070061 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070062 }
63 }
64
65 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, inplace_b) {
66 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
67 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070068 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070069 .batch_size(batch_size)
70 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070071 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070072 }
73 }
74
75 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, inplace_a_and_b) {
76 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
77 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070078 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070079 .batch_size(batch_size)
80 .inplace_a(true)
81 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070082 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070083 }
84 }
85
86 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, qmin) {
87 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
88 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070089 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070090 .batch_size(batch_size)
91 .qmin(128)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070092 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -070093 }
94 }
95
96 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X8, qmax) {
97 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
98 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070099 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700100 .batch_size(batch_size)
101 .qmax(128)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700102 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700103 }
104 }
105#endif // XNN_ARCH_ARM64
106
107
108#if XNN_ARCH_ARM64
109 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, batch_eq_16) {
110 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700111 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700112 .batch_size(16)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700113 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700114 }
115
116 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, batch_div_16) {
117 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
118 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700119 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700120 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700121 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700122 }
123 }
124
125 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, batch_lt_16) {
126 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
127 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700128 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700129 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700130 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700131 }
132 }
133
134 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, batch_gt_16) {
135 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
136 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700137 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700138 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700139 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700140 }
141 }
142
143 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, inplace_a) {
144 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
145 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700146 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700147 .batch_size(batch_size)
148 .inplace_a(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700149 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700150 }
151 }
152
153 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, inplace_b) {
154 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
155 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700156 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700157 .batch_size(batch_size)
158 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700159 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700160 }
161 }
162
163 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, inplace_a_and_b) {
164 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
165 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700166 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700167 .batch_size(batch_size)
168 .inplace_a(true)
169 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700170 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700171 }
172 }
173
174 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, qmin) {
175 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
176 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700177 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700178 .batch_size(batch_size)
179 .qmin(128)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700180 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700181 }
182 }
183
184 TEST(F16_VMUL_MINMAX__NEONFP16ARITH_X16, qmax) {
185 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
186 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700187 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700188 .batch_size(batch_size)
189 .qmax(128)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700190 .Test(xnn_f16_vmul_minmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Mul);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700191 }
192 }
193#endif // XNN_ARCH_ARM64