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