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-vmaxc.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 "vbinaryc-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_ARM64 TEST(F16_VMAXC__NEONFP16ARITH_X8,batch_eq_8)22*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8, batch_eq_8) { 23*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 24*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 25*4bdc9457SAndroid Build Coastguard Worker .batch_size(8) 26*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC); 27*4bdc9457SAndroid Build Coastguard Worker } 28*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8,batch_div_8)29*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__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 VBinaryCMicrokernelTester() 33*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 34*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC); 35*4bdc9457SAndroid Build Coastguard Worker } 36*4bdc9457SAndroid Build Coastguard Worker } 37*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8,batch_lt_8)38*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__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 VBinaryCMicrokernelTester() 42*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 43*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC); 44*4bdc9457SAndroid Build Coastguard Worker } 45*4bdc9457SAndroid Build Coastguard Worker } 46*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8,batch_gt_8)47*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__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 VBinaryCMicrokernelTester() 51*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker } 55*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8,inplace)56*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X8, inplace) { 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 VBinaryCMicrokernelTester() 60*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 61*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 62*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MaxC); 63*4bdc9457SAndroid Build Coastguard Worker } 64*4bdc9457SAndroid Build Coastguard Worker } 65*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 66*4bdc9457SAndroid Build Coastguard Worker 67*4bdc9457SAndroid Build Coastguard Worker 68*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_VMAXC__NEONFP16ARITH_X16,batch_eq_16)69*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_eq_16) { 70*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 71*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 72*4bdc9457SAndroid Build Coastguard Worker .batch_size(16) 73*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC); 74*4bdc9457SAndroid Build Coastguard Worker } 75*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16,batch_div_16)76*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_div_16) { 77*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 78*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 79*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 80*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 81*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC); 82*4bdc9457SAndroid Build Coastguard Worker } 83*4bdc9457SAndroid Build Coastguard Worker } 84*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16,batch_lt_16)85*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_lt_16) { 86*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 87*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 16; batch_size++) { 88*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 89*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 90*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC); 91*4bdc9457SAndroid Build Coastguard Worker } 92*4bdc9457SAndroid Build Coastguard Worker } 93*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16,batch_gt_16)94*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16, batch_gt_16) { 95*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 96*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 17; batch_size < 32; batch_size++) { 97*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 98*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 99*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC); 100*4bdc9457SAndroid Build Coastguard Worker } 101*4bdc9457SAndroid Build Coastguard Worker } 102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16,inplace)103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__NEONFP16ARITH_X16, inplace) { 104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 105*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 106*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 107*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 108*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MaxC); 110*4bdc9457SAndroid Build Coastguard Worker } 111*4bdc9457SAndroid Build Coastguard Worker } 112*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 113*4bdc9457SAndroid Build Coastguard Worker 114*4bdc9457SAndroid Build Coastguard Worker 115*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VMAXC__F16C_X8,batch_eq_8)116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8, batch_eq_8) { 117*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 118*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 119*4bdc9457SAndroid Build Coastguard Worker .batch_size(8) 120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC); 121*4bdc9457SAndroid Build Coastguard Worker } 122*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8,batch_div_8)123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8, batch_div_8) { 124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 125*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 126*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 127*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 128*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC); 129*4bdc9457SAndroid Build Coastguard Worker } 130*4bdc9457SAndroid Build Coastguard Worker } 131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8,batch_lt_8)132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8, batch_lt_8) { 133*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 134*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 8; batch_size++) { 135*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 136*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 137*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC); 138*4bdc9457SAndroid Build Coastguard Worker } 139*4bdc9457SAndroid Build Coastguard Worker } 140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8,batch_gt_8)141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8, batch_gt_8) { 142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 143*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 9; batch_size < 16; batch_size++) { 144*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 145*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC); 147*4bdc9457SAndroid Build Coastguard Worker } 148*4bdc9457SAndroid Build Coastguard Worker } 149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8,inplace)150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X8, inplace) { 151*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 152*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 153*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 154*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 155*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MaxC); 157*4bdc9457SAndroid Build Coastguard Worker } 158*4bdc9457SAndroid Build Coastguard Worker } 159*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 160*4bdc9457SAndroid Build Coastguard Worker 161*4bdc9457SAndroid Build Coastguard Worker 162*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_VMAXC__F16C_X16,batch_eq_16)163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16, batch_eq_16) { 164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 165*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 166*4bdc9457SAndroid Build Coastguard Worker .batch_size(16) 167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC); 168*4bdc9457SAndroid Build Coastguard Worker } 169*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16,batch_div_16)170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16, batch_div_16) { 171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 172*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 173*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 174*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 175*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC); 176*4bdc9457SAndroid Build Coastguard Worker } 177*4bdc9457SAndroid Build Coastguard Worker } 178*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16,batch_lt_16)179*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16, batch_lt_16) { 180*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 181*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 16; batch_size++) { 182*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 183*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 184*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC); 185*4bdc9457SAndroid Build Coastguard Worker } 186*4bdc9457SAndroid Build Coastguard Worker } 187*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16,batch_gt_16)188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16, batch_gt_16) { 189*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 190*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 17; batch_size < 32; batch_size++) { 191*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 192*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 193*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC); 194*4bdc9457SAndroid Build Coastguard Worker } 195*4bdc9457SAndroid Build Coastguard Worker } 196*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16,inplace)197*4bdc9457SAndroid Build Coastguard Worker TEST(F16_VMAXC__F16C_X16, inplace) { 198*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_F16C; 199*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 200*4bdc9457SAndroid Build Coastguard Worker VBinaryCMicrokernelTester() 201*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 202*4bdc9457SAndroid Build Coastguard Worker .inplace(true) 203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_vmaxc_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MaxC); 204*4bdc9457SAndroid Build Coastguard Worker } 205*4bdc9457SAndroid Build Coastguard Worker } 206*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 207