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-vlrelu.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_VLRELU__NEONFP16ARITH_X8,batch_eq_8)21 TEST(F16_VLRELU__NEONFP16ARITH_X8, batch_eq_8) { 22 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 23 VUnaryMicrokernelTester() 24 .batch_size(8) 25 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 26 } 27 TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_div_8)28 TEST(F16_VLRELU__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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 34 } 35 } 36 TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_lt_8)37 TEST(F16_VLRELU__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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 43 } 44 } 45 TEST(F16_VLRELU__NEONFP16ARITH_X8,batch_gt_8)46 TEST(F16_VLRELU__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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 52 } 53 } 54 TEST(F16_VLRELU__NEONFP16ARITH_X8,inplace)55 TEST(F16_VLRELU__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_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 62 } 63 } 64 TEST(F16_VLRELU__NEONFP16ARITH_X8,slope)65 TEST(F16_VLRELU__NEONFP16ARITH_X8, slope) { 66 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 67 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) { 68 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 69 VUnaryMicrokernelTester() 70 .batch_size(batch_size) 71 .slope(slope) 72 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x8, xnn_init_f16_lrelu_neon_params); 73 } 74 } 75 } 76 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 77 78 79 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_eq_16)80 TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_eq_16) { 81 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 82 VUnaryMicrokernelTester() 83 .batch_size(16) 84 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 85 } 86 TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_div_16)87 TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_div_16) { 88 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 89 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 90 VUnaryMicrokernelTester() 91 .batch_size(batch_size) 92 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 93 } 94 } 95 TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_lt_16)96 TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_lt_16) { 97 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 98 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 99 VUnaryMicrokernelTester() 100 .batch_size(batch_size) 101 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 102 } 103 } 104 TEST(F16_VLRELU__NEONFP16ARITH_X16,batch_gt_16)105 TEST(F16_VLRELU__NEONFP16ARITH_X16, batch_gt_16) { 106 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 107 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 108 VUnaryMicrokernelTester() 109 .batch_size(batch_size) 110 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 111 } 112 } 113 TEST(F16_VLRELU__NEONFP16ARITH_X16,inplace)114 TEST(F16_VLRELU__NEONFP16ARITH_X16, inplace) { 115 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 116 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 117 VUnaryMicrokernelTester() 118 .batch_size(batch_size) 119 .inplace(true) 120 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 121 } 122 } 123 TEST(F16_VLRELU__NEONFP16ARITH_X16,slope)124 TEST(F16_VLRELU__NEONFP16ARITH_X16, slope) { 125 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 126 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) { 127 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 128 VUnaryMicrokernelTester() 129 .batch_size(batch_size) 130 .slope(slope) 131 .Test(xnn_f16_vlrelu_ukernel__neonfp16arith_x16, xnn_init_f16_lrelu_neon_params); 132 } 133 } 134 } 135 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 136 137 138 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VLRELU__F16C_X8,batch_eq_8)139 TEST(F16_VLRELU__F16C_X8, batch_eq_8) { 140 TEST_REQUIRES_X86_F16C; 141 VUnaryMicrokernelTester() 142 .batch_size(8) 143 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 144 } 145 TEST(F16_VLRELU__F16C_X8,batch_div_8)146 TEST(F16_VLRELU__F16C_X8, batch_div_8) { 147 TEST_REQUIRES_X86_F16C; 148 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 149 VUnaryMicrokernelTester() 150 .batch_size(batch_size) 151 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 152 } 153 } 154 TEST(F16_VLRELU__F16C_X8,batch_lt_8)155 TEST(F16_VLRELU__F16C_X8, batch_lt_8) { 156 TEST_REQUIRES_X86_F16C; 157 for (size_t batch_size = 1; batch_size < 8; batch_size++) { 158 VUnaryMicrokernelTester() 159 .batch_size(batch_size) 160 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 161 } 162 } 163 TEST(F16_VLRELU__F16C_X8,batch_gt_8)164 TEST(F16_VLRELU__F16C_X8, batch_gt_8) { 165 TEST_REQUIRES_X86_F16C; 166 for (size_t batch_size = 9; batch_size < 16; batch_size++) { 167 VUnaryMicrokernelTester() 168 .batch_size(batch_size) 169 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 170 } 171 } 172 TEST(F16_VLRELU__F16C_X8,inplace)173 TEST(F16_VLRELU__F16C_X8, inplace) { 174 TEST_REQUIRES_X86_F16C; 175 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 176 VUnaryMicrokernelTester() 177 .batch_size(batch_size) 178 .inplace(true) 179 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 180 } 181 } 182 TEST(F16_VLRELU__F16C_X8,slope)183 TEST(F16_VLRELU__F16C_X8, slope) { 184 TEST_REQUIRES_X86_F16C; 185 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) { 186 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 187 VUnaryMicrokernelTester() 188 .batch_size(batch_size) 189 .slope(slope) 190 .Test(xnn_f16_vlrelu_ukernel__f16c_x8, xnn_init_f16_lrelu_avx_params); 191 } 192 } 193 } 194 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 195 196 197 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VLRELU__F16C_X16,batch_eq_16)198 TEST(F16_VLRELU__F16C_X16, batch_eq_16) { 199 TEST_REQUIRES_X86_F16C; 200 VUnaryMicrokernelTester() 201 .batch_size(16) 202 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 203 } 204 TEST(F16_VLRELU__F16C_X16,batch_div_16)205 TEST(F16_VLRELU__F16C_X16, batch_div_16) { 206 TEST_REQUIRES_X86_F16C; 207 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 208 VUnaryMicrokernelTester() 209 .batch_size(batch_size) 210 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 211 } 212 } 213 TEST(F16_VLRELU__F16C_X16,batch_lt_16)214 TEST(F16_VLRELU__F16C_X16, batch_lt_16) { 215 TEST_REQUIRES_X86_F16C; 216 for (size_t batch_size = 1; batch_size < 16; batch_size++) { 217 VUnaryMicrokernelTester() 218 .batch_size(batch_size) 219 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 220 } 221 } 222 TEST(F16_VLRELU__F16C_X16,batch_gt_16)223 TEST(F16_VLRELU__F16C_X16, batch_gt_16) { 224 TEST_REQUIRES_X86_F16C; 225 for (size_t batch_size = 17; batch_size < 32; batch_size++) { 226 VUnaryMicrokernelTester() 227 .batch_size(batch_size) 228 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 229 } 230 } 231 TEST(F16_VLRELU__F16C_X16,inplace)232 TEST(F16_VLRELU__F16C_X16, inplace) { 233 TEST_REQUIRES_X86_F16C; 234 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 235 VUnaryMicrokernelTester() 236 .batch_size(batch_size) 237 .inplace(true) 238 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 239 } 240 } 241 TEST(F16_VLRELU__F16C_X16,slope)242 TEST(F16_VLRELU__F16C_X16, slope) { 243 TEST_REQUIRES_X86_F16C; 244 for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) { 245 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 246 VUnaryMicrokernelTester() 247 .batch_size(batch_size) 248 .slope(slope) 249 .Test(xnn_f16_vlrelu_ukernel__f16c_x16, xnn_init_f16_lrelu_avx_params); 250 } 251 } 252 } 253 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 254