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-vrdivc-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/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_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_eq_8)22 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, batch_eq_8) { 23 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 24 VBinaryCMicrokernelTester() 25 .batch_size(8) 26 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 27 } 28 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_div_8)29 TEST(F16_VRDIVC_MINMAX__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_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 35 } 36 } 37 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_lt_8)38 TEST(F16_VRDIVC_MINMAX__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_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 44 } 45 } 46 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_gt_8)47 TEST(F16_VRDIVC_MINMAX__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_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 53 } 54 } 55 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,inplace)56 TEST(F16_VRDIVC_MINMAX__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_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 63 } 64 } 65 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,qmin)66 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, qmin) { 67 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 68 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 69 VBinaryCMicrokernelTester() 70 .batch_size(batch_size) 71 .qmin(128) 72 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 73 } 74 } 75 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,qmax)76 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, qmax) { 77 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 78 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 79 VBinaryCMicrokernelTester() 80 .batch_size(batch_size) 81 .qmax(128) 82 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 83 } 84 } 85 #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 86 87 88 #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_eq_16)89 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_eq_16) { 90 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 91 VBinaryCMicrokernelTester() 92 .batch_size(16) 93 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 94 } 95 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_div_16)96 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_div_16) { 97 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 98 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 99 VBinaryCMicrokernelTester() 100 .batch_size(batch_size) 101 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 102 } 103 } 104 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_lt_16)105 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_lt_16) { 106 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 107 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 108 VBinaryCMicrokernelTester() 109 .batch_size(batch_size) 110 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 111 } 112 } 113 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_gt_16)114 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_gt_16) { 115 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 116 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 117 VBinaryCMicrokernelTester() 118 .batch_size(batch_size) 119 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 120 } 121 } 122 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,inplace)123 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, inplace) { 124 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 125 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 126 VBinaryCMicrokernelTester() 127 .batch_size(batch_size) 128 .inplace(true) 129 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 130 } 131 } 132 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,qmin)133 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, qmin) { 134 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 135 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 136 VBinaryCMicrokernelTester() 137 .batch_size(batch_size) 138 .qmin(128) 139 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 140 } 141 } 142 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,qmax)143 TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, qmax) { 144 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 145 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 146 VBinaryCMicrokernelTester() 147 .batch_size(batch_size) 148 .qmax(128) 149 .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params); 150 } 151 } 152 #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 153 154 155 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_eq_8)156 TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_eq_8) { 157 TEST_REQUIRES_X86_F16C; 158 VBinaryCMicrokernelTester() 159 .batch_size(8) 160 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 161 } 162 TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_div_8)163 TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_div_8) { 164 TEST_REQUIRES_X86_F16C; 165 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 166 VBinaryCMicrokernelTester() 167 .batch_size(batch_size) 168 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 169 } 170 } 171 TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_lt_8)172 TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_lt_8) { 173 TEST_REQUIRES_X86_F16C; 174 for (size_t batch_size = 1; batch_size < 8; batch_size++) { 175 VBinaryCMicrokernelTester() 176 .batch_size(batch_size) 177 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 178 } 179 } 180 TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_gt_8)181 TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_gt_8) { 182 TEST_REQUIRES_X86_F16C; 183 for (size_t batch_size = 9; batch_size < 16; batch_size++) { 184 VBinaryCMicrokernelTester() 185 .batch_size(batch_size) 186 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 187 } 188 } 189 TEST(F16_VRDIVC_MINMAX__F16C_X8,inplace)190 TEST(F16_VRDIVC_MINMAX__F16C_X8, inplace) { 191 TEST_REQUIRES_X86_F16C; 192 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 193 VBinaryCMicrokernelTester() 194 .batch_size(batch_size) 195 .inplace(true) 196 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 197 } 198 } 199 TEST(F16_VRDIVC_MINMAX__F16C_X8,qmin)200 TEST(F16_VRDIVC_MINMAX__F16C_X8, qmin) { 201 TEST_REQUIRES_X86_F16C; 202 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 203 VBinaryCMicrokernelTester() 204 .batch_size(batch_size) 205 .qmin(128) 206 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 207 } 208 } 209 TEST(F16_VRDIVC_MINMAX__F16C_X8,qmax)210 TEST(F16_VRDIVC_MINMAX__F16C_X8, qmax) { 211 TEST_REQUIRES_X86_F16C; 212 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 213 VBinaryCMicrokernelTester() 214 .batch_size(batch_size) 215 .qmax(128) 216 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 217 } 218 } 219 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 220 221 222 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_eq_16)223 TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_eq_16) { 224 TEST_REQUIRES_X86_F16C; 225 VBinaryCMicrokernelTester() 226 .batch_size(16) 227 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 228 } 229 TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_div_16)230 TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_div_16) { 231 TEST_REQUIRES_X86_F16C; 232 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 233 VBinaryCMicrokernelTester() 234 .batch_size(batch_size) 235 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 236 } 237 } 238 TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_lt_16)239 TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_lt_16) { 240 TEST_REQUIRES_X86_F16C; 241 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 242 VBinaryCMicrokernelTester() 243 .batch_size(batch_size) 244 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 245 } 246 } 247 TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_gt_16)248 TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_gt_16) { 249 TEST_REQUIRES_X86_F16C; 250 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 251 VBinaryCMicrokernelTester() 252 .batch_size(batch_size) 253 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 254 } 255 } 256 TEST(F16_VRDIVC_MINMAX__F16C_X16,inplace)257 TEST(F16_VRDIVC_MINMAX__F16C_X16, inplace) { 258 TEST_REQUIRES_X86_F16C; 259 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 260 VBinaryCMicrokernelTester() 261 .batch_size(batch_size) 262 .inplace(true) 263 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 264 } 265 } 266 TEST(F16_VRDIVC_MINMAX__F16C_X16,qmin)267 TEST(F16_VRDIVC_MINMAX__F16C_X16, qmin) { 268 TEST_REQUIRES_X86_F16C; 269 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 270 VBinaryCMicrokernelTester() 271 .batch_size(batch_size) 272 .qmin(128) 273 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 274 } 275 } 276 TEST(F16_VRDIVC_MINMAX__F16C_X16,qmax)277 TEST(F16_VRDIVC_MINMAX__F16C_X16, qmax) { 278 TEST_REQUIRES_X86_F16C; 279 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 280 VBinaryCMicrokernelTester() 281 .batch_size(batch_size) 282 .qmax(128) 283 .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params); 284 } 285 } 286 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 287