1*4bdc9457SAndroid Build Coastguard Worker#!/usr/bin/env python 2*4bdc9457SAndroid Build Coastguard Worker# Copyright 2020 Google LLC 3*4bdc9457SAndroid Build Coastguard Worker# 4*4bdc9457SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the 5*4bdc9457SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree. 6*4bdc9457SAndroid Build Coastguard Worker 7*4bdc9457SAndroid Build Coastguard Workerimport argparse 8*4bdc9457SAndroid Build Coastguard Workerimport codecs 9*4bdc9457SAndroid Build Coastguard Workerimport math 10*4bdc9457SAndroid Build Coastguard Workerimport os 11*4bdc9457SAndroid Build Coastguard Workerimport re 12*4bdc9457SAndroid Build Coastguard Workerimport sys 13*4bdc9457SAndroid Build Coastguard Workerimport yaml 14*4bdc9457SAndroid Build Coastguard Worker 15*4bdc9457SAndroid Build Coastguard Workersys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) 16*4bdc9457SAndroid Build Coastguard Workerfrom primes import next_prime 17*4bdc9457SAndroid Build Coastguard Workerimport xngen 18*4bdc9457SAndroid Build Coastguard Workerimport xnncommon 19*4bdc9457SAndroid Build Coastguard Worker 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Workerparser = argparse.ArgumentParser(description='AvgPool microkernel test generator') 22*4bdc9457SAndroid Build Coastguard Workerparser.add_argument("-s", "--spec", metavar="FILE", required=True, 23*4bdc9457SAndroid Build Coastguard Worker help="Specification (YAML) file") 24*4bdc9457SAndroid Build Coastguard Workerparser.add_argument("-o", "--output", metavar="FILE", required=True, 25*4bdc9457SAndroid Build Coastguard Worker help='Output (C++ source) file') 26*4bdc9457SAndroid Build Coastguard Workerparser.set_defaults(defines=list()) 27*4bdc9457SAndroid Build Coastguard Worker 28*4bdc9457SAndroid Build Coastguard Worker 29*4bdc9457SAndroid Build Coastguard Workerdef split_ukernel_name(name): 30*4bdc9457SAndroid Build Coastguard Worker match = re.fullmatch(r"xnn_(qu8|f16|f32)_[p]?avgpool(_(minmax))?_ukernel_((\d+)p)?(\d+)x__(.+)_c(\d+)", name) 31*4bdc9457SAndroid Build Coastguard Worker if match is None: 32*4bdc9457SAndroid Build Coastguard Worker raise ValueError("Unexpected microkernel name: " + name) 33*4bdc9457SAndroid Build Coastguard Worker 34*4bdc9457SAndroid Build Coastguard Worker if match.group(4): 35*4bdc9457SAndroid Build Coastguard Worker primary_tile = int(match.group(5)) 36*4bdc9457SAndroid Build Coastguard Worker incremental_tile = int(match.group(6)) 37*4bdc9457SAndroid Build Coastguard Worker else: 38*4bdc9457SAndroid Build Coastguard Worker primary_tile = int(match.group(6)) 39*4bdc9457SAndroid Build Coastguard Worker incremental_tile = 0 40*4bdc9457SAndroid Build Coastguard Worker channel_tile = int(match.group(8)) 41*4bdc9457SAndroid Build Coastguard Worker 42*4bdc9457SAndroid Build Coastguard Worker arch, isa = xnncommon.parse_target_name(target_name=match.group(7)) 43*4bdc9457SAndroid Build Coastguard Worker return primary_tile, incremental_tile, channel_tile, arch, isa 44*4bdc9457SAndroid Build Coastguard Worker 45*4bdc9457SAndroid Build Coastguard Worker 46*4bdc9457SAndroid Build Coastguard WorkerAVGPOOL_TEST_TEMPLATE = """\ 47*4bdc9457SAndroid Build Coastguard Worker$if INCREMENTAL_TILE == 0: 48*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile) { 49*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 50*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 51*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 52*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 53*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 54*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 55*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 56*4bdc9457SAndroid Build Coastguard Worker } 57*4bdc9457SAndroid Build Coastguard Worker 58*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_input_offset) { 59*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 60*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 61*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 62*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 63*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 64*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 65*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 66*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 67*4bdc9457SAndroid Build Coastguard Worker } 68*4bdc9457SAndroid Build Coastguard Worker 69*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_zero) { 70*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 71*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 72*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE}; zero_index++) { 73*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 74*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 75*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 76*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 77*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 78*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 79*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 80*4bdc9457SAndroid Build Coastguard Worker } 81*4bdc9457SAndroid Build Coastguard Worker } 82*4bdc9457SAndroid Build Coastguard Worker 83*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 84*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_input_scale) { 85*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 86*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 87*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 88*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 89*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 90*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 91*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 92*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 93*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 94*4bdc9457SAndroid Build Coastguard Worker } 95*4bdc9457SAndroid Build Coastguard Worker } 96*4bdc9457SAndroid Build Coastguard Worker 97*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_input_zero_point) { 98*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 99*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 100*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 101*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 102*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 103*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 104*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 105*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 106*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 107*4bdc9457SAndroid Build Coastguard Worker } 108*4bdc9457SAndroid Build Coastguard Worker } 109*4bdc9457SAndroid Build Coastguard Worker 110*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_output_scale) { 111*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 112*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 113*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 114*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 115*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 116*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 117*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 118*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 119*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 120*4bdc9457SAndroid Build Coastguard Worker } 121*4bdc9457SAndroid Build Coastguard Worker } 122*4bdc9457SAndroid Build Coastguard Worker 123*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_output_zero_point) { 124*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 125*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 126*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 127*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 128*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 129*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 130*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 131*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 132*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 133*4bdc9457SAndroid Build Coastguard Worker } 134*4bdc9457SAndroid Build Coastguard Worker } 135*4bdc9457SAndroid Build Coastguard Worker 136*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_qmin) { 137*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 138*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 139*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 140*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 141*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 142*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 143*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 144*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 145*4bdc9457SAndroid Build Coastguard Worker } 146*4bdc9457SAndroid Build Coastguard Worker 147*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_fulltile_with_qmax) { 148*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 149*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 150*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 151*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 152*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 153*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 154*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 155*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 156*4bdc9457SAndroid Build Coastguard Worker } 157*4bdc9457SAndroid Build Coastguard Worker 158*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_subtile) { 159*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 160*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 161*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 162*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 163*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 164*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 165*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 166*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 167*4bdc9457SAndroid Build Coastguard Worker } 168*4bdc9457SAndroid Build Coastguard Worker } 169*4bdc9457SAndroid Build Coastguard Worker 170*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_subtile_with_input_offset) { 171*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 172*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 173*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 174*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 175*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 176*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 177*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 178*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 179*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 180*4bdc9457SAndroid Build Coastguard Worker } 181*4bdc9457SAndroid Build Coastguard Worker } 182*4bdc9457SAndroid Build Coastguard Worker 183*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_unipass_subtile_with_zero) { 184*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 185*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 186*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 187*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 188*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 189*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 190*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 191*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 192*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 193*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 194*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 195*4bdc9457SAndroid Build Coastguard Worker } 196*4bdc9457SAndroid Build Coastguard Worker } 197*4bdc9457SAndroid Build Coastguard Worker } 198*4bdc9457SAndroid Build Coastguard Worker 199*4bdc9457SAndroid Build Coastguard Worker $if CHANNEL_TILE > 1: 200*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile) { 201*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 202*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 203*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 204*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 205*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 206*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 207*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 208*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 209*4bdc9457SAndroid Build Coastguard Worker } 210*4bdc9457SAndroid Build Coastguard Worker } 211*4bdc9457SAndroid Build Coastguard Worker 212*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_input_offset) { 213*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 214*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 215*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 216*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 217*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 218*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 219*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 220*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 221*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 222*4bdc9457SAndroid Build Coastguard Worker } 223*4bdc9457SAndroid Build Coastguard Worker } 224*4bdc9457SAndroid Build Coastguard Worker 225*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_zero) { 226*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 227*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 228*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 229*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE}; zero_index++) { 230*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 231*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 232*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 233*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 234*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 235*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 236*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 237*4bdc9457SAndroid Build Coastguard Worker } 238*4bdc9457SAndroid Build Coastguard Worker } 239*4bdc9457SAndroid Build Coastguard Worker } 240*4bdc9457SAndroid Build Coastguard Worker 241*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 242*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_input_scale) { 243*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 244*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 245*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 246*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 247*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 248*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 249*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 250*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 251*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 252*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 253*4bdc9457SAndroid Build Coastguard Worker } 254*4bdc9457SAndroid Build Coastguard Worker } 255*4bdc9457SAndroid Build Coastguard Worker } 256*4bdc9457SAndroid Build Coastguard Worker 257*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_input_zero_point) { 258*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 259*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 260*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 261*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 262*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 263*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 264*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 265*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 266*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 267*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 268*4bdc9457SAndroid Build Coastguard Worker } 269*4bdc9457SAndroid Build Coastguard Worker } 270*4bdc9457SAndroid Build Coastguard Worker } 271*4bdc9457SAndroid Build Coastguard Worker 272*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_output_scale) { 273*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 274*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 275*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 276*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 277*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 278*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 279*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 280*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 281*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 282*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 283*4bdc9457SAndroid Build Coastguard Worker } 284*4bdc9457SAndroid Build Coastguard Worker } 285*4bdc9457SAndroid Build Coastguard Worker } 286*4bdc9457SAndroid Build Coastguard Worker 287*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_output_zero_point) { 288*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 289*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 290*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 291*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 292*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 293*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 294*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 295*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 296*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 297*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 298*4bdc9457SAndroid Build Coastguard Worker } 299*4bdc9457SAndroid Build Coastguard Worker } 300*4bdc9457SAndroid Build Coastguard Worker } 301*4bdc9457SAndroid Build Coastguard Worker 302*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_qmin) { 303*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 304*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 305*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 306*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 307*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 308*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 309*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 310*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 311*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 312*4bdc9457SAndroid Build Coastguard Worker } 313*4bdc9457SAndroid Build Coastguard Worker } 314*4bdc9457SAndroid Build Coastguard Worker 315*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_fulltile_with_qmax) { 316*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 317*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 318*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 319*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 320*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 321*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 322*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 323*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 324*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 325*4bdc9457SAndroid Build Coastguard Worker } 326*4bdc9457SAndroid Build Coastguard Worker } 327*4bdc9457SAndroid Build Coastguard Worker 328*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_subtile) { 329*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 330*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 331*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 332*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 333*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 334*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 335*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 336*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 337*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 338*4bdc9457SAndroid Build Coastguard Worker } 339*4bdc9457SAndroid Build Coastguard Worker } 340*4bdc9457SAndroid Build Coastguard Worker } 341*4bdc9457SAndroid Build Coastguard Worker 342*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_subtile_with_input_offset) { 343*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 344*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 345*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 346*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 347*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 348*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 349*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 350*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 351*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 352*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 353*4bdc9457SAndroid Build Coastguard Worker } 354*4bdc9457SAndroid Build Coastguard Worker } 355*4bdc9457SAndroid Build Coastguard Worker } 356*4bdc9457SAndroid Build Coastguard Worker 357*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_unipass_subtile_with_zero) { 358*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 359*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 360*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 361*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 362*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 363*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 364*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 365*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 366*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 367*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 368*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 369*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 370*4bdc9457SAndroid Build Coastguard Worker } 371*4bdc9457SAndroid Build Coastguard Worker } 372*4bdc9457SAndroid Build Coastguard Worker } 373*4bdc9457SAndroid Build Coastguard Worker } 374*4bdc9457SAndroid Build Coastguard Worker 375*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile) { 376*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 377*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 378*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 379*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 380*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 381*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 382*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 383*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 384*4bdc9457SAndroid Build Coastguard Worker } 385*4bdc9457SAndroid Build Coastguard Worker } 386*4bdc9457SAndroid Build Coastguard Worker 387*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_input_offset) { 388*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 389*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 390*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 391*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 392*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 393*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 394*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 395*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 396*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 397*4bdc9457SAndroid Build Coastguard Worker } 398*4bdc9457SAndroid Build Coastguard Worker } 399*4bdc9457SAndroid Build Coastguard Worker 400*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_zero) { 401*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 402*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 403*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 404*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE}; zero_index++) { 405*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 406*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 407*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 408*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 409*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 410*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 411*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 412*4bdc9457SAndroid Build Coastguard Worker } 413*4bdc9457SAndroid Build Coastguard Worker } 414*4bdc9457SAndroid Build Coastguard Worker } 415*4bdc9457SAndroid Build Coastguard Worker 416*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 417*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_input_scale) { 418*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 419*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 420*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 421*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 422*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 423*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 424*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 425*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 426*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 427*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 428*4bdc9457SAndroid Build Coastguard Worker } 429*4bdc9457SAndroid Build Coastguard Worker } 430*4bdc9457SAndroid Build Coastguard Worker } 431*4bdc9457SAndroid Build Coastguard Worker 432*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_input_zero_point) { 433*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 434*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 435*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 436*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 437*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 438*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 439*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 440*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 441*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 442*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 443*4bdc9457SAndroid Build Coastguard Worker } 444*4bdc9457SAndroid Build Coastguard Worker } 445*4bdc9457SAndroid Build Coastguard Worker } 446*4bdc9457SAndroid Build Coastguard Worker 447*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_output_scale) { 448*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 449*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 450*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 451*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 452*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 453*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 454*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 455*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 456*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 457*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 458*4bdc9457SAndroid Build Coastguard Worker } 459*4bdc9457SAndroid Build Coastguard Worker } 460*4bdc9457SAndroid Build Coastguard Worker } 461*4bdc9457SAndroid Build Coastguard Worker 462*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_output_zero_point) { 463*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 464*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 465*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 466*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 467*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 468*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 469*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 470*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 471*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 472*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 473*4bdc9457SAndroid Build Coastguard Worker } 474*4bdc9457SAndroid Build Coastguard Worker } 475*4bdc9457SAndroid Build Coastguard Worker } 476*4bdc9457SAndroid Build Coastguard Worker 477*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_qmin) { 478*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 479*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 480*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 481*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 482*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 483*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 484*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 485*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 486*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 487*4bdc9457SAndroid Build Coastguard Worker } 488*4bdc9457SAndroid Build Coastguard Worker } 489*4bdc9457SAndroid Build Coastguard Worker 490*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_fulltile_with_qmax) { 491*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 492*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 493*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 494*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 495*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 496*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 497*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 498*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 499*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 500*4bdc9457SAndroid Build Coastguard Worker } 501*4bdc9457SAndroid Build Coastguard Worker } 502*4bdc9457SAndroid Build Coastguard Worker 503*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_subtile) { 504*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 505*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 506*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 507*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 508*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 509*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 510*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 511*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 512*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 513*4bdc9457SAndroid Build Coastguard Worker } 514*4bdc9457SAndroid Build Coastguard Worker } 515*4bdc9457SAndroid Build Coastguard Worker } 516*4bdc9457SAndroid Build Coastguard Worker 517*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_subtile_with_input_offset) { 518*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 519*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 520*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 521*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 522*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 523*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 524*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 525*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 526*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 527*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 528*4bdc9457SAndroid Build Coastguard Worker } 529*4bdc9457SAndroid Build Coastguard Worker } 530*4bdc9457SAndroid Build Coastguard Worker } 531*4bdc9457SAndroid Build Coastguard Worker 532*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_unipass_subtile_with_zero) { 533*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 534*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 535*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 536*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 537*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 538*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 539*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 540*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 541*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 542*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 543*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 544*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 545*4bdc9457SAndroid Build Coastguard Worker } 546*4bdc9457SAndroid Build Coastguard Worker } 547*4bdc9457SAndroid Build Coastguard Worker } 548*4bdc9457SAndroid Build Coastguard Worker } 549*4bdc9457SAndroid Build Coastguard Worker 550*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile) { 551*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 552*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 553*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 554*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 555*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 556*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 557*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 558*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 559*4bdc9457SAndroid Build Coastguard Worker } 560*4bdc9457SAndroid Build Coastguard Worker } 561*4bdc9457SAndroid Build Coastguard Worker 562*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_input_offset) { 563*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 564*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 565*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 566*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 567*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 568*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 569*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 570*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 571*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 572*4bdc9457SAndroid Build Coastguard Worker } 573*4bdc9457SAndroid Build Coastguard Worker } 574*4bdc9457SAndroid Build Coastguard Worker 575*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_zero) { 576*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 577*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 578*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 579*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE}; zero_index++) { 580*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 581*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 582*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 583*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 584*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 585*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 586*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 587*4bdc9457SAndroid Build Coastguard Worker } 588*4bdc9457SAndroid Build Coastguard Worker } 589*4bdc9457SAndroid Build Coastguard Worker } 590*4bdc9457SAndroid Build Coastguard Worker 591*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 592*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_input_scale) { 593*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 594*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 595*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 596*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 597*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 598*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 599*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 600*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 601*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 602*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 603*4bdc9457SAndroid Build Coastguard Worker } 604*4bdc9457SAndroid Build Coastguard Worker } 605*4bdc9457SAndroid Build Coastguard Worker } 606*4bdc9457SAndroid Build Coastguard Worker 607*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_input_zero_point) { 608*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 609*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 610*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 611*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 612*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 613*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 614*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 615*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 616*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 617*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 618*4bdc9457SAndroid Build Coastguard Worker } 619*4bdc9457SAndroid Build Coastguard Worker } 620*4bdc9457SAndroid Build Coastguard Worker } 621*4bdc9457SAndroid Build Coastguard Worker 622*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_output_scale) { 623*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 624*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 625*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 626*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 627*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 628*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 629*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 630*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 631*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 632*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 633*4bdc9457SAndroid Build Coastguard Worker } 634*4bdc9457SAndroid Build Coastguard Worker } 635*4bdc9457SAndroid Build Coastguard Worker } 636*4bdc9457SAndroid Build Coastguard Worker 637*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_output_zero_point) { 638*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 639*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 640*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 641*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 642*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 643*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 644*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 645*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 646*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 647*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 648*4bdc9457SAndroid Build Coastguard Worker } 649*4bdc9457SAndroid Build Coastguard Worker } 650*4bdc9457SAndroid Build Coastguard Worker } 651*4bdc9457SAndroid Build Coastguard Worker 652*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_qmin) { 653*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 654*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 655*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 656*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 657*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 658*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 659*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 660*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 661*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 662*4bdc9457SAndroid Build Coastguard Worker } 663*4bdc9457SAndroid Build Coastguard Worker } 664*4bdc9457SAndroid Build Coastguard Worker 665*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_fulltile_with_qmax) { 666*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 667*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 668*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 669*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 670*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE}) 671*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 672*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 673*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 674*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 675*4bdc9457SAndroid Build Coastguard Worker } 676*4bdc9457SAndroid Build Coastguard Worker } 677*4bdc9457SAndroid Build Coastguard Worker 678*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_subtile) { 679*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 680*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 681*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 682*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 683*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 684*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 685*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 686*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 687*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 688*4bdc9457SAndroid Build Coastguard Worker } 689*4bdc9457SAndroid Build Coastguard Worker } 690*4bdc9457SAndroid Build Coastguard Worker } 691*4bdc9457SAndroid Build Coastguard Worker 692*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_subtile_with_input_offset) { 693*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 694*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 695*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 696*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 697*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 698*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 699*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 700*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 701*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 702*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 703*4bdc9457SAndroid Build Coastguard Worker } 704*4bdc9457SAndroid Build Coastguard Worker } 705*4bdc9457SAndroid Build Coastguard Worker } 706*4bdc9457SAndroid Build Coastguard Worker 707*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_unipass_subtile_with_zero) { 708*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 709*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 710*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = 2; pooling_elements < ${PRIMARY_TILE}; pooling_elements++) { 711*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 712*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 713*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 714*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 715*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 716*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 717*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 718*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 719*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 720*4bdc9457SAndroid Build Coastguard Worker } 721*4bdc9457SAndroid Build Coastguard Worker } 722*4bdc9457SAndroid Build Coastguard Worker } 723*4bdc9457SAndroid Build Coastguard Worker } 724*4bdc9457SAndroid Build Coastguard Worker 725*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels) { 726*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 727*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 728*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 729*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 730*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 731*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 732*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 733*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 734*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 735*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 736*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 737*4bdc9457SAndroid Build Coastguard Worker } 738*4bdc9457SAndroid Build Coastguard Worker } 739*4bdc9457SAndroid Build Coastguard Worker } 740*4bdc9457SAndroid Build Coastguard Worker } 741*4bdc9457SAndroid Build Coastguard Worker 742*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_offset) { 743*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 744*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 745*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 746*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 747*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 748*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 749*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 750*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 751*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 752*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 753*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5+1)}) 754*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 755*4bdc9457SAndroid Build Coastguard Worker } 756*4bdc9457SAndroid Build Coastguard Worker } 757*4bdc9457SAndroid Build Coastguard Worker } 758*4bdc9457SAndroid Build Coastguard Worker } 759*4bdc9457SAndroid Build Coastguard Worker 760*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_zero) { 761*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 762*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 763*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 764*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 765*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 766*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 767*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 768*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 769*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 770*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 771*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 772*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5+1)}) 773*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 774*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 775*4bdc9457SAndroid Build Coastguard Worker } 776*4bdc9457SAndroid Build Coastguard Worker } 777*4bdc9457SAndroid Build Coastguard Worker } 778*4bdc9457SAndroid Build Coastguard Worker } 779*4bdc9457SAndroid Build Coastguard Worker } 780*4bdc9457SAndroid Build Coastguard Worker 781*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 782*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_scale) { 783*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 784*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 785*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 786*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 787*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 788*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 789*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 790*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 791*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 792*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 793*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 794*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 795*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 796*4bdc9457SAndroid Build Coastguard Worker } 797*4bdc9457SAndroid Build Coastguard Worker } 798*4bdc9457SAndroid Build Coastguard Worker } 799*4bdc9457SAndroid Build Coastguard Worker } 800*4bdc9457SAndroid Build Coastguard Worker } 801*4bdc9457SAndroid Build Coastguard Worker 802*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_zero_point) { 803*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 804*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 805*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 806*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 807*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 808*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 809*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 810*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 811*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 812*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 813*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 814*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 815*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 816*4bdc9457SAndroid Build Coastguard Worker } 817*4bdc9457SAndroid Build Coastguard Worker } 818*4bdc9457SAndroid Build Coastguard Worker } 819*4bdc9457SAndroid Build Coastguard Worker } 820*4bdc9457SAndroid Build Coastguard Worker } 821*4bdc9457SAndroid Build Coastguard Worker 822*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_scale) { 823*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 824*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 825*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 826*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 827*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 828*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 829*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 830*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 831*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 832*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 833*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 834*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 835*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 836*4bdc9457SAndroid Build Coastguard Worker } 837*4bdc9457SAndroid Build Coastguard Worker } 838*4bdc9457SAndroid Build Coastguard Worker } 839*4bdc9457SAndroid Build Coastguard Worker } 840*4bdc9457SAndroid Build Coastguard Worker } 841*4bdc9457SAndroid Build Coastguard Worker 842*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_zero_point) { 843*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 844*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 845*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 846*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 847*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 848*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 849*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 850*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 851*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 852*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}) 853*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 854*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 855*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 856*4bdc9457SAndroid Build Coastguard Worker } 857*4bdc9457SAndroid Build Coastguard Worker } 858*4bdc9457SAndroid Build Coastguard Worker } 859*4bdc9457SAndroid Build Coastguard Worker } 860*4bdc9457SAndroid Build Coastguard Worker } 861*4bdc9457SAndroid Build Coastguard Worker 862*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_qmin) { 863*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 864*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 865*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 866*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 867*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 868*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 869*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 870*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 871*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 872*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 873*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 874*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 875*4bdc9457SAndroid Build Coastguard Worker } 876*4bdc9457SAndroid Build Coastguard Worker } 877*4bdc9457SAndroid Build Coastguard Worker } 878*4bdc9457SAndroid Build Coastguard Worker } 879*4bdc9457SAndroid Build Coastguard Worker 880*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_qmax) { 881*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 882*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 883*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 884*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 885*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 886*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 887*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 888*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 889*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 890*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 891*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 892*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 893*4bdc9457SAndroid Build Coastguard Worker } 894*4bdc9457SAndroid Build Coastguard Worker } 895*4bdc9457SAndroid Build Coastguard Worker } 896*4bdc9457SAndroid Build Coastguard Worker } 897*4bdc9457SAndroid Build Coastguard Worker 898*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_stride) { 899*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 900*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 901*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 902*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 903*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 904*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 905*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 906*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 907*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 908*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 909*4bdc9457SAndroid Build Coastguard Worker .output_stride(${next_prime(CHANNEL_TILE*5+1)}) 910*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 911*4bdc9457SAndroid Build Coastguard Worker } 912*4bdc9457SAndroid Build Coastguard Worker } 913*4bdc9457SAndroid Build Coastguard Worker } 914*4bdc9457SAndroid Build Coastguard Worker } 915*4bdc9457SAndroid Build Coastguard Worker 916*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_step) { 917*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 918*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 919*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 920*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{2, ${PRIMARY_TILE-1}, ${PRIMARY_TILE}}}) { 921*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 922*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) { 923*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 924*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 925*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 926*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 927*4bdc9457SAndroid Build Coastguard Worker .step(step) 928*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 929*4bdc9457SAndroid Build Coastguard Worker .output_stride(${next_prime(CHANNEL_TILE*5+1)}) 930*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 931*4bdc9457SAndroid Build Coastguard Worker } 932*4bdc9457SAndroid Build Coastguard Worker } 933*4bdc9457SAndroid Build Coastguard Worker } 934*4bdc9457SAndroid Build Coastguard Worker } 935*4bdc9457SAndroid Build Coastguard Worker } 936*4bdc9457SAndroid Build Coastguard Worker$else: 937*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile) { 938*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 939*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 940*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 941*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 942*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 943*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 944*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 945*4bdc9457SAndroid Build Coastguard Worker } 946*4bdc9457SAndroid Build Coastguard Worker 947*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_input_offset) { 948*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 949*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 950*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 951*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 952*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 953*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 954*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 955*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 956*4bdc9457SAndroid Build Coastguard Worker } 957*4bdc9457SAndroid Build Coastguard Worker 958*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_zero) { 959*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 960*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 961*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE+INCREMENTAL_TILE}; zero_index++) { 962*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 963*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 964*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 965*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 966*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 967*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 968*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 969*4bdc9457SAndroid Build Coastguard Worker } 970*4bdc9457SAndroid Build Coastguard Worker } 971*4bdc9457SAndroid Build Coastguard Worker 972*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 973*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_input_scale) { 974*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 975*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 976*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 977*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 978*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 979*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 980*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 981*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 982*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 983*4bdc9457SAndroid Build Coastguard Worker } 984*4bdc9457SAndroid Build Coastguard Worker } 985*4bdc9457SAndroid Build Coastguard Worker 986*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_input_zero_point) { 987*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 988*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 989*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 990*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 991*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 992*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 993*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 994*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 995*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 996*4bdc9457SAndroid Build Coastguard Worker } 997*4bdc9457SAndroid Build Coastguard Worker } 998*4bdc9457SAndroid Build Coastguard Worker 999*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_output_scale) { 1000*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1001*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1002*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1003*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1004*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1005*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1006*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1007*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1008*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1009*4bdc9457SAndroid Build Coastguard Worker } 1010*4bdc9457SAndroid Build Coastguard Worker } 1011*4bdc9457SAndroid Build Coastguard Worker 1012*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_output_zero_point) { 1013*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1014*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1015*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1016*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1017*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1018*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1019*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1020*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1021*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1022*4bdc9457SAndroid Build Coastguard Worker } 1023*4bdc9457SAndroid Build Coastguard Worker } 1024*4bdc9457SAndroid Build Coastguard Worker 1025*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_qmin) { 1026*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1027*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1028*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1029*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1030*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1031*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1032*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1033*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1034*4bdc9457SAndroid Build Coastguard Worker } 1035*4bdc9457SAndroid Build Coastguard Worker 1036*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_fulltile_with_qmax) { 1037*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1038*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1039*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1040*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1041*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1042*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1043*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1044*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1045*4bdc9457SAndroid Build Coastguard Worker } 1046*4bdc9457SAndroid Build Coastguard Worker 1047*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_subtile) { 1048*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1049*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1050*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1051*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1052*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1053*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1054*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1055*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1056*4bdc9457SAndroid Build Coastguard Worker } 1057*4bdc9457SAndroid Build Coastguard Worker } 1058*4bdc9457SAndroid Build Coastguard Worker 1059*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_subtile_with_input_offset) { 1060*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1061*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1062*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1063*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1064*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1065*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1066*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1067*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 1068*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1069*4bdc9457SAndroid Build Coastguard Worker } 1070*4bdc9457SAndroid Build Coastguard Worker } 1071*4bdc9457SAndroid Build Coastguard Worker 1072*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_twopass_subtile_with_zero) { 1073*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1074*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1075*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1076*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1077*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1078*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1079*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1080*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1081*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 1082*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1083*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1084*4bdc9457SAndroid Build Coastguard Worker } 1085*4bdc9457SAndroid Build Coastguard Worker } 1086*4bdc9457SAndroid Build Coastguard Worker } 1087*4bdc9457SAndroid Build Coastguard Worker 1088*4bdc9457SAndroid Build Coastguard Worker $if CHANNEL_TILE > 1: 1089*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile) { 1090*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1091*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1092*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1093*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1094*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1095*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1096*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1097*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1098*4bdc9457SAndroid Build Coastguard Worker } 1099*4bdc9457SAndroid Build Coastguard Worker } 1100*4bdc9457SAndroid Build Coastguard Worker 1101*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_input_offset) { 1102*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1103*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1104*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1105*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1106*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1107*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1108*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1109*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5)}) 1110*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1111*4bdc9457SAndroid Build Coastguard Worker } 1112*4bdc9457SAndroid Build Coastguard Worker } 1113*4bdc9457SAndroid Build Coastguard Worker 1114*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_zero) { 1115*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1116*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1117*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1118*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE+INCREMENTAL_TILE}; zero_index++) { 1119*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1120*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1121*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1122*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1123*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5)}) 1124*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1125*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1126*4bdc9457SAndroid Build Coastguard Worker } 1127*4bdc9457SAndroid Build Coastguard Worker } 1128*4bdc9457SAndroid Build Coastguard Worker } 1129*4bdc9457SAndroid Build Coastguard Worker 1130*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1131*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_input_scale) { 1132*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1133*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1134*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1135*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1136*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1137*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1138*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1139*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1140*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1141*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1142*4bdc9457SAndroid Build Coastguard Worker } 1143*4bdc9457SAndroid Build Coastguard Worker } 1144*4bdc9457SAndroid Build Coastguard Worker } 1145*4bdc9457SAndroid Build Coastguard Worker 1146*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_input_zero_point) { 1147*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1148*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1149*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1150*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1151*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1152*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1153*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1154*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1155*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1156*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1157*4bdc9457SAndroid Build Coastguard Worker } 1158*4bdc9457SAndroid Build Coastguard Worker } 1159*4bdc9457SAndroid Build Coastguard Worker } 1160*4bdc9457SAndroid Build Coastguard Worker 1161*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_output_scale) { 1162*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1163*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1164*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1165*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1166*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1167*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1168*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1169*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1170*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1171*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1172*4bdc9457SAndroid Build Coastguard Worker } 1173*4bdc9457SAndroid Build Coastguard Worker } 1174*4bdc9457SAndroid Build Coastguard Worker } 1175*4bdc9457SAndroid Build Coastguard Worker 1176*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_output_zero_point) { 1177*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1178*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1179*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1180*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1181*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1182*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1183*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1184*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1185*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1186*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1187*4bdc9457SAndroid Build Coastguard Worker } 1188*4bdc9457SAndroid Build Coastguard Worker } 1189*4bdc9457SAndroid Build Coastguard Worker } 1190*4bdc9457SAndroid Build Coastguard Worker 1191*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_qmin) { 1192*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1193*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1194*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1195*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1196*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1197*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1198*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1199*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1200*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1201*4bdc9457SAndroid Build Coastguard Worker } 1202*4bdc9457SAndroid Build Coastguard Worker } 1203*4bdc9457SAndroid Build Coastguard Worker 1204*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_fulltile_with_qmax) { 1205*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1206*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1207*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1208*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1209*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1210*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1211*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1212*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1213*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1214*4bdc9457SAndroid Build Coastguard Worker } 1215*4bdc9457SAndroid Build Coastguard Worker } 1216*4bdc9457SAndroid Build Coastguard Worker 1217*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_subtile) { 1218*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1219*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1220*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1221*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1222*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1223*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1224*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1225*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1226*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1227*4bdc9457SAndroid Build Coastguard Worker } 1228*4bdc9457SAndroid Build Coastguard Worker } 1229*4bdc9457SAndroid Build Coastguard Worker } 1230*4bdc9457SAndroid Build Coastguard Worker 1231*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_subtile_with_input_offset) { 1232*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1233*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1234*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1235*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1236*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1237*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1238*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1239*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1240*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 1241*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1242*4bdc9457SAndroid Build Coastguard Worker } 1243*4bdc9457SAndroid Build Coastguard Worker } 1244*4bdc9457SAndroid Build Coastguard Worker } 1245*4bdc9457SAndroid Build Coastguard Worker 1246*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_twopass_subtile_with_zero) { 1247*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1248*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1249*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1250*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1251*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1252*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1253*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1254*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1255*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1256*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 1257*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1258*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1259*4bdc9457SAndroid Build Coastguard Worker } 1260*4bdc9457SAndroid Build Coastguard Worker } 1261*4bdc9457SAndroid Build Coastguard Worker } 1262*4bdc9457SAndroid Build Coastguard Worker } 1263*4bdc9457SAndroid Build Coastguard Worker 1264*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile) { 1265*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1266*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1267*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1268*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1269*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1270*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1271*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1272*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1273*4bdc9457SAndroid Build Coastguard Worker } 1274*4bdc9457SAndroid Build Coastguard Worker } 1275*4bdc9457SAndroid Build Coastguard Worker 1276*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_input_offset) { 1277*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1278*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1279*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1280*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1281*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1282*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1283*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1284*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 1285*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1286*4bdc9457SAndroid Build Coastguard Worker } 1287*4bdc9457SAndroid Build Coastguard Worker } 1288*4bdc9457SAndroid Build Coastguard Worker 1289*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_zero_index) { 1290*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1291*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1292*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1293*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE+INCREMENTAL_TILE}; zero_index++) { 1294*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1295*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1296*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1297*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1298*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 1299*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1300*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1301*4bdc9457SAndroid Build Coastguard Worker } 1302*4bdc9457SAndroid Build Coastguard Worker } 1303*4bdc9457SAndroid Build Coastguard Worker } 1304*4bdc9457SAndroid Build Coastguard Worker 1305*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1306*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_input_scale) { 1307*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1308*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1309*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1310*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1311*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1312*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1313*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1314*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1315*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1316*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1317*4bdc9457SAndroid Build Coastguard Worker } 1318*4bdc9457SAndroid Build Coastguard Worker } 1319*4bdc9457SAndroid Build Coastguard Worker } 1320*4bdc9457SAndroid Build Coastguard Worker 1321*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_input_zero_point) { 1322*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1323*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1324*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1325*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1326*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1327*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1328*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1329*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1330*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1331*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1332*4bdc9457SAndroid Build Coastguard Worker } 1333*4bdc9457SAndroid Build Coastguard Worker } 1334*4bdc9457SAndroid Build Coastguard Worker } 1335*4bdc9457SAndroid Build Coastguard Worker 1336*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_output_scale) { 1337*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1338*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1339*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1340*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1341*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1342*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1343*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1344*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1345*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1346*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1347*4bdc9457SAndroid Build Coastguard Worker } 1348*4bdc9457SAndroid Build Coastguard Worker } 1349*4bdc9457SAndroid Build Coastguard Worker } 1350*4bdc9457SAndroid Build Coastguard Worker 1351*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_output_zero_point) { 1352*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1353*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1354*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1355*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1356*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1357*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1358*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1359*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1360*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1361*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1362*4bdc9457SAndroid Build Coastguard Worker } 1363*4bdc9457SAndroid Build Coastguard Worker } 1364*4bdc9457SAndroid Build Coastguard Worker } 1365*4bdc9457SAndroid Build Coastguard Worker 1366*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_qmin) { 1367*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1368*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1369*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1370*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1371*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1372*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1373*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1374*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1375*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1376*4bdc9457SAndroid Build Coastguard Worker } 1377*4bdc9457SAndroid Build Coastguard Worker } 1378*4bdc9457SAndroid Build Coastguard Worker 1379*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_fulltile_with_qmax) { 1380*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1381*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1382*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1383*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1384*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1385*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1386*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1387*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1388*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1389*4bdc9457SAndroid Build Coastguard Worker } 1390*4bdc9457SAndroid Build Coastguard Worker } 1391*4bdc9457SAndroid Build Coastguard Worker 1392*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_subtile) { 1393*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1394*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1395*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1396*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1397*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1398*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1399*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1400*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1401*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1402*4bdc9457SAndroid Build Coastguard Worker } 1403*4bdc9457SAndroid Build Coastguard Worker } 1404*4bdc9457SAndroid Build Coastguard Worker } 1405*4bdc9457SAndroid Build Coastguard Worker 1406*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_subtile_with_input_offset) { 1407*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1408*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1409*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1410*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1411*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1412*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1413*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1414*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1415*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 1416*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1417*4bdc9457SAndroid Build Coastguard Worker } 1418*4bdc9457SAndroid Build Coastguard Worker } 1419*4bdc9457SAndroid Build Coastguard Worker } 1420*4bdc9457SAndroid Build Coastguard Worker 1421*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_twopass_subtile_with_zero) { 1422*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1423*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1424*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1425*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1426*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1427*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1428*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1429*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1430*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1431*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE)}) 1432*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1433*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1434*4bdc9457SAndroid Build Coastguard Worker } 1435*4bdc9457SAndroid Build Coastguard Worker } 1436*4bdc9457SAndroid Build Coastguard Worker } 1437*4bdc9457SAndroid Build Coastguard Worker } 1438*4bdc9457SAndroid Build Coastguard Worker 1439*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile) { 1440*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1441*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1442*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1443*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1444*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1445*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1446*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1447*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1448*4bdc9457SAndroid Build Coastguard Worker } 1449*4bdc9457SAndroid Build Coastguard Worker } 1450*4bdc9457SAndroid Build Coastguard Worker 1451*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_input_offset) { 1452*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1453*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1454*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1455*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1456*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1457*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1458*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1459*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 1460*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1461*4bdc9457SAndroid Build Coastguard Worker } 1462*4bdc9457SAndroid Build Coastguard Worker } 1463*4bdc9457SAndroid Build Coastguard Worker 1464*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_zero) { 1465*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1466*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1467*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1468*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < ${PRIMARY_TILE+INCREMENTAL_TILE}; zero_index++) { 1469*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1470*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1471*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1472*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1473*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 1474*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1475*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1476*4bdc9457SAndroid Build Coastguard Worker } 1477*4bdc9457SAndroid Build Coastguard Worker } 1478*4bdc9457SAndroid Build Coastguard Worker } 1479*4bdc9457SAndroid Build Coastguard Worker 1480*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1481*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_input_scale) { 1482*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1483*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1484*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1485*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1486*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1487*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1488*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1489*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1490*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1491*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1492*4bdc9457SAndroid Build Coastguard Worker } 1493*4bdc9457SAndroid Build Coastguard Worker } 1494*4bdc9457SAndroid Build Coastguard Worker } 1495*4bdc9457SAndroid Build Coastguard Worker 1496*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_input_zero_point) { 1497*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1498*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1499*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1500*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1501*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1502*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1503*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1504*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1505*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1506*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1507*4bdc9457SAndroid Build Coastguard Worker } 1508*4bdc9457SAndroid Build Coastguard Worker } 1509*4bdc9457SAndroid Build Coastguard Worker } 1510*4bdc9457SAndroid Build Coastguard Worker 1511*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_output_scale) { 1512*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1513*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1514*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1515*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1516*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1517*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1518*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1519*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1520*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1521*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1522*4bdc9457SAndroid Build Coastguard Worker } 1523*4bdc9457SAndroid Build Coastguard Worker } 1524*4bdc9457SAndroid Build Coastguard Worker } 1525*4bdc9457SAndroid Build Coastguard Worker 1526*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_output_zero_point) { 1527*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1528*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1529*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1530*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1531*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1532*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1533*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1534*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1535*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1536*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1537*4bdc9457SAndroid Build Coastguard Worker } 1538*4bdc9457SAndroid Build Coastguard Worker } 1539*4bdc9457SAndroid Build Coastguard Worker } 1540*4bdc9457SAndroid Build Coastguard Worker 1541*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_qmin) { 1542*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1543*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1544*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1545*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1546*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1547*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1548*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1549*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1550*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1551*4bdc9457SAndroid Build Coastguard Worker } 1552*4bdc9457SAndroid Build Coastguard Worker } 1553*4bdc9457SAndroid Build Coastguard Worker 1554*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_fulltile_with_qmax) { 1555*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1556*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1557*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1558*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1559*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(${PRIMARY_TILE+INCREMENTAL_TILE}) 1560*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1561*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1562*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1563*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1564*4bdc9457SAndroid Build Coastguard Worker } 1565*4bdc9457SAndroid Build Coastguard Worker } 1566*4bdc9457SAndroid Build Coastguard Worker 1567*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_subtile) { 1568*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1569*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1570*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1571*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1572*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1573*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1574*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1575*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1576*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1577*4bdc9457SAndroid Build Coastguard Worker } 1578*4bdc9457SAndroid Build Coastguard Worker } 1579*4bdc9457SAndroid Build Coastguard Worker } 1580*4bdc9457SAndroid Build Coastguard Worker 1581*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_subtile_with_input_offset) { 1582*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1583*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1584*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1585*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1586*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1587*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1588*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1589*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1590*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 1591*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1592*4bdc9457SAndroid Build Coastguard Worker } 1593*4bdc9457SAndroid Build Coastguard Worker } 1594*4bdc9457SAndroid Build Coastguard Worker } 1595*4bdc9457SAndroid Build Coastguard Worker 1596*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_twopass_subtile_with_zero) { 1597*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1598*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1599*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+1}; pooling_elements < ${PRIMARY_TILE+INCREMENTAL_TILE}; pooling_elements++) { 1600*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 1601*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1602*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1603*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1604*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1605*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1606*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 1607*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1608*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1609*4bdc9457SAndroid Build Coastguard Worker } 1610*4bdc9457SAndroid Build Coastguard Worker } 1611*4bdc9457SAndroid Build Coastguard Worker } 1612*4bdc9457SAndroid Build Coastguard Worker } 1613*4bdc9457SAndroid Build Coastguard Worker 1614*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass) { 1615*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1616*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1617*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1618*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1619*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1620*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1621*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1622*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1623*4bdc9457SAndroid Build Coastguard Worker } 1624*4bdc9457SAndroid Build Coastguard Worker } 1625*4bdc9457SAndroid Build Coastguard Worker 1626*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_input_offset) { 1627*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1628*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1629*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1630*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1631*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1632*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1633*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1634*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 1635*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1636*4bdc9457SAndroid Build Coastguard Worker } 1637*4bdc9457SAndroid Build Coastguard Worker } 1638*4bdc9457SAndroid Build Coastguard Worker 1639*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_zero) { 1640*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1641*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1642*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1643*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1644*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1645*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1646*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1647*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1648*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE+1)}) 1649*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1650*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1651*4bdc9457SAndroid Build Coastguard Worker } 1652*4bdc9457SAndroid Build Coastguard Worker } 1653*4bdc9457SAndroid Build Coastguard Worker } 1654*4bdc9457SAndroid Build Coastguard Worker 1655*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1656*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_input_scale) { 1657*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1658*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1659*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1660*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1661*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1662*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1663*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1664*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1665*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1666*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1667*4bdc9457SAndroid Build Coastguard Worker } 1668*4bdc9457SAndroid Build Coastguard Worker } 1669*4bdc9457SAndroid Build Coastguard Worker } 1670*4bdc9457SAndroid Build Coastguard Worker 1671*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_input_zero_point) { 1672*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1673*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1674*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1675*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1676*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1677*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1678*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1679*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1680*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1681*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1682*4bdc9457SAndroid Build Coastguard Worker } 1683*4bdc9457SAndroid Build Coastguard Worker } 1684*4bdc9457SAndroid Build Coastguard Worker } 1685*4bdc9457SAndroid Build Coastguard Worker 1686*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_output_scale) { 1687*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1688*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1689*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1690*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1691*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1692*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1693*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1694*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1695*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1696*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1697*4bdc9457SAndroid Build Coastguard Worker } 1698*4bdc9457SAndroid Build Coastguard Worker } 1699*4bdc9457SAndroid Build Coastguard Worker } 1700*4bdc9457SAndroid Build Coastguard Worker 1701*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_output_zero_point) { 1702*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1703*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1704*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1705*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1706*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1707*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1708*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1709*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1710*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1711*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1712*4bdc9457SAndroid Build Coastguard Worker } 1713*4bdc9457SAndroid Build Coastguard Worker } 1714*4bdc9457SAndroid Build Coastguard Worker } 1715*4bdc9457SAndroid Build Coastguard Worker 1716*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_qmin) { 1717*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1718*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1719*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1720*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1721*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1722*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1723*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1724*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1725*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1726*4bdc9457SAndroid Build Coastguard Worker } 1727*4bdc9457SAndroid Build Coastguard Worker } 1728*4bdc9457SAndroid Build Coastguard Worker 1729*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_eq_${CHANNEL_TILE}_multipass_with_qmax) { 1730*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1731*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1732*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1733*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1734*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1735*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1736*4bdc9457SAndroid Build Coastguard Worker .channels(${CHANNEL_TILE}) 1737*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1738*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1739*4bdc9457SAndroid Build Coastguard Worker } 1740*4bdc9457SAndroid Build Coastguard Worker } 1741*4bdc9457SAndroid Build Coastguard Worker 1742*4bdc9457SAndroid Build Coastguard Worker $if CHANNEL_TILE > 1: 1743*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass) { 1744*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1745*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1746*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1747*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1748*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1749*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1750*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1751*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1752*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1753*4bdc9457SAndroid Build Coastguard Worker } 1754*4bdc9457SAndroid Build Coastguard Worker } 1755*4bdc9457SAndroid Build Coastguard Worker } 1756*4bdc9457SAndroid Build Coastguard Worker 1757*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_input_offset) { 1758*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1759*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1760*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1761*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1762*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1763*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1764*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1765*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1766*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 1767*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1768*4bdc9457SAndroid Build Coastguard Worker } 1769*4bdc9457SAndroid Build Coastguard Worker } 1770*4bdc9457SAndroid Build Coastguard Worker } 1771*4bdc9457SAndroid Build Coastguard Worker 1772*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_zero) { 1773*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1774*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1775*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1776*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1777*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1778*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1779*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1780*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1781*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1782*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*8)}) 1783*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1784*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1785*4bdc9457SAndroid Build Coastguard Worker } 1786*4bdc9457SAndroid Build Coastguard Worker } 1787*4bdc9457SAndroid Build Coastguard Worker } 1788*4bdc9457SAndroid Build Coastguard Worker } 1789*4bdc9457SAndroid Build Coastguard Worker 1790*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1791*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_input_scale) { 1792*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1793*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1794*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1795*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1796*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1797*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1798*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1799*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1800*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1801*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1802*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1803*4bdc9457SAndroid Build Coastguard Worker } 1804*4bdc9457SAndroid Build Coastguard Worker } 1805*4bdc9457SAndroid Build Coastguard Worker } 1806*4bdc9457SAndroid Build Coastguard Worker } 1807*4bdc9457SAndroid Build Coastguard Worker 1808*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_input_zero_point) { 1809*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1810*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1811*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1812*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1813*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1814*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1815*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1816*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1817*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1818*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1819*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1820*4bdc9457SAndroid Build Coastguard Worker } 1821*4bdc9457SAndroid Build Coastguard Worker } 1822*4bdc9457SAndroid Build Coastguard Worker } 1823*4bdc9457SAndroid Build Coastguard Worker } 1824*4bdc9457SAndroid Build Coastguard Worker 1825*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_output_scale) { 1826*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1827*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1828*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1829*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1830*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1831*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1832*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1833*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1834*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1835*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1836*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1837*4bdc9457SAndroid Build Coastguard Worker } 1838*4bdc9457SAndroid Build Coastguard Worker } 1839*4bdc9457SAndroid Build Coastguard Worker } 1840*4bdc9457SAndroid Build Coastguard Worker } 1841*4bdc9457SAndroid Build Coastguard Worker 1842*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_output_zero_point) { 1843*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1844*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1845*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1846*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1847*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1848*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1849*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1850*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1851*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1852*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1853*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1854*4bdc9457SAndroid Build Coastguard Worker } 1855*4bdc9457SAndroid Build Coastguard Worker } 1856*4bdc9457SAndroid Build Coastguard Worker } 1857*4bdc9457SAndroid Build Coastguard Worker } 1858*4bdc9457SAndroid Build Coastguard Worker 1859*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_qmin) { 1860*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1861*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1862*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1863*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1864*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1865*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1866*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1867*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1868*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1869*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1870*4bdc9457SAndroid Build Coastguard Worker } 1871*4bdc9457SAndroid Build Coastguard Worker } 1872*4bdc9457SAndroid Build Coastguard Worker } 1873*4bdc9457SAndroid Build Coastguard Worker 1874*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_div_${CHANNEL_TILE}_multipass_with_qmax) { 1875*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1876*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1877*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1878*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE*2}; channels < ${CHANNEL_TILE*8}; channels += ${CHANNEL_TILE}) { 1879*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1880*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1881*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1882*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1883*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1884*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1885*4bdc9457SAndroid Build Coastguard Worker } 1886*4bdc9457SAndroid Build Coastguard Worker } 1887*4bdc9457SAndroid Build Coastguard Worker } 1888*4bdc9457SAndroid Build Coastguard Worker 1889*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass) { 1890*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1891*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1892*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1893*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1894*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1895*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1896*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1897*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1898*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1899*4bdc9457SAndroid Build Coastguard Worker } 1900*4bdc9457SAndroid Build Coastguard Worker } 1901*4bdc9457SAndroid Build Coastguard Worker } 1902*4bdc9457SAndroid Build Coastguard Worker 1903*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_input_offset) { 1904*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1905*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1906*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1907*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1908*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1909*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1910*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1911*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1912*4bdc9457SAndroid Build Coastguard Worker .input_offset(${CHANNEL_TILE}) 1913*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1914*4bdc9457SAndroid Build Coastguard Worker } 1915*4bdc9457SAndroid Build Coastguard Worker } 1916*4bdc9457SAndroid Build Coastguard Worker } 1917*4bdc9457SAndroid Build Coastguard Worker 1918*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_zero) { 1919*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1920*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1921*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1922*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1923*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 1924*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1925*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1926*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1927*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1928*4bdc9457SAndroid Build Coastguard Worker .input_offset(${CHANNEL_TILE}) 1929*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 1930*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1931*4bdc9457SAndroid Build Coastguard Worker } 1932*4bdc9457SAndroid Build Coastguard Worker } 1933*4bdc9457SAndroid Build Coastguard Worker } 1934*4bdc9457SAndroid Build Coastguard Worker } 1935*4bdc9457SAndroid Build Coastguard Worker 1936*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 1937*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_input_scale) { 1938*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1939*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1940*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1941*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1942*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1943*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1944*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1945*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1946*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1947*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 1948*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1949*4bdc9457SAndroid Build Coastguard Worker } 1950*4bdc9457SAndroid Build Coastguard Worker } 1951*4bdc9457SAndroid Build Coastguard Worker } 1952*4bdc9457SAndroid Build Coastguard Worker } 1953*4bdc9457SAndroid Build Coastguard Worker 1954*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_input_zero_point) { 1955*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1956*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1957*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1958*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1959*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1960*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1961*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1962*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1963*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1964*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 1965*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1966*4bdc9457SAndroid Build Coastguard Worker } 1967*4bdc9457SAndroid Build Coastguard Worker } 1968*4bdc9457SAndroid Build Coastguard Worker } 1969*4bdc9457SAndroid Build Coastguard Worker } 1970*4bdc9457SAndroid Build Coastguard Worker 1971*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_output_scale) { 1972*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1973*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1974*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1975*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1976*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 1977*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1978*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1979*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1980*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1981*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 1982*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 1983*4bdc9457SAndroid Build Coastguard Worker } 1984*4bdc9457SAndroid Build Coastguard Worker } 1985*4bdc9457SAndroid Build Coastguard Worker } 1986*4bdc9457SAndroid Build Coastguard Worker } 1987*4bdc9457SAndroid Build Coastguard Worker 1988*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_output_zero_point) { 1989*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 1990*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 1991*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 1992*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 1993*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 1994*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 1995*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 1996*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 1997*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1998*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 1999*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2000*4bdc9457SAndroid Build Coastguard Worker } 2001*4bdc9457SAndroid Build Coastguard Worker } 2002*4bdc9457SAndroid Build Coastguard Worker } 2003*4bdc9457SAndroid Build Coastguard Worker } 2004*4bdc9457SAndroid Build Coastguard Worker 2005*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_qmin) { 2006*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2007*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2008*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2009*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 2010*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2011*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2012*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2013*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2014*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2015*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2016*4bdc9457SAndroid Build Coastguard Worker } 2017*4bdc9457SAndroid Build Coastguard Worker } 2018*4bdc9457SAndroid Build Coastguard Worker } 2019*4bdc9457SAndroid Build Coastguard Worker 2020*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_lt_${CHANNEL_TILE}_multipass_with_qmax) { 2021*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2022*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2023*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2024*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < ${CHANNEL_TILE}; channels++) { 2025*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2026*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2027*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2028*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2029*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2030*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2031*4bdc9457SAndroid Build Coastguard Worker } 2032*4bdc9457SAndroid Build Coastguard Worker } 2033*4bdc9457SAndroid Build Coastguard Worker } 2034*4bdc9457SAndroid Build Coastguard Worker 2035*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass) { 2036*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2037*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2038*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2039*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2040*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2041*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2042*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2043*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2044*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2045*4bdc9457SAndroid Build Coastguard Worker } 2046*4bdc9457SAndroid Build Coastguard Worker } 2047*4bdc9457SAndroid Build Coastguard Worker } 2048*4bdc9457SAndroid Build Coastguard Worker 2049*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_input_offset) { 2050*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2051*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2052*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2053*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2054*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2055*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2056*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2057*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2058*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 2059*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2060*4bdc9457SAndroid Build Coastguard Worker } 2061*4bdc9457SAndroid Build Coastguard Worker } 2062*4bdc9457SAndroid Build Coastguard Worker } 2063*4bdc9457SAndroid Build Coastguard Worker 2064*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_zero) { 2065*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2066*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2067*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2068*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2069*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 2070*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2071*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2072*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2073*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2074*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*2)}) 2075*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 2076*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2077*4bdc9457SAndroid Build Coastguard Worker } 2078*4bdc9457SAndroid Build Coastguard Worker } 2079*4bdc9457SAndroid Build Coastguard Worker } 2080*4bdc9457SAndroid Build Coastguard Worker } 2081*4bdc9457SAndroid Build Coastguard Worker 2082*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 2083*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_input_scale) { 2084*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2085*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2086*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2087*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2088*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 2089*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2090*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2091*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2092*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2093*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 2094*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2095*4bdc9457SAndroid Build Coastguard Worker } 2096*4bdc9457SAndroid Build Coastguard Worker } 2097*4bdc9457SAndroid Build Coastguard Worker } 2098*4bdc9457SAndroid Build Coastguard Worker } 2099*4bdc9457SAndroid Build Coastguard Worker 2100*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_input_zero_point) { 2101*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2102*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2103*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2104*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2105*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 2106*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2107*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2108*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2109*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2110*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 2111*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2112*4bdc9457SAndroid Build Coastguard Worker } 2113*4bdc9457SAndroid Build Coastguard Worker } 2114*4bdc9457SAndroid Build Coastguard Worker } 2115*4bdc9457SAndroid Build Coastguard Worker } 2116*4bdc9457SAndroid Build Coastguard Worker 2117*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_output_scale) { 2118*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2119*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2120*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2121*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2122*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 2123*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2124*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2125*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2126*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2127*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 2128*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2129*4bdc9457SAndroid Build Coastguard Worker } 2130*4bdc9457SAndroid Build Coastguard Worker } 2131*4bdc9457SAndroid Build Coastguard Worker } 2132*4bdc9457SAndroid Build Coastguard Worker } 2133*4bdc9457SAndroid Build Coastguard Worker 2134*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_output_zero_point) { 2135*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2136*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2137*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2138*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2139*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 2140*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2141*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2142*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2143*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2144*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 2145*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2146*4bdc9457SAndroid Build Coastguard Worker } 2147*4bdc9457SAndroid Build Coastguard Worker } 2148*4bdc9457SAndroid Build Coastguard Worker } 2149*4bdc9457SAndroid Build Coastguard Worker } 2150*4bdc9457SAndroid Build Coastguard Worker 2151*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_qmin) { 2152*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2153*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2154*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2155*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2156*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2157*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2158*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2159*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2160*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2161*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2162*4bdc9457SAndroid Build Coastguard Worker } 2163*4bdc9457SAndroid Build Coastguard Worker } 2164*4bdc9457SAndroid Build Coastguard Worker } 2165*4bdc9457SAndroid Build Coastguard Worker 2166*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, channels_gt_${CHANNEL_TILE}_multipass_with_qmax) { 2167*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2168*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2169*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements = ${PRIMARY_TILE+INCREMENTAL_TILE+1}; pooling_elements <= ${PRIMARY_TILE+INCREMENTAL_TILE*3}; pooling_elements += 3) { 2170*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = ${CHANNEL_TILE+1}; channels < ${10 if CHANNEL_TILE == 1 else CHANNEL_TILE*2}; channels++) { 2171*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2172*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2173*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2174*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2175*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2176*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2177*4bdc9457SAndroid Build Coastguard Worker } 2178*4bdc9457SAndroid Build Coastguard Worker } 2179*4bdc9457SAndroid Build Coastguard Worker } 2180*4bdc9457SAndroid Build Coastguard Worker 2181*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels) { 2182*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2183*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2184*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2185*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2186*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2187*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2188*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2189*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2190*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2191*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2192*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2193*4bdc9457SAndroid Build Coastguard Worker } 2194*4bdc9457SAndroid Build Coastguard Worker } 2195*4bdc9457SAndroid Build Coastguard Worker } 2196*4bdc9457SAndroid Build Coastguard Worker } 2197*4bdc9457SAndroid Build Coastguard Worker 2198*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_offset) { 2199*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2200*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2201*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2202*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2203*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2204*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2205*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2206*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2207*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2208*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2209*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5+1)}) 2210*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2211*4bdc9457SAndroid Build Coastguard Worker } 2212*4bdc9457SAndroid Build Coastguard Worker } 2213*4bdc9457SAndroid Build Coastguard Worker } 2214*4bdc9457SAndroid Build Coastguard Worker } 2215*4bdc9457SAndroid Build Coastguard Worker 2216*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_zero) { 2217*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2218*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2219*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2220*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2221*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2222*4bdc9457SAndroid Build Coastguard Worker for (size_t zero_index = 0; zero_index < pooling_elements; zero_index++) { 2223*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2224*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2225*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2226*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2227*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2228*4bdc9457SAndroid Build Coastguard Worker .input_offset(${next_prime(CHANNEL_TILE*5+1)}) 2229*4bdc9457SAndroid Build Coastguard Worker .zero_index(zero_index) 2230*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2231*4bdc9457SAndroid Build Coastguard Worker } 2232*4bdc9457SAndroid Build Coastguard Worker } 2233*4bdc9457SAndroid Build Coastguard Worker } 2234*4bdc9457SAndroid Build Coastguard Worker } 2235*4bdc9457SAndroid Build Coastguard Worker } 2236*4bdc9457SAndroid Build Coastguard Worker 2237*4bdc9457SAndroid Build Coastguard Worker $if DATATYPE == "qu8": 2238*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_scale) { 2239*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2240*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2241*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2242*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2243*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2244*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 2245*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2246*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2247*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2248*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2249*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2250*4bdc9457SAndroid Build Coastguard Worker .input_scale(scale) 2251*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2252*4bdc9457SAndroid Build Coastguard Worker } 2253*4bdc9457SAndroid Build Coastguard Worker } 2254*4bdc9457SAndroid Build Coastguard Worker } 2255*4bdc9457SAndroid Build Coastguard Worker } 2256*4bdc9457SAndroid Build Coastguard Worker } 2257*4bdc9457SAndroid Build Coastguard Worker 2258*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_input_zero_point) { 2259*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2260*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2261*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2262*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2263*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2264*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 2265*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2266*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2267*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2268*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2269*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2270*4bdc9457SAndroid Build Coastguard Worker .input_zero_point(zero_point) 2271*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2272*4bdc9457SAndroid Build Coastguard Worker } 2273*4bdc9457SAndroid Build Coastguard Worker } 2274*4bdc9457SAndroid Build Coastguard Worker } 2275*4bdc9457SAndroid Build Coastguard Worker } 2276*4bdc9457SAndroid Build Coastguard Worker } 2277*4bdc9457SAndroid Build Coastguard Worker 2278*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_scale) { 2279*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2280*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2281*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2282*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2283*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2284*4bdc9457SAndroid Build Coastguard Worker for (float scale = 0.01f; scale < 100.0f; scale *= 3.14159265f) { 2285*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2286*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2287*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2288*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2289*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2290*4bdc9457SAndroid Build Coastguard Worker .output_scale(scale) 2291*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2292*4bdc9457SAndroid Build Coastguard Worker } 2293*4bdc9457SAndroid Build Coastguard Worker } 2294*4bdc9457SAndroid Build Coastguard Worker } 2295*4bdc9457SAndroid Build Coastguard Worker } 2296*4bdc9457SAndroid Build Coastguard Worker } 2297*4bdc9457SAndroid Build Coastguard Worker 2298*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_zero_point) { 2299*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2300*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2301*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2302*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2303*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2304*4bdc9457SAndroid Build Coastguard Worker for (int32_t zero_point = 0; zero_point <= 255; zero_point += 51) { 2305*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2306*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2307*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2308*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2309*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2310*4bdc9457SAndroid Build Coastguard Worker .output_zero_point(zero_point) 2311*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2312*4bdc9457SAndroid Build Coastguard Worker } 2313*4bdc9457SAndroid Build Coastguard Worker } 2314*4bdc9457SAndroid Build Coastguard Worker } 2315*4bdc9457SAndroid Build Coastguard Worker } 2316*4bdc9457SAndroid Build Coastguard Worker } 2317*4bdc9457SAndroid Build Coastguard Worker 2318*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_qmin) { 2319*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2320*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2321*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2322*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2323*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2324*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2325*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2326*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2327*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2328*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2329*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2330*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2331*4bdc9457SAndroid Build Coastguard Worker } 2332*4bdc9457SAndroid Build Coastguard Worker } 2333*4bdc9457SAndroid Build Coastguard Worker } 2334*4bdc9457SAndroid Build Coastguard Worker } 2335*4bdc9457SAndroid Build Coastguard Worker 2336*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_qmax) { 2337*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2338*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2339*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2340*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2341*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2342*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2343*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2344*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2345*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2346*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2347*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2348*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2349*4bdc9457SAndroid Build Coastguard Worker } 2350*4bdc9457SAndroid Build Coastguard Worker } 2351*4bdc9457SAndroid Build Coastguard Worker } 2352*4bdc9457SAndroid Build Coastguard Worker } 2353*4bdc9457SAndroid Build Coastguard Worker 2354*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_output_stride) { 2355*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2356*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2357*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2358*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2359*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2360*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2361*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2362*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2363*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2364*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2365*4bdc9457SAndroid Build Coastguard Worker .output_stride(${next_prime(CHANNEL_TILE*5+1)}) 2366*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2367*4bdc9457SAndroid Build Coastguard Worker } 2368*4bdc9457SAndroid Build Coastguard Worker } 2369*4bdc9457SAndroid Build Coastguard Worker } 2370*4bdc9457SAndroid Build Coastguard Worker } 2371*4bdc9457SAndroid Build Coastguard Worker 2372*4bdc9457SAndroid Build Coastguard Worker TEST(${TEST_NAME}, few_output_pixels_with_step) { 2373*4bdc9457SAndroid Build Coastguard Worker $if ISA_CHECK: 2374*4bdc9457SAndroid Build Coastguard Worker ${ISA_CHECK}; 2375*4bdc9457SAndroid Build Coastguard Worker for (size_t output_pixels = 2; output_pixels <= 5; output_pixels++) { 2376*4bdc9457SAndroid Build Coastguard Worker for (size_t pooling_elements : std::vector<size_t>{{${PRIMARY_TILE+1}, ${PRIMARY_TILE+INCREMENTAL_TILE-1}, ${PRIMARY_TILE+INCREMENTAL_TILE+1}}}) { 2377*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= ${CHANNEL_TILE*5}; channels += ${max(1, CHANNEL_TILE-1)}) { 2378*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= pooling_elements; step++) { 2379*4bdc9457SAndroid Build Coastguard Worker AvgPoolMicrokernelTester() 2380*4bdc9457SAndroid Build Coastguard Worker .output_pixels(output_pixels) 2381*4bdc9457SAndroid Build Coastguard Worker .pooling_elements(pooling_elements) 2382*4bdc9457SAndroid Build Coastguard Worker .pooling_tile(${PRIMARY_TILE}, ${INCREMENTAL_TILE}) 2383*4bdc9457SAndroid Build Coastguard Worker .step(step) 2384*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2385*4bdc9457SAndroid Build Coastguard Worker .output_stride(${next_prime(CHANNEL_TILE*5+1)}) 2386*4bdc9457SAndroid Build Coastguard Worker .Test(${", ".join(TEST_ARGS)}); 2387*4bdc9457SAndroid Build Coastguard Worker } 2388*4bdc9457SAndroid Build Coastguard Worker } 2389*4bdc9457SAndroid Build Coastguard Worker } 2390*4bdc9457SAndroid Build Coastguard Worker } 2391*4bdc9457SAndroid Build Coastguard Worker } 2392*4bdc9457SAndroid Build Coastguard Worker""" 2393*4bdc9457SAndroid Build Coastguard Worker 2394*4bdc9457SAndroid Build Coastguard Worker 2395*4bdc9457SAndroid Build Coastguard Workerdef generate_test_cases(ukernel, init_fn, primary_tile, incremental_tile, 2396*4bdc9457SAndroid Build Coastguard Worker channel_tile, isa): 2397*4bdc9457SAndroid Build Coastguard Worker """Generates all tests cases for a AVGPOOL micro-kernel. 2398*4bdc9457SAndroid Build Coastguard Worker 2399*4bdc9457SAndroid Build Coastguard Worker Args: 2400*4bdc9457SAndroid Build Coastguard Worker ukernel: C name of the micro-kernel function. 2401*4bdc9457SAndroid Build Coastguard Worker init_fn: C name of the function to initialize microkernel parameters. 2402*4bdc9457SAndroid Build Coastguard Worker primary_tile: Number of rows (pixels) processed per one iteration of the 2403*4bdc9457SAndroid Build Coastguard Worker primary outer loop of the micro-kernel. 2404*4bdc9457SAndroid Build Coastguard Worker incremental_tile: Number of rows (pixels) processed per one iteration of 2405*4bdc9457SAndroid Build Coastguard Worker the incremental outer loop of the micro-kernel. 2406*4bdc9457SAndroid Build Coastguard Worker channel_tile: Number of channels processed per one iteration of the inner 2407*4bdc9457SAndroid Build Coastguard Worker loops of the micro-kernel. 2408*4bdc9457SAndroid Build Coastguard Worker isa: instruction set required to run the micro-kernel. Generated unit test 2409*4bdc9457SAndroid Build Coastguard Worker will skip execution if the host processor doesn't support this ISA. 2410*4bdc9457SAndroid Build Coastguard Worker 2411*4bdc9457SAndroid Build Coastguard Worker Returns: 2412*4bdc9457SAndroid Build Coastguard Worker Code for the test case. 2413*4bdc9457SAndroid Build Coastguard Worker """ 2414*4bdc9457SAndroid Build Coastguard Worker _, test_name = ukernel.split("_", 1) 2415*4bdc9457SAndroid Build Coastguard Worker _, datatype, ukernel_type, _ = ukernel.split("_", 3) 2416*4bdc9457SAndroid Build Coastguard Worker test_args = [ukernel, init_fn] 2417*4bdc9457SAndroid Build Coastguard Worker return xngen.preprocess(AVGPOOL_TEST_TEMPLATE, { 2418*4bdc9457SAndroid Build Coastguard Worker "TEST_NAME": test_name.upper().replace("UKERNEL_", ""), 2419*4bdc9457SAndroid Build Coastguard Worker "TEST_ARGS": test_args, 2420*4bdc9457SAndroid Build Coastguard Worker "DATATYPE": datatype, 2421*4bdc9457SAndroid Build Coastguard Worker "PRIMARY_TILE": primary_tile, 2422*4bdc9457SAndroid Build Coastguard Worker "INCREMENTAL_TILE": incremental_tile, 2423*4bdc9457SAndroid Build Coastguard Worker "CHANNEL_TILE": channel_tile, 2424*4bdc9457SAndroid Build Coastguard Worker "ISA_CHECK": xnncommon.generate_isa_check_macro(isa), 2425*4bdc9457SAndroid Build Coastguard Worker "next_prime": next_prime, 2426*4bdc9457SAndroid Build Coastguard Worker }) 2427*4bdc9457SAndroid Build Coastguard Worker 2428*4bdc9457SAndroid Build Coastguard Worker 2429*4bdc9457SAndroid Build Coastguard Workerdef main(args): 2430*4bdc9457SAndroid Build Coastguard Worker options = parser.parse_args(args) 2431*4bdc9457SAndroid Build Coastguard Worker 2432*4bdc9457SAndroid Build Coastguard Worker with codecs.open(options.spec, "r", encoding="utf-8") as spec_file: 2433*4bdc9457SAndroid Build Coastguard Worker spec_yaml = yaml.safe_load(spec_file) 2434*4bdc9457SAndroid Build Coastguard Worker if not isinstance(spec_yaml, list): 2435*4bdc9457SAndroid Build Coastguard Worker raise ValueError("expected a list of micro-kernels in the spec") 2436*4bdc9457SAndroid Build Coastguard Worker 2437*4bdc9457SAndroid Build Coastguard Worker tests = """\ 2438*4bdc9457SAndroid Build Coastguard Worker// Copyright (c) Facebook, Inc. and its affiliates. 2439*4bdc9457SAndroid Build Coastguard Worker// All rights reserved. 2440*4bdc9457SAndroid Build Coastguard Worker// 2441*4bdc9457SAndroid Build Coastguard Worker// Copyright 2020 Google LLC 2442*4bdc9457SAndroid Build Coastguard Worker// 2443*4bdc9457SAndroid Build Coastguard Worker// This source code is licensed under the BSD-style license found in the 2444*4bdc9457SAndroid Build Coastguard Worker// LICENSE file in the root directory of this source tree. 2445*4bdc9457SAndroid Build Coastguard Worker// 2446*4bdc9457SAndroid Build Coastguard Worker// Auto-generated file. Do not edit! 2447*4bdc9457SAndroid Build Coastguard Worker// Specification: {specification} 2448*4bdc9457SAndroid Build Coastguard Worker// Generator: {generator} 2449*4bdc9457SAndroid Build Coastguard Worker 2450*4bdc9457SAndroid Build Coastguard Worker 2451*4bdc9457SAndroid Build Coastguard Worker#include <gtest/gtest.h> 2452*4bdc9457SAndroid Build Coastguard Worker 2453*4bdc9457SAndroid Build Coastguard Worker#include <xnnpack/common.h> 2454*4bdc9457SAndroid Build Coastguard Worker#include <xnnpack/isa-checks.h> 2455*4bdc9457SAndroid Build Coastguard Worker 2456*4bdc9457SAndroid Build Coastguard Worker#include <xnnpack/avgpool.h> 2457*4bdc9457SAndroid Build Coastguard Worker#include <xnnpack/pavgpool.h> 2458*4bdc9457SAndroid Build Coastguard Worker#include "avgpool-microkernel-tester.h" 2459*4bdc9457SAndroid Build Coastguard Worker""".format(specification=options.spec, generator=sys.argv[0]) 2460*4bdc9457SAndroid Build Coastguard Worker 2461*4bdc9457SAndroid Build Coastguard Worker for ukernel_spec in spec_yaml: 2462*4bdc9457SAndroid Build Coastguard Worker name = ukernel_spec["name"] 2463*4bdc9457SAndroid Build Coastguard Worker init_fn = ukernel_spec.get("init") 2464*4bdc9457SAndroid Build Coastguard Worker primary_tile, incremental_tile, channel_tile, arch, isa = \ 2465*4bdc9457SAndroid Build Coastguard Worker split_ukernel_name(name) 2466*4bdc9457SAndroid Build Coastguard Worker 2467*4bdc9457SAndroid Build Coastguard Worker # specification can override architecture 2468*4bdc9457SAndroid Build Coastguard Worker arch = ukernel_spec.get("arch", arch) 2469*4bdc9457SAndroid Build Coastguard Worker 2470*4bdc9457SAndroid Build Coastguard Worker test_case = generate_test_cases(name, init_fn, primary_tile, 2471*4bdc9457SAndroid Build Coastguard Worker incremental_tile, channel_tile, isa) 2472*4bdc9457SAndroid Build Coastguard Worker tests += "\n\n" + xnncommon.postprocess_test_case(test_case, arch, isa) 2473*4bdc9457SAndroid Build Coastguard Worker 2474*4bdc9457SAndroid Build Coastguard Worker txt_changed = True 2475*4bdc9457SAndroid Build Coastguard Worker if os.path.exists(options.output): 2476*4bdc9457SAndroid Build Coastguard Worker with codecs.open(options.output, "r", encoding="utf-8") as output_file: 2477*4bdc9457SAndroid Build Coastguard Worker txt_changed = output_file.read() != tests 2478*4bdc9457SAndroid Build Coastguard Worker 2479*4bdc9457SAndroid Build Coastguard Worker if txt_changed: 2480*4bdc9457SAndroid Build Coastguard Worker with codecs.open(options.output, "w", encoding="utf-8") as output_file: 2481*4bdc9457SAndroid Build Coastguard Worker output_file.write(tests) 2482*4bdc9457SAndroid Build Coastguard Worker 2483*4bdc9457SAndroid Build Coastguard Worker 2484*4bdc9457SAndroid Build Coastguard Workerif __name__ == "__main__": 2485*4bdc9457SAndroid Build Coastguard Worker main(sys.argv[1:]) 2486