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-velu.yaml 8 // Generator: tools/generate-vunary-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/vunary.h> 17 #include "vunary-microkernel-tester.h" 18 19 20 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_eq_8)21 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_eq_8) { 22 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 23 VUnaryMicrokernelTester() 24 .batch_size(8) 25 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 26 } 27 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_div_8)28 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_div_8) { 29 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 30 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 31 VUnaryMicrokernelTester() 32 .batch_size(batch_size) 33 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 34 } 35 } 36 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_lt_8)37 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_lt_8) { 38 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 39 for (size_t batch_size = 1; batch_size < 8; batch_size++) { 40 VUnaryMicrokernelTester() 41 .batch_size(batch_size) 42 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 43 } 44 } 45 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,batch_gt_8)46 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, batch_gt_8) { 47 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 48 for (size_t batch_size = 9; batch_size < 16; batch_size++) { 49 VUnaryMicrokernelTester() 50 .batch_size(batch_size) 51 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 52 } 53 } 54 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,inplace)55 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, inplace) { 56 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 57 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 58 VUnaryMicrokernelTester() 59 .batch_size(batch_size) 60 .inplace(true) 61 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 62 } 63 } 64 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,prescale)65 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, prescale) { 66 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 67 for (float prescale : std::vector<float>({0.1f, 10.0f})) { 68 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 69 VUnaryMicrokernelTester() 70 .batch_size(batch_size) 71 .prescale(prescale) 72 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 73 } 74 } 75 } 76 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,alpha)77 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, alpha) { 78 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 79 for (float alpha : std::vector<float>({0.3f, 3.0f})) { 80 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 81 VUnaryMicrokernelTester() 82 .batch_size(batch_size) 83 .alpha(alpha) 84 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 85 } 86 } 87 } 88 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8,beta)89 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X8, beta) { 90 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 91 for (float beta : std::vector<float>({0.3f, 3.0f})) { 92 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 93 VUnaryMicrokernelTester() 94 .batch_size(batch_size) 95 .beta(beta) 96 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x8, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 97 } 98 } 99 } 100 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 101 102 103 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_eq_16)104 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_eq_16) { 105 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 106 VUnaryMicrokernelTester() 107 .batch_size(16) 108 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 109 } 110 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_div_16)111 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_div_16) { 112 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 113 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 114 VUnaryMicrokernelTester() 115 .batch_size(batch_size) 116 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 117 } 118 } 119 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_lt_16)120 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_lt_16) { 121 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 122 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 123 VUnaryMicrokernelTester() 124 .batch_size(batch_size) 125 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 126 } 127 } 128 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,batch_gt_16)129 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, batch_gt_16) { 130 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 131 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 132 VUnaryMicrokernelTester() 133 .batch_size(batch_size) 134 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 135 } 136 } 137 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,inplace)138 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, inplace) { 139 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 140 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 141 VUnaryMicrokernelTester() 142 .batch_size(batch_size) 143 .inplace(true) 144 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 145 } 146 } 147 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,prescale)148 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, prescale) { 149 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 150 for (float prescale : std::vector<float>({0.1f, 10.0f})) { 151 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 152 VUnaryMicrokernelTester() 153 .batch_size(batch_size) 154 .prescale(prescale) 155 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 156 } 157 } 158 } 159 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,alpha)160 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, alpha) { 161 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 162 for (float alpha : std::vector<float>({0.3f, 3.0f})) { 163 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 164 VUnaryMicrokernelTester() 165 .batch_size(batch_size) 166 .alpha(alpha) 167 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 168 } 169 } 170 } 171 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16,beta)172 TEST(F16_VELU__NEONFP16ARITH_RR1_P3_X16, beta) { 173 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 174 for (float beta : std::vector<float>({0.3f, 3.0f})) { 175 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 176 VUnaryMicrokernelTester() 177 .batch_size(batch_size) 178 .beta(beta) 179 .Test(xnn_f16_velu_ukernel__neonfp16arith_rr1_p3_x16, xnn_init_f16_elu_neonfp16arith_rr1_p3_params); 180 } 181 } 182 } 183 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 184 185 186 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VELU__AVX2_RR1_P3_X8,batch_eq_8)187 TEST(F16_VELU__AVX2_RR1_P3_X8, batch_eq_8) { 188 TEST_REQUIRES_X86_AVX2; 189 VUnaryMicrokernelTester() 190 .batch_size(8) 191 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 192 } 193 TEST(F16_VELU__AVX2_RR1_P3_X8,batch_div_8)194 TEST(F16_VELU__AVX2_RR1_P3_X8, batch_div_8) { 195 TEST_REQUIRES_X86_AVX2; 196 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 197 VUnaryMicrokernelTester() 198 .batch_size(batch_size) 199 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 200 } 201 } 202 TEST(F16_VELU__AVX2_RR1_P3_X8,batch_lt_8)203 TEST(F16_VELU__AVX2_RR1_P3_X8, batch_lt_8) { 204 TEST_REQUIRES_X86_AVX2; 205 for (size_t batch_size = 1; batch_size < 8; batch_size++) { 206 VUnaryMicrokernelTester() 207 .batch_size(batch_size) 208 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 209 } 210 } 211 TEST(F16_VELU__AVX2_RR1_P3_X8,batch_gt_8)212 TEST(F16_VELU__AVX2_RR1_P3_X8, batch_gt_8) { 213 TEST_REQUIRES_X86_AVX2; 214 for (size_t batch_size = 9; batch_size < 16; batch_size++) { 215 VUnaryMicrokernelTester() 216 .batch_size(batch_size) 217 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 218 } 219 } 220 TEST(F16_VELU__AVX2_RR1_P3_X8,inplace)221 TEST(F16_VELU__AVX2_RR1_P3_X8, inplace) { 222 TEST_REQUIRES_X86_AVX2; 223 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 224 VUnaryMicrokernelTester() 225 .batch_size(batch_size) 226 .inplace(true) 227 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 228 } 229 } 230 TEST(F16_VELU__AVX2_RR1_P3_X8,prescale)231 TEST(F16_VELU__AVX2_RR1_P3_X8, prescale) { 232 TEST_REQUIRES_X86_AVX2; 233 for (float prescale : std::vector<float>({0.1f, 10.0f})) { 234 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 235 VUnaryMicrokernelTester() 236 .batch_size(batch_size) 237 .prescale(prescale) 238 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 239 } 240 } 241 } 242 TEST(F16_VELU__AVX2_RR1_P3_X8,alpha)243 TEST(F16_VELU__AVX2_RR1_P3_X8, alpha) { 244 TEST_REQUIRES_X86_AVX2; 245 for (float alpha : std::vector<float>({0.3f, 3.0f})) { 246 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 247 VUnaryMicrokernelTester() 248 .batch_size(batch_size) 249 .alpha(alpha) 250 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 251 } 252 } 253 } 254 TEST(F16_VELU__AVX2_RR1_P3_X8,beta)255 TEST(F16_VELU__AVX2_RR1_P3_X8, beta) { 256 TEST_REQUIRES_X86_AVX2; 257 for (float beta : std::vector<float>({0.3f, 3.0f})) { 258 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 259 VUnaryMicrokernelTester() 260 .batch_size(batch_size) 261 .beta(beta) 262 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x8, xnn_init_f16_elu_avx2_rr1_p3_params); 263 } 264 } 265 } 266 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 267 268 269 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VELU__AVX2_RR1_P3_X16,batch_eq_16)270 TEST(F16_VELU__AVX2_RR1_P3_X16, batch_eq_16) { 271 TEST_REQUIRES_X86_AVX2; 272 VUnaryMicrokernelTester() 273 .batch_size(16) 274 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 275 } 276 TEST(F16_VELU__AVX2_RR1_P3_X16,batch_div_16)277 TEST(F16_VELU__AVX2_RR1_P3_X16, batch_div_16) { 278 TEST_REQUIRES_X86_AVX2; 279 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 280 VUnaryMicrokernelTester() 281 .batch_size(batch_size) 282 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 283 } 284 } 285 TEST(F16_VELU__AVX2_RR1_P3_X16,batch_lt_16)286 TEST(F16_VELU__AVX2_RR1_P3_X16, batch_lt_16) { 287 TEST_REQUIRES_X86_AVX2; 288 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 289 VUnaryMicrokernelTester() 290 .batch_size(batch_size) 291 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 292 } 293 } 294 TEST(F16_VELU__AVX2_RR1_P3_X16,batch_gt_16)295 TEST(F16_VELU__AVX2_RR1_P3_X16, batch_gt_16) { 296 TEST_REQUIRES_X86_AVX2; 297 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 298 VUnaryMicrokernelTester() 299 .batch_size(batch_size) 300 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 301 } 302 } 303 TEST(F16_VELU__AVX2_RR1_P3_X16,inplace)304 TEST(F16_VELU__AVX2_RR1_P3_X16, inplace) { 305 TEST_REQUIRES_X86_AVX2; 306 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 307 VUnaryMicrokernelTester() 308 .batch_size(batch_size) 309 .inplace(true) 310 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 311 } 312 } 313 TEST(F16_VELU__AVX2_RR1_P3_X16,prescale)314 TEST(F16_VELU__AVX2_RR1_P3_X16, prescale) { 315 TEST_REQUIRES_X86_AVX2; 316 for (float prescale : std::vector<float>({0.1f, 10.0f})) { 317 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 318 VUnaryMicrokernelTester() 319 .batch_size(batch_size) 320 .prescale(prescale) 321 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 322 } 323 } 324 } 325 TEST(F16_VELU__AVX2_RR1_P3_X16,alpha)326 TEST(F16_VELU__AVX2_RR1_P3_X16, alpha) { 327 TEST_REQUIRES_X86_AVX2; 328 for (float alpha : std::vector<float>({0.3f, 3.0f})) { 329 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 330 VUnaryMicrokernelTester() 331 .batch_size(batch_size) 332 .alpha(alpha) 333 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 334 } 335 } 336 } 337 TEST(F16_VELU__AVX2_RR1_P3_X16,beta)338 TEST(F16_VELU__AVX2_RR1_P3_X16, beta) { 339 TEST_REQUIRES_X86_AVX2; 340 for (float beta : std::vector<float>({0.3f, 3.0f})) { 341 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 342 VUnaryMicrokernelTester() 343 .batch_size(batch_size) 344 .beta(beta) 345 .Test(xnn_f16_velu_ukernel__avx2_rr1_p3_x16, xnn_init_f16_elu_avx2_rr1_p3_params); 346 } 347 } 348 } 349 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 350