1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 2*4bdc9457SAndroid Build Coastguard Worker // 3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit! 7*4bdc9457SAndroid Build Coastguard Worker // Specification: test/f16-prelu.yaml 8*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-prelu-test.py 9*4bdc9457SAndroid Build Coastguard Worker 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h> 12*4bdc9457SAndroid Build Coastguard Worker 13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h> 15*4bdc9457SAndroid Build Coastguard Worker 16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/prelu.h> 17*4bdc9457SAndroid Build Coastguard Worker #include "prelu-microkernel-tester.h" 18*4bdc9457SAndroid Build Coastguard Worker 19*4bdc9457SAndroid Build Coastguard Worker 20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_PRELU__NEONFP16ARITH_2X8,channels_eq_8)21*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, channels_eq_8) { 22*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 23*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 24*4bdc9457SAndroid Build Coastguard Worker .rows(2) 25*4bdc9457SAndroid Build Coastguard Worker .channels(8) 26*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 27*4bdc9457SAndroid Build Coastguard Worker } 28*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,channels_div_8)29*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, channels_div_8) { 30*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 31*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) { 32*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 33*4bdc9457SAndroid Build Coastguard Worker .rows(2) 34*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 35*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 36*4bdc9457SAndroid Build Coastguard Worker } 37*4bdc9457SAndroid Build Coastguard Worker } 38*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,channels_lt_8)39*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, channels_lt_8) { 40*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 41*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) { 42*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 43*4bdc9457SAndroid Build Coastguard Worker .rows(2) 44*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 45*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 46*4bdc9457SAndroid Build Coastguard Worker } 47*4bdc9457SAndroid Build Coastguard Worker } 48*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,channels_gt_8)49*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, channels_gt_8) { 50*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 51*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) { 52*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 53*4bdc9457SAndroid Build Coastguard Worker .rows(2) 54*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 55*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 56*4bdc9457SAndroid Build Coastguard Worker } 57*4bdc9457SAndroid Build Coastguard Worker } 58*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,rows_lt_2)59*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, rows_lt_2) { 60*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 61*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) { 62*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 63*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 64*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 65*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 66*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 67*4bdc9457SAndroid Build Coastguard Worker } 68*4bdc9457SAndroid Build Coastguard Worker } 69*4bdc9457SAndroid Build Coastguard Worker } 70*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,rows_div_2)71*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, rows_div_2) { 72*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 73*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) { 74*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 75*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 76*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 77*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 78*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 79*4bdc9457SAndroid Build Coastguard Worker } 80*4bdc9457SAndroid Build Coastguard Worker } 81*4bdc9457SAndroid Build Coastguard Worker } 82*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,rows_gt_2)83*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, rows_gt_2) { 84*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 85*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) { 86*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 87*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 88*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 89*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 90*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 91*4bdc9457SAndroid Build Coastguard Worker } 92*4bdc9457SAndroid Build Coastguard Worker } 93*4bdc9457SAndroid Build Coastguard Worker } 94*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,input_stride)95*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, input_stride) { 96*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 97*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 98*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 99*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 100*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 101*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 102*4bdc9457SAndroid Build Coastguard Worker .input_stride(43) 103*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 104*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 105*4bdc9457SAndroid Build Coastguard Worker } 106*4bdc9457SAndroid Build Coastguard Worker } 107*4bdc9457SAndroid Build Coastguard Worker } 108*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,output_stride)109*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, output_stride) { 110*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 111*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 112*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 113*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 114*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 115*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 116*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 117*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 119*4bdc9457SAndroid Build Coastguard Worker } 120*4bdc9457SAndroid Build Coastguard Worker } 121*4bdc9457SAndroid Build Coastguard Worker } 122*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8,inplace)123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X8, inplace) { 124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 125*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 126*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 127*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 128*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 129*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 130*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 131*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x8); 133*4bdc9457SAndroid Build Coastguard Worker } 134*4bdc9457SAndroid Build Coastguard Worker } 135*4bdc9457SAndroid Build Coastguard Worker } 136*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 137*4bdc9457SAndroid Build Coastguard Worker 138*4bdc9457SAndroid Build Coastguard Worker 139*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_PRELU__NEONFP16ARITH_2X16,channels_eq_16)140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, channels_eq_16) { 141*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 142*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 143*4bdc9457SAndroid Build Coastguard Worker .rows(2) 144*4bdc9457SAndroid Build Coastguard Worker .channels(16) 145*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 146*4bdc9457SAndroid Build Coastguard Worker } 147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,channels_div_16)148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, channels_div_16) { 149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 150*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 32; channels < 160; channels += 16) { 151*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 152*4bdc9457SAndroid Build Coastguard Worker .rows(2) 153*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 155*4bdc9457SAndroid Build Coastguard Worker } 156*4bdc9457SAndroid Build Coastguard Worker } 157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,channels_lt_16)158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, channels_lt_16) { 159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 160*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 16; channels++) { 161*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 162*4bdc9457SAndroid Build Coastguard Worker .rows(2) 163*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 164*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 165*4bdc9457SAndroid Build Coastguard Worker } 166*4bdc9457SAndroid Build Coastguard Worker } 167*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,channels_gt_16)168*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, channels_gt_16) { 169*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 170*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 17; channels < 32; channels++) { 171*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 172*4bdc9457SAndroid Build Coastguard Worker .rows(2) 173*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 174*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 175*4bdc9457SAndroid Build Coastguard Worker } 176*4bdc9457SAndroid Build Coastguard Worker } 177*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,rows_lt_2)178*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, rows_lt_2) { 179*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 180*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) { 181*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 182*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 183*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 184*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 186*4bdc9457SAndroid Build Coastguard Worker } 187*4bdc9457SAndroid Build Coastguard Worker } 188*4bdc9457SAndroid Build Coastguard Worker } 189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,rows_div_2)190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, rows_div_2) { 191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 192*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) { 193*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 194*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 195*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 196*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 197*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 198*4bdc9457SAndroid Build Coastguard Worker } 199*4bdc9457SAndroid Build Coastguard Worker } 200*4bdc9457SAndroid Build Coastguard Worker } 201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,rows_gt_2)202*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, rows_gt_2) { 203*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 204*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) { 205*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 206*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 207*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 208*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 209*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 210*4bdc9457SAndroid Build Coastguard Worker } 211*4bdc9457SAndroid Build Coastguard Worker } 212*4bdc9457SAndroid Build Coastguard Worker } 213*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,input_stride)214*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, input_stride) { 215*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 216*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 217*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 218*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 219*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 220*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 221*4bdc9457SAndroid Build Coastguard Worker .input_stride(83) 222*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 223*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 224*4bdc9457SAndroid Build Coastguard Worker } 225*4bdc9457SAndroid Build Coastguard Worker } 226*4bdc9457SAndroid Build Coastguard Worker } 227*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,output_stride)228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, output_stride) { 229*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 230*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 231*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 232*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 233*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 234*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 235*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 236*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 238*4bdc9457SAndroid Build Coastguard Worker } 239*4bdc9457SAndroid Build Coastguard Worker } 240*4bdc9457SAndroid Build Coastguard Worker } 241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16,inplace)242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__NEONFP16ARITH_2X16, inplace) { 243*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 244*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 245*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 246*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 247*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 248*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 249*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 250*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 251*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__neonfp16arith_2x16); 252*4bdc9457SAndroid Build Coastguard Worker } 253*4bdc9457SAndroid Build Coastguard Worker } 254*4bdc9457SAndroid Build Coastguard Worker } 255*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 256*4bdc9457SAndroid Build Coastguard Worker 257*4bdc9457SAndroid Build Coastguard Worker 258*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_PRELU__F16C_2X8,channels_eq_8)259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, channels_eq_8) { 260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 261*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 262*4bdc9457SAndroid Build Coastguard Worker .rows(2) 263*4bdc9457SAndroid Build Coastguard Worker .channels(8) 264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 265*4bdc9457SAndroid Build Coastguard Worker } 266*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,channels_div_8)267*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, channels_div_8) { 268*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 269*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) { 270*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 271*4bdc9457SAndroid Build Coastguard Worker .rows(2) 272*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 273*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 274*4bdc9457SAndroid Build Coastguard Worker } 275*4bdc9457SAndroid Build Coastguard Worker } 276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,channels_lt_8)277*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, channels_lt_8) { 278*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 279*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) { 280*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 281*4bdc9457SAndroid Build Coastguard Worker .rows(2) 282*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 283*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 284*4bdc9457SAndroid Build Coastguard Worker } 285*4bdc9457SAndroid Build Coastguard Worker } 286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,channels_gt_8)287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, channels_gt_8) { 288*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 289*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) { 290*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 291*4bdc9457SAndroid Build Coastguard Worker .rows(2) 292*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 293*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 294*4bdc9457SAndroid Build Coastguard Worker } 295*4bdc9457SAndroid Build Coastguard Worker } 296*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,rows_lt_2)297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, rows_lt_2) { 298*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 299*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) { 300*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 301*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 302*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 303*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 304*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 305*4bdc9457SAndroid Build Coastguard Worker } 306*4bdc9457SAndroid Build Coastguard Worker } 307*4bdc9457SAndroid Build Coastguard Worker } 308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,rows_div_2)309*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, rows_div_2) { 310*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 311*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) { 312*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 313*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 314*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 315*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 316*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 317*4bdc9457SAndroid Build Coastguard Worker } 318*4bdc9457SAndroid Build Coastguard Worker } 319*4bdc9457SAndroid Build Coastguard Worker } 320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,rows_gt_2)321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, rows_gt_2) { 322*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 323*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) { 324*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 325*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 326*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 327*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 328*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 329*4bdc9457SAndroid Build Coastguard Worker } 330*4bdc9457SAndroid Build Coastguard Worker } 331*4bdc9457SAndroid Build Coastguard Worker } 332*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,input_stride)333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, input_stride) { 334*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 335*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 336*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 337*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 338*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 339*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 340*4bdc9457SAndroid Build Coastguard Worker .input_stride(43) 341*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 343*4bdc9457SAndroid Build Coastguard Worker } 344*4bdc9457SAndroid Build Coastguard Worker } 345*4bdc9457SAndroid Build Coastguard Worker } 346*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,output_stride)347*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, output_stride) { 348*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 349*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 350*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 351*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 352*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 353*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 354*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 355*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 356*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 357*4bdc9457SAndroid Build Coastguard Worker } 358*4bdc9457SAndroid Build Coastguard Worker } 359*4bdc9457SAndroid Build Coastguard Worker } 360*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8,inplace)361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X8, inplace) { 362*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 363*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 364*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 365*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 366*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 367*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 368*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 369*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 370*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x8); 371*4bdc9457SAndroid Build Coastguard Worker } 372*4bdc9457SAndroid Build Coastguard Worker } 373*4bdc9457SAndroid Build Coastguard Worker } 374*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 375*4bdc9457SAndroid Build Coastguard Worker 376*4bdc9457SAndroid Build Coastguard Worker 377*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_PRELU__F16C_2X16,channels_eq_16)378*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, channels_eq_16) { 379*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 380*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 381*4bdc9457SAndroid Build Coastguard Worker .rows(2) 382*4bdc9457SAndroid Build Coastguard Worker .channels(16) 383*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 384*4bdc9457SAndroid Build Coastguard Worker } 385*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,channels_div_16)386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, channels_div_16) { 387*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 388*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 32; channels < 160; channels += 16) { 389*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 390*4bdc9457SAndroid Build Coastguard Worker .rows(2) 391*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 393*4bdc9457SAndroid Build Coastguard Worker } 394*4bdc9457SAndroid Build Coastguard Worker } 395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,channels_lt_16)396*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, channels_lt_16) { 397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 398*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 16; channels++) { 399*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 400*4bdc9457SAndroid Build Coastguard Worker .rows(2) 401*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 403*4bdc9457SAndroid Build Coastguard Worker } 404*4bdc9457SAndroid Build Coastguard Worker } 405*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,channels_gt_16)406*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, channels_gt_16) { 407*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 408*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 17; channels < 32; channels++) { 409*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 410*4bdc9457SAndroid Build Coastguard Worker .rows(2) 411*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 413*4bdc9457SAndroid Build Coastguard Worker } 414*4bdc9457SAndroid Build Coastguard Worker } 415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,rows_lt_2)416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, rows_lt_2) { 417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 418*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) { 419*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 420*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 421*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 422*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 424*4bdc9457SAndroid Build Coastguard Worker } 425*4bdc9457SAndroid Build Coastguard Worker } 426*4bdc9457SAndroid Build Coastguard Worker } 427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,rows_div_2)428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, rows_div_2) { 429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 430*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) { 431*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 432*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 433*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 434*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 435*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 436*4bdc9457SAndroid Build Coastguard Worker } 437*4bdc9457SAndroid Build Coastguard Worker } 438*4bdc9457SAndroid Build Coastguard Worker } 439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,rows_gt_2)440*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, rows_gt_2) { 441*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 442*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) { 443*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 444*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 445*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 446*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 448*4bdc9457SAndroid Build Coastguard Worker } 449*4bdc9457SAndroid Build Coastguard Worker } 450*4bdc9457SAndroid Build Coastguard Worker } 451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,input_stride)452*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, input_stride) { 453*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 454*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 455*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 456*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 457*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 458*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 459*4bdc9457SAndroid Build Coastguard Worker .input_stride(83) 460*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 461*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 462*4bdc9457SAndroid Build Coastguard Worker } 463*4bdc9457SAndroid Build Coastguard Worker } 464*4bdc9457SAndroid Build Coastguard Worker } 465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,output_stride)466*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, output_stride) { 467*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 468*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 469*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 470*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 471*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 472*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 473*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 474*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 475*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 476*4bdc9457SAndroid Build Coastguard Worker } 477*4bdc9457SAndroid Build Coastguard Worker } 478*4bdc9457SAndroid Build Coastguard Worker } 479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16,inplace)480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_PRELU__F16C_2X16, inplace) { 481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 482*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) { 483*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 484*4bdc9457SAndroid Build Coastguard Worker PReLUMicrokernelTester() 485*4bdc9457SAndroid Build Coastguard Worker .rows(rows) 486*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 487*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 488*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 489*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_prelu_ukernel__f16c_2x16); 490*4bdc9457SAndroid Build Coastguard Worker } 491*4bdc9457SAndroid Build Coastguard Worker } 492*4bdc9457SAndroid Build Coastguard Worker } 493*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 494