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