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/qu8-vmul-minmax-rndnu.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/vmul.h> 18*4bdc9457SAndroid Build Coastguard Worker #include "vmul-microkernel-tester.h" 19*4bdc9457SAndroid Build Coastguard Worker 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,batch_eq_8)22*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, batch_eq_8) { 23*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 24*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 25*4bdc9457SAndroid Build Coastguard Worker .batch_size(8) 26*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 27*4bdc9457SAndroid Build Coastguard Worker } 28*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,batch_div_8)29*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, batch_div_8) { 30*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 31*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 16; batch_size < 80; batch_size += 8) { 32*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 33*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 34*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 35*4bdc9457SAndroid Build Coastguard Worker } 36*4bdc9457SAndroid Build Coastguard Worker } 37*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,batch_lt_8)38*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, batch_lt_8) { 39*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 40*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 8; batch_size++) { 41*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 42*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 43*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 44*4bdc9457SAndroid Build Coastguard Worker } 45*4bdc9457SAndroid Build Coastguard Worker } 46*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,batch_gt_8)47*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, batch_gt_8) { 48*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 49*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 9; batch_size < 16; batch_size++) { 50*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 51*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker } 55*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,inplace_a)56*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, inplace_a) { 57*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 58*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 59*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 60*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 61*4bdc9457SAndroid Build Coastguard Worker .inplace_a(true) 62*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 63*4bdc9457SAndroid Build Coastguard Worker } 64*4bdc9457SAndroid Build Coastguard Worker } 65*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,inplace_b)66*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, inplace_b) { 67*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 68*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 69*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 70*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 71*4bdc9457SAndroid Build Coastguard Worker .inplace_b(true) 72*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 73*4bdc9457SAndroid Build Coastguard Worker } 74*4bdc9457SAndroid Build Coastguard Worker } 75*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,inplace_a_and_b)76*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, inplace_a_and_b) { 77*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 78*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 79*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 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_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 84*4bdc9457SAndroid Build Coastguard Worker } 85*4bdc9457SAndroid Build Coastguard Worker } 86*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,a_zero_point)87*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, a_zero_point) { 88*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 89*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 90*4bdc9457SAndroid Build Coastguard Worker for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) { 91*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 92*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 93*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(a_zero_point) 94*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 95*4bdc9457SAndroid Build Coastguard Worker } 96*4bdc9457SAndroid Build Coastguard Worker } 97*4bdc9457SAndroid Build Coastguard Worker } 98*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,b_zero_point)99*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, b_zero_point) { 100*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 101*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 102*4bdc9457SAndroid Build Coastguard Worker for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) { 103*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 104*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 105*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(b_zero_point) 106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 107*4bdc9457SAndroid Build Coastguard Worker } 108*4bdc9457SAndroid Build Coastguard Worker } 109*4bdc9457SAndroid Build Coastguard Worker } 110*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,y_zero_point)111*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, y_zero_point) { 112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 113*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 114*4bdc9457SAndroid Build Coastguard Worker for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) { 115*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 116*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 117*4bdc9457SAndroid Build Coastguard Worker .y_zero_point(y_zero_point) 118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 119*4bdc9457SAndroid Build Coastguard Worker } 120*4bdc9457SAndroid Build Coastguard Worker } 121*4bdc9457SAndroid Build Coastguard Worker } 122*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,a_scale)123*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, a_scale) { 124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 125*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 126*4bdc9457SAndroid Build Coastguard Worker for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) { 127*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 128*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 129*4bdc9457SAndroid Build Coastguard Worker .a_scale(a_scale) 130*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 131*4bdc9457SAndroid Build Coastguard Worker } 132*4bdc9457SAndroid Build Coastguard Worker } 133*4bdc9457SAndroid Build Coastguard Worker } 134*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,b_scale)135*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, b_scale) { 136*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 137*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 138*4bdc9457SAndroid Build Coastguard Worker for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) { 139*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 140*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 141*4bdc9457SAndroid Build Coastguard Worker .b_scale(b_scale) 142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 143*4bdc9457SAndroid Build Coastguard Worker } 144*4bdc9457SAndroid Build Coastguard Worker } 145*4bdc9457SAndroid Build Coastguard Worker } 146*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,y_scale)147*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, y_scale) { 148*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 149*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 150*4bdc9457SAndroid Build Coastguard Worker for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) { 151*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 152*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 153*4bdc9457SAndroid Build Coastguard Worker .y_scale(y_scale) 154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 155*4bdc9457SAndroid Build Coastguard Worker } 156*4bdc9457SAndroid Build Coastguard Worker } 157*4bdc9457SAndroid Build Coastguard Worker } 158*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,qmin)159*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, qmin) { 160*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 161*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 162*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 163*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 164*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 165*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 166*4bdc9457SAndroid Build Coastguard Worker } 167*4bdc9457SAndroid Build Coastguard Worker } 168*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8,qmax)169*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X8, qmax) { 170*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 171*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) { 172*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 173*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 174*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 175*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 176*4bdc9457SAndroid Build Coastguard Worker } 177*4bdc9457SAndroid Build Coastguard Worker } 178*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 179*4bdc9457SAndroid Build Coastguard Worker 180*4bdc9457SAndroid Build Coastguard Worker 181*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,batch_eq_16)182*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, batch_eq_16) { 183*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 184*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 185*4bdc9457SAndroid Build Coastguard Worker .batch_size(16) 186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 187*4bdc9457SAndroid Build Coastguard Worker } 188*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,batch_div_16)189*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, batch_div_16) { 190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 191*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 192*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 193*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 194*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 195*4bdc9457SAndroid Build Coastguard Worker } 196*4bdc9457SAndroid Build Coastguard Worker } 197*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,batch_lt_16)198*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, batch_lt_16) { 199*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 200*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 16; batch_size++) { 201*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 202*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 204*4bdc9457SAndroid Build Coastguard Worker } 205*4bdc9457SAndroid Build Coastguard Worker } 206*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,batch_gt_16)207*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, batch_gt_16) { 208*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 209*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 17; batch_size < 32; batch_size++) { 210*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 211*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 212*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 213*4bdc9457SAndroid Build Coastguard Worker } 214*4bdc9457SAndroid Build Coastguard Worker } 215*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,inplace_a)216*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, inplace_a) { 217*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 218*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 219*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 220*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 221*4bdc9457SAndroid Build Coastguard Worker .inplace_a(true) 222*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 223*4bdc9457SAndroid Build Coastguard Worker } 224*4bdc9457SAndroid Build Coastguard Worker } 225*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,inplace_b)226*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, inplace_b) { 227*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 228*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 229*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 230*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 231*4bdc9457SAndroid Build Coastguard Worker .inplace_b(true) 232*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 233*4bdc9457SAndroid Build Coastguard Worker } 234*4bdc9457SAndroid Build Coastguard Worker } 235*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,inplace_a_and_b)236*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, inplace_a_and_b) { 237*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 238*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 239*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 240*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 241*4bdc9457SAndroid Build Coastguard Worker .inplace_a(true) 242*4bdc9457SAndroid Build Coastguard Worker .inplace_b(true) 243*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 244*4bdc9457SAndroid Build Coastguard Worker } 245*4bdc9457SAndroid Build Coastguard Worker } 246*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,a_zero_point)247*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, a_zero_point) { 248*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 249*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 250*4bdc9457SAndroid Build Coastguard Worker for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) { 251*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 252*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 253*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(a_zero_point) 254*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 255*4bdc9457SAndroid Build Coastguard Worker } 256*4bdc9457SAndroid Build Coastguard Worker } 257*4bdc9457SAndroid Build Coastguard Worker } 258*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,b_zero_point)259*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, b_zero_point) { 260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 261*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 262*4bdc9457SAndroid Build Coastguard Worker for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) { 263*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 264*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 265*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(b_zero_point) 266*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 267*4bdc9457SAndroid Build Coastguard Worker } 268*4bdc9457SAndroid Build Coastguard Worker } 269*4bdc9457SAndroid Build Coastguard Worker } 270*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,y_zero_point)271*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, y_zero_point) { 272*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 273*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 274*4bdc9457SAndroid Build Coastguard Worker for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) { 275*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 276*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 277*4bdc9457SAndroid Build Coastguard Worker .y_zero_point(y_zero_point) 278*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 279*4bdc9457SAndroid Build Coastguard Worker } 280*4bdc9457SAndroid Build Coastguard Worker } 281*4bdc9457SAndroid Build Coastguard Worker } 282*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,a_scale)283*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, a_scale) { 284*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 285*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 286*4bdc9457SAndroid Build Coastguard Worker for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) { 287*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 288*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 289*4bdc9457SAndroid Build Coastguard Worker .a_scale(a_scale) 290*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 291*4bdc9457SAndroid Build Coastguard Worker } 292*4bdc9457SAndroid Build Coastguard Worker } 293*4bdc9457SAndroid Build Coastguard Worker } 294*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,b_scale)295*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, b_scale) { 296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 297*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 298*4bdc9457SAndroid Build Coastguard Worker for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) { 299*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 300*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 301*4bdc9457SAndroid Build Coastguard Worker .b_scale(b_scale) 302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 303*4bdc9457SAndroid Build Coastguard Worker } 304*4bdc9457SAndroid Build Coastguard Worker } 305*4bdc9457SAndroid Build Coastguard Worker } 306*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,y_scale)307*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, y_scale) { 308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 309*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 310*4bdc9457SAndroid Build Coastguard Worker for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) { 311*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 312*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 313*4bdc9457SAndroid Build Coastguard Worker .y_scale(y_scale) 314*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 315*4bdc9457SAndroid Build Coastguard Worker } 316*4bdc9457SAndroid Build Coastguard Worker } 317*4bdc9457SAndroid Build Coastguard Worker } 318*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,qmin)319*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, qmin) { 320*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 321*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 322*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 323*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 324*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 325*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 326*4bdc9457SAndroid Build Coastguard Worker } 327*4bdc9457SAndroid Build Coastguard Worker } 328*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16,qmax)329*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD64_X16, qmax) { 330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 331*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 332*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 333*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 334*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 335*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 336*4bdc9457SAndroid Build Coastguard Worker } 337*4bdc9457SAndroid Build Coastguard Worker } 338*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 339*4bdc9457SAndroid Build Coastguard Worker 340*4bdc9457SAndroid Build Coastguard Worker 341*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,batch_eq_16)342*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, batch_eq_16) { 343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 344*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 345*4bdc9457SAndroid Build Coastguard Worker .batch_size(16) 346*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 347*4bdc9457SAndroid Build Coastguard Worker } 348*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,batch_div_16)349*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, batch_div_16) { 350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 351*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 32; batch_size < 160; batch_size += 16) { 352*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 353*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 355*4bdc9457SAndroid Build Coastguard Worker } 356*4bdc9457SAndroid Build Coastguard Worker } 357*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,batch_lt_16)358*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, batch_lt_16) { 359*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 360*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size < 16; batch_size++) { 361*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 362*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 363*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 364*4bdc9457SAndroid Build Coastguard Worker } 365*4bdc9457SAndroid Build Coastguard Worker } 366*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,batch_gt_16)367*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, batch_gt_16) { 368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 369*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 17; batch_size < 32; batch_size++) { 370*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 371*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 372*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 373*4bdc9457SAndroid Build Coastguard Worker } 374*4bdc9457SAndroid Build Coastguard Worker } 375*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,inplace_a)376*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, inplace_a) { 377*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 378*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 379*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 380*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 381*4bdc9457SAndroid Build Coastguard Worker .inplace_a(true) 382*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 383*4bdc9457SAndroid Build Coastguard Worker } 384*4bdc9457SAndroid Build Coastguard Worker } 385*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,inplace_b)386*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, inplace_b) { 387*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 388*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 389*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 390*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 391*4bdc9457SAndroid Build Coastguard Worker .inplace_b(true) 392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 393*4bdc9457SAndroid Build Coastguard Worker } 394*4bdc9457SAndroid Build Coastguard Worker } 395*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,inplace_a_and_b)396*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, inplace_a_and_b) { 397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 398*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 399*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 400*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 401*4bdc9457SAndroid Build Coastguard Worker .inplace_a(true) 402*4bdc9457SAndroid Build Coastguard Worker .inplace_b(true) 403*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 404*4bdc9457SAndroid Build Coastguard Worker } 405*4bdc9457SAndroid Build Coastguard Worker } 406*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,a_zero_point)407*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, a_zero_point) { 408*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 409*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 410*4bdc9457SAndroid Build Coastguard Worker for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) { 411*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 412*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 413*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(a_zero_point) 414*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 415*4bdc9457SAndroid Build Coastguard Worker } 416*4bdc9457SAndroid Build Coastguard Worker } 417*4bdc9457SAndroid Build Coastguard Worker } 418*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,b_zero_point)419*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, b_zero_point) { 420*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 421*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 422*4bdc9457SAndroid Build Coastguard Worker for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) { 423*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 424*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 425*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(b_zero_point) 426*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 427*4bdc9457SAndroid Build Coastguard Worker } 428*4bdc9457SAndroid Build Coastguard Worker } 429*4bdc9457SAndroid Build Coastguard Worker } 430*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,y_zero_point)431*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, y_zero_point) { 432*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 433*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 434*4bdc9457SAndroid Build Coastguard Worker for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) { 435*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 436*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 437*4bdc9457SAndroid Build Coastguard Worker .y_zero_point(y_zero_point) 438*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 439*4bdc9457SAndroid Build Coastguard Worker } 440*4bdc9457SAndroid Build Coastguard Worker } 441*4bdc9457SAndroid Build Coastguard Worker } 442*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,a_scale)443*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, a_scale) { 444*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 445*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 446*4bdc9457SAndroid Build Coastguard Worker for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) { 447*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 448*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 449*4bdc9457SAndroid Build Coastguard Worker .a_scale(a_scale) 450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 451*4bdc9457SAndroid Build Coastguard Worker } 452*4bdc9457SAndroid Build Coastguard Worker } 453*4bdc9457SAndroid Build Coastguard Worker } 454*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,b_scale)455*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, b_scale) { 456*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 457*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 458*4bdc9457SAndroid Build Coastguard Worker for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) { 459*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 460*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 461*4bdc9457SAndroid Build Coastguard Worker .b_scale(b_scale) 462*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 463*4bdc9457SAndroid Build Coastguard Worker } 464*4bdc9457SAndroid Build Coastguard Worker } 465*4bdc9457SAndroid Build Coastguard Worker } 466*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,y_scale)467*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, y_scale) { 468*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 469*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 470*4bdc9457SAndroid Build Coastguard Worker for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) { 471*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 472*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 473*4bdc9457SAndroid Build Coastguard Worker .y_scale(y_scale) 474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 475*4bdc9457SAndroid Build Coastguard Worker } 476*4bdc9457SAndroid Build Coastguard Worker } 477*4bdc9457SAndroid Build Coastguard Worker } 478*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,qmin)479*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, qmin) { 480*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 481*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 482*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 483*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 484*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 485*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 486*4bdc9457SAndroid Build Coastguard Worker } 487*4bdc9457SAndroid Build Coastguard Worker } 488*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16,qmax)489*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_VMUL_MINMAX_RNDNU__NEON_LD128_X16, qmax) { 490*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 491*4bdc9457SAndroid Build Coastguard Worker for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) { 492*4bdc9457SAndroid Build Coastguard Worker VMulMicrokernelTester() 493*4bdc9457SAndroid Build Coastguard Worker .batch_size(batch_size) 494*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 495*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_vmul_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qu8_mul_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 496*4bdc9457SAndroid Build Coastguard Worker } 497*4bdc9457SAndroid Build Coastguard Worker } 498*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 499