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