xref: /aosp_15_r20/external/XNNPACK/test/f16-vminc.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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 // Auto-generated file. Do not edit!
7 //   Specification: test/f16-vminc.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/microparams-init.h>
17 #include <xnnpack/vbinary.h>
18 #include "vbinaryc-microkernel-tester.h"
19 
20 
21 #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_VMINC__NEONFP16ARITH_X8,batch_eq_8)22   TEST(F16_VMINC__NEONFP16ARITH_X8, batch_eq_8) {
23     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
24     VBinaryCMicrokernelTester()
25       .batch_size(8)
26       .Test(xnn_f16_vminc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MinC);
27   }
28 
TEST(F16_VMINC__NEONFP16ARITH_X8,batch_div_8)29   TEST(F16_VMINC__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) {
32       VBinaryCMicrokernelTester()
33         .batch_size(batch_size)
34         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MinC);
35     }
36   }
37 
TEST(F16_VMINC__NEONFP16ARITH_X8,batch_lt_8)38   TEST(F16_VMINC__NEONFP16ARITH_X8, batch_lt_8) {
39     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
40     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
41       VBinaryCMicrokernelTester()
42         .batch_size(batch_size)
43         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MinC);
44     }
45   }
46 
TEST(F16_VMINC__NEONFP16ARITH_X8,batch_gt_8)47   TEST(F16_VMINC__NEONFP16ARITH_X8, batch_gt_8) {
48     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
49     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
50       VBinaryCMicrokernelTester()
51         .batch_size(batch_size)
52         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MinC);
53     }
54   }
55 
TEST(F16_VMINC__NEONFP16ARITH_X8,inplace)56   TEST(F16_VMINC__NEONFP16ARITH_X8, inplace) {
57     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
58     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
59       VBinaryCMicrokernelTester()
60         .batch_size(batch_size)
61         .inplace(true)
62         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MinC);
63     }
64   }
65 #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
66 
67 
68 #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_VMINC__NEONFP16ARITH_X16,batch_eq_16)69   TEST(F16_VMINC__NEONFP16ARITH_X16, batch_eq_16) {
70     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
71     VBinaryCMicrokernelTester()
72       .batch_size(16)
73       .Test(xnn_f16_vminc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MinC);
74   }
75 
TEST(F16_VMINC__NEONFP16ARITH_X16,batch_div_16)76   TEST(F16_VMINC__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) {
79       VBinaryCMicrokernelTester()
80         .batch_size(batch_size)
81         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MinC);
82     }
83   }
84 
TEST(F16_VMINC__NEONFP16ARITH_X16,batch_lt_16)85   TEST(F16_VMINC__NEONFP16ARITH_X16, batch_lt_16) {
86     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
87     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
88       VBinaryCMicrokernelTester()
89         .batch_size(batch_size)
90         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MinC);
91     }
92   }
93 
TEST(F16_VMINC__NEONFP16ARITH_X16,batch_gt_16)94   TEST(F16_VMINC__NEONFP16ARITH_X16, batch_gt_16) {
95     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
96     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
97       VBinaryCMicrokernelTester()
98         .batch_size(batch_size)
99         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MinC);
100     }
101   }
102 
TEST(F16_VMINC__NEONFP16ARITH_X16,inplace)103   TEST(F16_VMINC__NEONFP16ARITH_X16, inplace) {
104     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
105     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
106       VBinaryCMicrokernelTester()
107         .batch_size(batch_size)
108         .inplace(true)
109         .Test(xnn_f16_vminc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MinC);
110     }
111   }
112 #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
113 
114 
115 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VMINC__F16C_X8,batch_eq_8)116   TEST(F16_VMINC__F16C_X8, batch_eq_8) {
117     TEST_REQUIRES_X86_F16C;
118     VBinaryCMicrokernelTester()
119       .batch_size(8)
120       .Test(xnn_f16_vminc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MinC);
121   }
122 
TEST(F16_VMINC__F16C_X8,batch_div_8)123   TEST(F16_VMINC__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_vminc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MinC);
129     }
130   }
131 
TEST(F16_VMINC__F16C_X8,batch_lt_8)132   TEST(F16_VMINC__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_vminc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MinC);
138     }
139   }
140 
TEST(F16_VMINC__F16C_X8,batch_gt_8)141   TEST(F16_VMINC__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_vminc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MinC);
147     }
148   }
149 
TEST(F16_VMINC__F16C_X8,inplace)150   TEST(F16_VMINC__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_vminc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MinC);
157     }
158   }
159 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
160 
161 
162 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VMINC__F16C_X16,batch_eq_16)163   TEST(F16_VMINC__F16C_X16, batch_eq_16) {
164     TEST_REQUIRES_X86_F16C;
165     VBinaryCMicrokernelTester()
166       .batch_size(16)
167       .Test(xnn_f16_vminc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MinC);
168   }
169 
TEST(F16_VMINC__F16C_X16,batch_div_16)170   TEST(F16_VMINC__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_vminc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MinC);
176     }
177   }
178 
TEST(F16_VMINC__F16C_X16,batch_lt_16)179   TEST(F16_VMINC__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_vminc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MinC);
185     }
186   }
187 
TEST(F16_VMINC__F16C_X16,batch_gt_16)188   TEST(F16_VMINC__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_vminc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MinC);
194     }
195   }
196 
TEST(F16_VMINC__F16C_X16,inplace)197   TEST(F16_VMINC__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_vminc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MinC);
204     }
205   }
206 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
207