1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates. 2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved. 3*4bdc9457SAndroid Build Coastguard Worker // 4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 8*4bdc9457SAndroid Build Coastguard Worker 9*4bdc9457SAndroid Build Coastguard Worker #pragma once 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 13*4bdc9457SAndroid Build Coastguard Worker 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 15*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/operator.h> 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 19*4bdc9457SAndroid Build Coastguard Worker extern "C" { 20*4bdc9457SAndroid Build Coastguard Worker #endif 21*4bdc9457SAndroid Build Coastguard Worker 22*4bdc9457SAndroid Build Coastguard Worker 23*4bdc9457SAndroid Build Coastguard Worker struct xnn_qu8_packing_params { 24*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point; 25*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point; 26*4bdc9457SAndroid Build Coastguard Worker }; 27*4bdc9457SAndroid Build Coastguard Worker 28*4bdc9457SAndroid Build Coastguard Worker struct xnn_qs8_packing_params { 29*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point; 30*4bdc9457SAndroid Build Coastguard Worker }; 31*4bdc9457SAndroid Build Coastguard Worker 32*4bdc9457SAndroid Build Coastguard Worker 33*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_gemm_goi_w_function)( 34*4bdc9457SAndroid Build Coastguard Worker size_t g, 35*4bdc9457SAndroid Build Coastguard Worker size_t nc, 36*4bdc9457SAndroid Build Coastguard Worker size_t kc, 37*4bdc9457SAndroid Build Coastguard Worker size_t nr, 38*4bdc9457SAndroid Build Coastguard Worker size_t kr, 39*4bdc9457SAndroid Build Coastguard Worker size_t sr, 40*4bdc9457SAndroid Build Coastguard Worker const void* k, 41*4bdc9457SAndroid Build Coastguard Worker const void* b, 42*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 43*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 44*4bdc9457SAndroid Build Coastguard Worker const void* params); 45*4bdc9457SAndroid Build Coastguard Worker 46*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_gemm_goi_w( 47*4bdc9457SAndroid Build Coastguard Worker size_t g, 48*4bdc9457SAndroid Build Coastguard Worker size_t nc, 49*4bdc9457SAndroid Build Coastguard Worker size_t kc, 50*4bdc9457SAndroid Build Coastguard Worker size_t nr, 51*4bdc9457SAndroid Build Coastguard Worker size_t kr, 52*4bdc9457SAndroid Build Coastguard Worker size_t sr, 53*4bdc9457SAndroid Build Coastguard Worker const float* k, 54*4bdc9457SAndroid Build Coastguard Worker const float* b, 55*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 56*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 57*4bdc9457SAndroid Build Coastguard Worker const void* params); 58*4bdc9457SAndroid Build Coastguard Worker 59*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_gemm_goi_w( 60*4bdc9457SAndroid Build Coastguard Worker size_t g, 61*4bdc9457SAndroid Build Coastguard Worker size_t nc, 62*4bdc9457SAndroid Build Coastguard Worker size_t kc, 63*4bdc9457SAndroid Build Coastguard Worker size_t nr, 64*4bdc9457SAndroid Build Coastguard Worker size_t kr, 65*4bdc9457SAndroid Build Coastguard Worker size_t sr, 66*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 67*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 68*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 69*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 70*4bdc9457SAndroid Build Coastguard Worker const void* params); 71*4bdc9457SAndroid Build Coastguard Worker 72*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_gemm_goi_w( 73*4bdc9457SAndroid Build Coastguard Worker size_t g, 74*4bdc9457SAndroid Build Coastguard Worker size_t nc, 75*4bdc9457SAndroid Build Coastguard Worker size_t kc, 76*4bdc9457SAndroid Build Coastguard Worker size_t nr, 77*4bdc9457SAndroid Build Coastguard Worker size_t kr, 78*4bdc9457SAndroid Build Coastguard Worker size_t sr, 79*4bdc9457SAndroid Build Coastguard Worker const float* k, 80*4bdc9457SAndroid Build Coastguard Worker const float* b, 81*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 82*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 83*4bdc9457SAndroid Build Coastguard Worker const void* params); 84*4bdc9457SAndroid Build Coastguard Worker 85*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_gemm_goi_w( 86*4bdc9457SAndroid Build Coastguard Worker size_t g, 87*4bdc9457SAndroid Build Coastguard Worker size_t nc, 88*4bdc9457SAndroid Build Coastguard Worker size_t kc, 89*4bdc9457SAndroid Build Coastguard Worker size_t nr, 90*4bdc9457SAndroid Build Coastguard Worker size_t kr, 91*4bdc9457SAndroid Build Coastguard Worker size_t sr, 92*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 93*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 94*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 95*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 96*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 97*4bdc9457SAndroid Build Coastguard Worker 98*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_gemm_goi_w( 99*4bdc9457SAndroid Build Coastguard Worker size_t g, 100*4bdc9457SAndroid Build Coastguard Worker size_t nc, 101*4bdc9457SAndroid Build Coastguard Worker size_t kc, 102*4bdc9457SAndroid Build Coastguard Worker size_t nr, 103*4bdc9457SAndroid Build Coastguard Worker size_t kr, 104*4bdc9457SAndroid Build Coastguard Worker size_t sr, 105*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 106*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 107*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 108*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 109*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 110*4bdc9457SAndroid Build Coastguard Worker 111*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_gemm_xw_goi_w( 112*4bdc9457SAndroid Build Coastguard Worker size_t g, 113*4bdc9457SAndroid Build Coastguard Worker size_t nc, 114*4bdc9457SAndroid Build Coastguard Worker size_t kc, 115*4bdc9457SAndroid Build Coastguard Worker size_t nr, 116*4bdc9457SAndroid Build Coastguard Worker size_t kr, 117*4bdc9457SAndroid Build Coastguard Worker size_t sr, 118*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 119*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 120*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 121*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 122*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 123*4bdc9457SAndroid Build Coastguard Worker 124*4bdc9457SAndroid Build Coastguard Worker 125*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_gemm_io_w_function)( 126*4bdc9457SAndroid Build Coastguard Worker size_t nc, 127*4bdc9457SAndroid Build Coastguard Worker size_t kc, 128*4bdc9457SAndroid Build Coastguard Worker size_t nr, 129*4bdc9457SAndroid Build Coastguard Worker size_t kr, 130*4bdc9457SAndroid Build Coastguard Worker size_t sr, 131*4bdc9457SAndroid Build Coastguard Worker const void* k, 132*4bdc9457SAndroid Build Coastguard Worker const void* b, 133*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 134*4bdc9457SAndroid Build Coastguard Worker const void* params); 135*4bdc9457SAndroid Build Coastguard Worker 136*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_gemm_io_w( 137*4bdc9457SAndroid Build Coastguard Worker size_t nc, 138*4bdc9457SAndroid Build Coastguard Worker size_t kc, 139*4bdc9457SAndroid Build Coastguard Worker size_t nr, 140*4bdc9457SAndroid Build Coastguard Worker size_t kr, 141*4bdc9457SAndroid Build Coastguard Worker size_t sr, 142*4bdc9457SAndroid Build Coastguard Worker const float* k, 143*4bdc9457SAndroid Build Coastguard Worker const float* b, 144*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 145*4bdc9457SAndroid Build Coastguard Worker const void* params); 146*4bdc9457SAndroid Build Coastguard Worker 147*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_gemm_io_w( 148*4bdc9457SAndroid Build Coastguard Worker size_t nc, 149*4bdc9457SAndroid Build Coastguard Worker size_t kc, 150*4bdc9457SAndroid Build Coastguard Worker size_t nr, 151*4bdc9457SAndroid Build Coastguard Worker size_t kr, 152*4bdc9457SAndroid Build Coastguard Worker size_t sr, 153*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 154*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 155*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 156*4bdc9457SAndroid Build Coastguard Worker const void* params); 157*4bdc9457SAndroid Build Coastguard Worker 158*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_gemm_io_w( 159*4bdc9457SAndroid Build Coastguard Worker size_t nc, 160*4bdc9457SAndroid Build Coastguard Worker size_t kc, 161*4bdc9457SAndroid Build Coastguard Worker size_t nr, 162*4bdc9457SAndroid Build Coastguard Worker size_t kr, 163*4bdc9457SAndroid Build Coastguard Worker size_t sr, 164*4bdc9457SAndroid Build Coastguard Worker const float* k, 165*4bdc9457SAndroid Build Coastguard Worker const float* b, 166*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 167*4bdc9457SAndroid Build Coastguard Worker const void* params); 168*4bdc9457SAndroid Build Coastguard Worker 169*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_gemm_io_w( 170*4bdc9457SAndroid Build Coastguard Worker size_t nc, 171*4bdc9457SAndroid Build Coastguard Worker size_t kc, 172*4bdc9457SAndroid Build Coastguard Worker size_t nr, 173*4bdc9457SAndroid Build Coastguard Worker size_t kr, 174*4bdc9457SAndroid Build Coastguard Worker size_t sr, 175*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 176*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 177*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 178*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 179*4bdc9457SAndroid Build Coastguard Worker 180*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_gemm_io_w( 181*4bdc9457SAndroid Build Coastguard Worker size_t nc, 182*4bdc9457SAndroid Build Coastguard Worker size_t kc, 183*4bdc9457SAndroid Build Coastguard Worker size_t nr, 184*4bdc9457SAndroid Build Coastguard Worker size_t kr, 185*4bdc9457SAndroid Build Coastguard Worker size_t sr, 186*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 187*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 188*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 189*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 190*4bdc9457SAndroid Build Coastguard Worker 191*4bdc9457SAndroid Build Coastguard Worker 192*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_conv_goki_w_function)( 193*4bdc9457SAndroid Build Coastguard Worker size_t g, 194*4bdc9457SAndroid Build Coastguard Worker size_t nc, 195*4bdc9457SAndroid Build Coastguard Worker size_t ks, 196*4bdc9457SAndroid Build Coastguard Worker size_t kc, 197*4bdc9457SAndroid Build Coastguard Worker size_t nr, 198*4bdc9457SAndroid Build Coastguard Worker size_t kr, 199*4bdc9457SAndroid Build Coastguard Worker size_t sr, 200*4bdc9457SAndroid Build Coastguard Worker const void* k, 201*4bdc9457SAndroid Build Coastguard Worker const void* b, 202*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 203*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 204*4bdc9457SAndroid Build Coastguard Worker const void* params); 205*4bdc9457SAndroid Build Coastguard Worker 206*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_conv_goki_w( 207*4bdc9457SAndroid Build Coastguard Worker size_t g, 208*4bdc9457SAndroid Build Coastguard Worker size_t nc, 209*4bdc9457SAndroid Build Coastguard Worker size_t ks, 210*4bdc9457SAndroid Build Coastguard Worker size_t kc, 211*4bdc9457SAndroid Build Coastguard Worker size_t nr, 212*4bdc9457SAndroid Build Coastguard Worker size_t kr, 213*4bdc9457SAndroid Build Coastguard Worker size_t sr, 214*4bdc9457SAndroid Build Coastguard Worker const float* k, 215*4bdc9457SAndroid Build Coastguard Worker const float* b, 216*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 217*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 218*4bdc9457SAndroid Build Coastguard Worker const void* params); 219*4bdc9457SAndroid Build Coastguard Worker 220*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_conv_goki_w( 221*4bdc9457SAndroid Build Coastguard Worker size_t g, 222*4bdc9457SAndroid Build Coastguard Worker size_t nc, 223*4bdc9457SAndroid Build Coastguard Worker size_t ks, 224*4bdc9457SAndroid Build Coastguard Worker size_t kc, 225*4bdc9457SAndroid Build Coastguard Worker size_t nr, 226*4bdc9457SAndroid Build Coastguard Worker size_t kr, 227*4bdc9457SAndroid Build Coastguard Worker size_t sr, 228*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 229*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 230*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 231*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 232*4bdc9457SAndroid Build Coastguard Worker const void* params); 233*4bdc9457SAndroid Build Coastguard Worker 234*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_conv_goki_w( 235*4bdc9457SAndroid Build Coastguard Worker size_t g, 236*4bdc9457SAndroid Build Coastguard Worker size_t nc, 237*4bdc9457SAndroid Build Coastguard Worker size_t ks, 238*4bdc9457SAndroid Build Coastguard Worker size_t kc, 239*4bdc9457SAndroid Build Coastguard Worker size_t nr, 240*4bdc9457SAndroid Build Coastguard Worker size_t kr, 241*4bdc9457SAndroid Build Coastguard Worker size_t sr, 242*4bdc9457SAndroid Build Coastguard Worker const float* k, 243*4bdc9457SAndroid Build Coastguard Worker const float* b, 244*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 245*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 246*4bdc9457SAndroid Build Coastguard Worker const void* params); 247*4bdc9457SAndroid Build Coastguard Worker 248*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_conv_goki_w( 249*4bdc9457SAndroid Build Coastguard Worker size_t g, 250*4bdc9457SAndroid Build Coastguard Worker size_t nc, 251*4bdc9457SAndroid Build Coastguard Worker size_t ks, 252*4bdc9457SAndroid Build Coastguard Worker size_t kc, 253*4bdc9457SAndroid Build Coastguard Worker size_t nr, 254*4bdc9457SAndroid Build Coastguard Worker size_t kr, 255*4bdc9457SAndroid Build Coastguard Worker size_t sr, 256*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 257*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 258*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 259*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 260*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 261*4bdc9457SAndroid Build Coastguard Worker 262*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_conv_goki_w( 263*4bdc9457SAndroid Build Coastguard Worker size_t g, 264*4bdc9457SAndroid Build Coastguard Worker size_t nc, 265*4bdc9457SAndroid Build Coastguard Worker size_t ks, 266*4bdc9457SAndroid Build Coastguard Worker size_t kc, 267*4bdc9457SAndroid Build Coastguard Worker size_t nr, 268*4bdc9457SAndroid Build Coastguard Worker size_t kr, 269*4bdc9457SAndroid Build Coastguard Worker size_t sr, 270*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 271*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 272*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 273*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 274*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 275*4bdc9457SAndroid Build Coastguard Worker 276*4bdc9457SAndroid Build Coastguard Worker 277*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_conv_kgo_w_function)( 278*4bdc9457SAndroid Build Coastguard Worker size_t g, 279*4bdc9457SAndroid Build Coastguard Worker size_t nc, 280*4bdc9457SAndroid Build Coastguard Worker size_t ks, 281*4bdc9457SAndroid Build Coastguard Worker size_t nr, 282*4bdc9457SAndroid Build Coastguard Worker size_t kr, 283*4bdc9457SAndroid Build Coastguard Worker size_t sr, 284*4bdc9457SAndroid Build Coastguard Worker const void* k, 285*4bdc9457SAndroid Build Coastguard Worker const void* b, 286*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 287*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 288*4bdc9457SAndroid Build Coastguard Worker const void* params); 289*4bdc9457SAndroid Build Coastguard Worker 290*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_conv_kgo_w( 291*4bdc9457SAndroid Build Coastguard Worker size_t g, 292*4bdc9457SAndroid Build Coastguard Worker size_t nc, 293*4bdc9457SAndroid Build Coastguard Worker size_t ks, 294*4bdc9457SAndroid Build Coastguard Worker size_t nr, 295*4bdc9457SAndroid Build Coastguard Worker size_t kr, 296*4bdc9457SAndroid Build Coastguard Worker size_t sr, 297*4bdc9457SAndroid Build Coastguard Worker const float* k, 298*4bdc9457SAndroid Build Coastguard Worker const float* b, 299*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 300*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 301*4bdc9457SAndroid Build Coastguard Worker const void* params); 302*4bdc9457SAndroid Build Coastguard Worker 303*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_conv_kgo_w( 304*4bdc9457SAndroid Build Coastguard Worker size_t g, 305*4bdc9457SAndroid Build Coastguard Worker size_t nc, 306*4bdc9457SAndroid Build Coastguard Worker size_t ks, 307*4bdc9457SAndroid Build Coastguard Worker size_t nr, 308*4bdc9457SAndroid Build Coastguard Worker size_t kr, 309*4bdc9457SAndroid Build Coastguard Worker size_t sr, 310*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 311*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 312*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 313*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 314*4bdc9457SAndroid Build Coastguard Worker const void* params); 315*4bdc9457SAndroid Build Coastguard Worker 316*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_conv_kgo_w( 317*4bdc9457SAndroid Build Coastguard Worker size_t g, 318*4bdc9457SAndroid Build Coastguard Worker size_t nc, 319*4bdc9457SAndroid Build Coastguard Worker size_t ks, 320*4bdc9457SAndroid Build Coastguard Worker size_t nr, 321*4bdc9457SAndroid Build Coastguard Worker size_t kr, 322*4bdc9457SAndroid Build Coastguard Worker size_t sr, 323*4bdc9457SAndroid Build Coastguard Worker const float* k, 324*4bdc9457SAndroid Build Coastguard Worker const float* b, 325*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 326*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 327*4bdc9457SAndroid Build Coastguard Worker const void* params); 328*4bdc9457SAndroid Build Coastguard Worker 329*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_conv_kgo_w( 330*4bdc9457SAndroid Build Coastguard Worker size_t g, 331*4bdc9457SAndroid Build Coastguard Worker size_t nc, 332*4bdc9457SAndroid Build Coastguard Worker size_t ks, 333*4bdc9457SAndroid Build Coastguard Worker size_t nr, 334*4bdc9457SAndroid Build Coastguard Worker size_t kr, 335*4bdc9457SAndroid Build Coastguard Worker size_t sr, 336*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 337*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 338*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 339*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 340*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 341*4bdc9457SAndroid Build Coastguard Worker 342*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_conv_kgo_w( 343*4bdc9457SAndroid Build Coastguard Worker size_t g, 344*4bdc9457SAndroid Build Coastguard Worker size_t nc, 345*4bdc9457SAndroid Build Coastguard Worker size_t ks, 346*4bdc9457SAndroid Build Coastguard Worker size_t nr, 347*4bdc9457SAndroid Build Coastguard Worker size_t kr, 348*4bdc9457SAndroid Build Coastguard Worker size_t sr, 349*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 350*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 351*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 352*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 353*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 354*4bdc9457SAndroid Build Coastguard Worker 355*4bdc9457SAndroid Build Coastguard Worker 356*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_deconv_goki_w_function)( 357*4bdc9457SAndroid Build Coastguard Worker size_t g, 358*4bdc9457SAndroid Build Coastguard Worker size_t nc, 359*4bdc9457SAndroid Build Coastguard Worker size_t kh, 360*4bdc9457SAndroid Build Coastguard Worker size_t kw, 361*4bdc9457SAndroid Build Coastguard Worker size_t kc, 362*4bdc9457SAndroid Build Coastguard Worker size_t sh, 363*4bdc9457SAndroid Build Coastguard Worker size_t sw, 364*4bdc9457SAndroid Build Coastguard Worker size_t nr, 365*4bdc9457SAndroid Build Coastguard Worker size_t kr, 366*4bdc9457SAndroid Build Coastguard Worker size_t sr, 367*4bdc9457SAndroid Build Coastguard Worker const void* k, 368*4bdc9457SAndroid Build Coastguard Worker const void* b, 369*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 370*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 371*4bdc9457SAndroid Build Coastguard Worker const void* params); 372*4bdc9457SAndroid Build Coastguard Worker 373*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_deconv_goki_w( 374*4bdc9457SAndroid Build Coastguard Worker size_t g, 375*4bdc9457SAndroid Build Coastguard Worker size_t nc, 376*4bdc9457SAndroid Build Coastguard Worker size_t kh, 377*4bdc9457SAndroid Build Coastguard Worker size_t kw, 378*4bdc9457SAndroid Build Coastguard Worker size_t kc, 379*4bdc9457SAndroid Build Coastguard Worker size_t sh, 380*4bdc9457SAndroid Build Coastguard Worker size_t sw, 381*4bdc9457SAndroid Build Coastguard Worker size_t nr, 382*4bdc9457SAndroid Build Coastguard Worker size_t kr, 383*4bdc9457SAndroid Build Coastguard Worker size_t sr, 384*4bdc9457SAndroid Build Coastguard Worker const float* k, 385*4bdc9457SAndroid Build Coastguard Worker const float* b, 386*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 387*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 388*4bdc9457SAndroid Build Coastguard Worker const void* params); 389*4bdc9457SAndroid Build Coastguard Worker 390*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_deconv_goki_w( 391*4bdc9457SAndroid Build Coastguard Worker size_t g, 392*4bdc9457SAndroid Build Coastguard Worker size_t nc, 393*4bdc9457SAndroid Build Coastguard Worker size_t kh, 394*4bdc9457SAndroid Build Coastguard Worker size_t kw, 395*4bdc9457SAndroid Build Coastguard Worker size_t kc, 396*4bdc9457SAndroid Build Coastguard Worker size_t sh, 397*4bdc9457SAndroid Build Coastguard Worker size_t sw, 398*4bdc9457SAndroid Build Coastguard Worker size_t nr, 399*4bdc9457SAndroid Build Coastguard Worker size_t kr, 400*4bdc9457SAndroid Build Coastguard Worker size_t sr, 401*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 402*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 403*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 404*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 405*4bdc9457SAndroid Build Coastguard Worker const void* params); 406*4bdc9457SAndroid Build Coastguard Worker 407*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_deconv_goki_w( 408*4bdc9457SAndroid Build Coastguard Worker size_t g, 409*4bdc9457SAndroid Build Coastguard Worker size_t nc, 410*4bdc9457SAndroid Build Coastguard Worker size_t kh, 411*4bdc9457SAndroid Build Coastguard Worker size_t kw, 412*4bdc9457SAndroid Build Coastguard Worker size_t kc, 413*4bdc9457SAndroid Build Coastguard Worker size_t sh, 414*4bdc9457SAndroid Build Coastguard Worker size_t sw, 415*4bdc9457SAndroid Build Coastguard Worker size_t nr, 416*4bdc9457SAndroid Build Coastguard Worker size_t kr, 417*4bdc9457SAndroid Build Coastguard Worker size_t sr, 418*4bdc9457SAndroid Build Coastguard Worker const float* k, 419*4bdc9457SAndroid Build Coastguard Worker const float* b, 420*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 421*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 422*4bdc9457SAndroid Build Coastguard Worker const void* params); 423*4bdc9457SAndroid Build Coastguard Worker 424*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_deconv_goki_w( 425*4bdc9457SAndroid Build Coastguard Worker size_t g, 426*4bdc9457SAndroid Build Coastguard Worker size_t nc, 427*4bdc9457SAndroid Build Coastguard Worker size_t kh, 428*4bdc9457SAndroid Build Coastguard Worker size_t kw, 429*4bdc9457SAndroid Build Coastguard Worker size_t kc, 430*4bdc9457SAndroid Build Coastguard Worker size_t sh, 431*4bdc9457SAndroid Build Coastguard Worker size_t sw, 432*4bdc9457SAndroid Build Coastguard Worker size_t nr, 433*4bdc9457SAndroid Build Coastguard Worker size_t kr, 434*4bdc9457SAndroid Build Coastguard Worker size_t sr, 435*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 436*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 437*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 438*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 439*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 440*4bdc9457SAndroid Build Coastguard Worker 441*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_deconv_goki_w( 442*4bdc9457SAndroid Build Coastguard Worker size_t g, 443*4bdc9457SAndroid Build Coastguard Worker size_t nc, 444*4bdc9457SAndroid Build Coastguard Worker size_t kh, 445*4bdc9457SAndroid Build Coastguard Worker size_t kw, 446*4bdc9457SAndroid Build Coastguard Worker size_t kc, 447*4bdc9457SAndroid Build Coastguard Worker size_t sh, 448*4bdc9457SAndroid Build Coastguard Worker size_t sw, 449*4bdc9457SAndroid Build Coastguard Worker size_t nr, 450*4bdc9457SAndroid Build Coastguard Worker size_t kr, 451*4bdc9457SAndroid Build Coastguard Worker size_t sr, 452*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 453*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 454*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 455*4bdc9457SAndroid Build Coastguard Worker struct subconvolution_params* subconv_params, 456*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 457*4bdc9457SAndroid Build Coastguard Worker 458*4bdc9457SAndroid Build Coastguard Worker 459*4bdc9457SAndroid Build Coastguard Worker // Pack weights and bias such that: 460*4bdc9457SAndroid Build Coastguard Worker // 1. Each block contains `cr` bias and `cr * h * w` weights. 461*4bdc9457SAndroid Build Coastguard Worker // 2. Within each "cr block", `cr` biases are at the beginning of the block. 462*4bdc9457SAndroid Build Coastguard Worker // 3. Weights are written such that the channel values at the same x-y is are adjacent in memory. 463*4bdc9457SAndroid Build Coastguard Worker // 4. The weights are then written column major (WHC layout). 464*4bdc9457SAndroid Build Coastguard Worker // "ghw" in the function name is the layout of the weights, (g)roups, (h)eight, (w)idth. 465*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_dwconv_ghw_w_function)( 466*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 467*4bdc9457SAndroid Build Coastguard Worker size_t h, 468*4bdc9457SAndroid Build Coastguard Worker size_t w, 469*4bdc9457SAndroid Build Coastguard Worker size_t c, 470*4bdc9457SAndroid Build Coastguard Worker size_t cr, 471*4bdc9457SAndroid Build Coastguard Worker const void* k, 472*4bdc9457SAndroid Build Coastguard Worker const void* b, 473*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 474*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 475*4bdc9457SAndroid Build Coastguard Worker const void* params); 476*4bdc9457SAndroid Build Coastguard Worker 477*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_dwconv_ghw_w( 478*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 479*4bdc9457SAndroid Build Coastguard Worker size_t h, 480*4bdc9457SAndroid Build Coastguard Worker size_t w, 481*4bdc9457SAndroid Build Coastguard Worker size_t c, 482*4bdc9457SAndroid Build Coastguard Worker size_t cr, 483*4bdc9457SAndroid Build Coastguard Worker const float* k, 484*4bdc9457SAndroid Build Coastguard Worker const float* b, 485*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 486*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 487*4bdc9457SAndroid Build Coastguard Worker const void* params); 488*4bdc9457SAndroid Build Coastguard Worker 489*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_dwconv_ghw_w( 490*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 491*4bdc9457SAndroid Build Coastguard Worker size_t h, 492*4bdc9457SAndroid Build Coastguard Worker size_t w, 493*4bdc9457SAndroid Build Coastguard Worker size_t c, 494*4bdc9457SAndroid Build Coastguard Worker size_t cr, 495*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 496*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 497*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 498*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 499*4bdc9457SAndroid Build Coastguard Worker const void* params); 500*4bdc9457SAndroid Build Coastguard Worker 501*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_dwconv_ghw_w( 502*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 503*4bdc9457SAndroid Build Coastguard Worker size_t h, 504*4bdc9457SAndroid Build Coastguard Worker size_t w, 505*4bdc9457SAndroid Build Coastguard Worker size_t c, 506*4bdc9457SAndroid Build Coastguard Worker size_t cr, 507*4bdc9457SAndroid Build Coastguard Worker const float* k, 508*4bdc9457SAndroid Build Coastguard Worker const float* b, 509*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 510*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 511*4bdc9457SAndroid Build Coastguard Worker const void* params); 512*4bdc9457SAndroid Build Coastguard Worker 513*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_dwconv_ghw_w( 514*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 515*4bdc9457SAndroid Build Coastguard Worker size_t h, 516*4bdc9457SAndroid Build Coastguard Worker size_t w, 517*4bdc9457SAndroid Build Coastguard Worker size_t c, 518*4bdc9457SAndroid Build Coastguard Worker size_t cr, 519*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 520*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 521*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 522*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 523*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 524*4bdc9457SAndroid Build Coastguard Worker 525*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_dwconv_ghw_w( 526*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 527*4bdc9457SAndroid Build Coastguard Worker size_t h, 528*4bdc9457SAndroid Build Coastguard Worker size_t w, 529*4bdc9457SAndroid Build Coastguard Worker size_t c, 530*4bdc9457SAndroid Build Coastguard Worker size_t cr, 531*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 532*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 533*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 534*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 535*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 536*4bdc9457SAndroid Build Coastguard Worker 537*4bdc9457SAndroid Build Coastguard Worker 538*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_dwconv_hwg_w_function)( 539*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 540*4bdc9457SAndroid Build Coastguard Worker size_t h, 541*4bdc9457SAndroid Build Coastguard Worker size_t w, 542*4bdc9457SAndroid Build Coastguard Worker size_t c, 543*4bdc9457SAndroid Build Coastguard Worker size_t cr, 544*4bdc9457SAndroid Build Coastguard Worker const void* k, 545*4bdc9457SAndroid Build Coastguard Worker const void* b, 546*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 547*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 548*4bdc9457SAndroid Build Coastguard Worker const void* params); 549*4bdc9457SAndroid Build Coastguard Worker 550*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_dwconv_hwg_w( 551*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 552*4bdc9457SAndroid Build Coastguard Worker size_t h, 553*4bdc9457SAndroid Build Coastguard Worker size_t w, 554*4bdc9457SAndroid Build Coastguard Worker size_t c, 555*4bdc9457SAndroid Build Coastguard Worker size_t cr, 556*4bdc9457SAndroid Build Coastguard Worker const float* k, 557*4bdc9457SAndroid Build Coastguard Worker const float* b, 558*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 559*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 560*4bdc9457SAndroid Build Coastguard Worker const void* params); 561*4bdc9457SAndroid Build Coastguard Worker 562*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_dwconv_hwg_w( 563*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 564*4bdc9457SAndroid Build Coastguard Worker size_t h, 565*4bdc9457SAndroid Build Coastguard Worker size_t w, 566*4bdc9457SAndroid Build Coastguard Worker size_t c, 567*4bdc9457SAndroid Build Coastguard Worker size_t cr, 568*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 569*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 570*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 571*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 572*4bdc9457SAndroid Build Coastguard Worker const void* params); 573*4bdc9457SAndroid Build Coastguard Worker 574*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_dwconv_hwg_w( 575*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 576*4bdc9457SAndroid Build Coastguard Worker size_t h, 577*4bdc9457SAndroid Build Coastguard Worker size_t w, 578*4bdc9457SAndroid Build Coastguard Worker size_t c, 579*4bdc9457SAndroid Build Coastguard Worker size_t cr, 580*4bdc9457SAndroid Build Coastguard Worker const float* k, 581*4bdc9457SAndroid Build Coastguard Worker const float* b, 582*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 583*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 584*4bdc9457SAndroid Build Coastguard Worker const void* params); 585*4bdc9457SAndroid Build Coastguard Worker 586*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qu8_dwconv_hwg_w( 587*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 588*4bdc9457SAndroid Build Coastguard Worker size_t h, 589*4bdc9457SAndroid Build Coastguard Worker size_t w, 590*4bdc9457SAndroid Build Coastguard Worker size_t c, 591*4bdc9457SAndroid Build Coastguard Worker size_t cr, 592*4bdc9457SAndroid Build Coastguard Worker const uint8_t* k, 593*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 594*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 595*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 596*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qu8_packing_params* params); 597*4bdc9457SAndroid Build Coastguard Worker 598*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_qs8_dwconv_hwg_w( 599*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 600*4bdc9457SAndroid Build Coastguard Worker size_t h, 601*4bdc9457SAndroid Build Coastguard Worker size_t w, 602*4bdc9457SAndroid Build Coastguard Worker size_t c, 603*4bdc9457SAndroid Build Coastguard Worker size_t cr, 604*4bdc9457SAndroid Build Coastguard Worker const int8_t* k, 605*4bdc9457SAndroid Build Coastguard Worker const int32_t* b, 606*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 607*4bdc9457SAndroid Build Coastguard Worker size_t extra_bytes, 608*4bdc9457SAndroid Build Coastguard Worker const struct xnn_qs8_packing_params* params); 609*4bdc9457SAndroid Build Coastguard Worker 610*4bdc9457SAndroid Build Coastguard Worker 611*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_gemminc_goi_w( 612*4bdc9457SAndroid Build Coastguard Worker size_t g, 613*4bdc9457SAndroid Build Coastguard Worker size_t nc, 614*4bdc9457SAndroid Build Coastguard Worker size_t kc, 615*4bdc9457SAndroid Build Coastguard Worker size_t nr, 616*4bdc9457SAndroid Build Coastguard Worker size_t kr, 617*4bdc9457SAndroid Build Coastguard Worker size_t sr, 618*4bdc9457SAndroid Build Coastguard Worker const float* k, 619*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 620*4bdc9457SAndroid Build Coastguard Worker const void* params); 621*4bdc9457SAndroid Build Coastguard Worker 622*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_gemminc_goi_w( 623*4bdc9457SAndroid Build Coastguard Worker size_t g, 624*4bdc9457SAndroid Build Coastguard Worker size_t nc, 625*4bdc9457SAndroid Build Coastguard Worker size_t kc, 626*4bdc9457SAndroid Build Coastguard Worker size_t nr, 627*4bdc9457SAndroid Build Coastguard Worker size_t kr, 628*4bdc9457SAndroid Build Coastguard Worker size_t sr, 629*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 630*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 631*4bdc9457SAndroid Build Coastguard Worker const void* params); 632*4bdc9457SAndroid Build Coastguard Worker 633*4bdc9457SAndroid Build Coastguard Worker 634*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_dconv_oki_w( 635*4bdc9457SAndroid Build Coastguard Worker size_t nc, 636*4bdc9457SAndroid Build Coastguard Worker size_t kc, 637*4bdc9457SAndroid Build Coastguard Worker size_t nr, 638*4bdc9457SAndroid Build Coastguard Worker size_t kh, 639*4bdc9457SAndroid Build Coastguard Worker size_t kw, 640*4bdc9457SAndroid Build Coastguard Worker const float* k, 641*4bdc9457SAndroid Build Coastguard Worker const float* b, 642*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 643*4bdc9457SAndroid Build Coastguard Worker const void* params); 644*4bdc9457SAndroid Build Coastguard Worker 645*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_dconv_oki_w( 646*4bdc9457SAndroid Build Coastguard Worker size_t nc, 647*4bdc9457SAndroid Build Coastguard Worker size_t kc, 648*4bdc9457SAndroid Build Coastguard Worker size_t nr, 649*4bdc9457SAndroid Build Coastguard Worker size_t kh, 650*4bdc9457SAndroid Build Coastguard Worker size_t kw, 651*4bdc9457SAndroid Build Coastguard Worker const uint16_t* k, 652*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 653*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 654*4bdc9457SAndroid Build Coastguard Worker const void* params); 655*4bdc9457SAndroid Build Coastguard Worker 656*4bdc9457SAndroid Build Coastguard Worker 657*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_chw_dwconv_ghw_w( 658*4bdc9457SAndroid Build Coastguard Worker size_t kernel_size, 659*4bdc9457SAndroid Build Coastguard Worker size_t groups, 660*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 661*4bdc9457SAndroid Build Coastguard Worker const float* bias, 662*4bdc9457SAndroid Build Coastguard Worker float* packed_weights, 663*4bdc9457SAndroid Build Coastguard Worker const void* params); 664*4bdc9457SAndroid Build Coastguard Worker 665*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_chw_dwconv_ghw_w( 666*4bdc9457SAndroid Build Coastguard Worker size_t kernel_size, 667*4bdc9457SAndroid Build Coastguard Worker size_t groups, 668*4bdc9457SAndroid Build Coastguard Worker const uint16_t* kernel, 669*4bdc9457SAndroid Build Coastguard Worker const uint16_t* bias, 670*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_weights, 671*4bdc9457SAndroid Build Coastguard Worker const void* params); 672*4bdc9457SAndroid Build Coastguard Worker 673*4bdc9457SAndroid Build Coastguard Worker 674*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_chw_dwconv_hwg_w( 675*4bdc9457SAndroid Build Coastguard Worker size_t kernel_size, 676*4bdc9457SAndroid Build Coastguard Worker size_t groups, 677*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 678*4bdc9457SAndroid Build Coastguard Worker const float* bias, 679*4bdc9457SAndroid Build Coastguard Worker float* packed_weights, 680*4bdc9457SAndroid Build Coastguard Worker const void* params); 681*4bdc9457SAndroid Build Coastguard Worker 682*4bdc9457SAndroid Build Coastguard Worker 683*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_vmulcaddc_w_function)( 684*4bdc9457SAndroid Build Coastguard Worker size_t c, 685*4bdc9457SAndroid Build Coastguard Worker size_t cr, 686*4bdc9457SAndroid Build Coastguard Worker const void* s, 687*4bdc9457SAndroid Build Coastguard Worker const void* b, 688*4bdc9457SAndroid Build Coastguard Worker void* packed_w, 689*4bdc9457SAndroid Build Coastguard Worker const void* params); 690*4bdc9457SAndroid Build Coastguard Worker 691*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_vmulcaddc_w( 692*4bdc9457SAndroid Build Coastguard Worker size_t c, 693*4bdc9457SAndroid Build Coastguard Worker size_t cr, 694*4bdc9457SAndroid Build Coastguard Worker const float* s, 695*4bdc9457SAndroid Build Coastguard Worker const float* b, 696*4bdc9457SAndroid Build Coastguard Worker float* packed_w, 697*4bdc9457SAndroid Build Coastguard Worker const void* params); 698*4bdc9457SAndroid Build Coastguard Worker 699*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_vmulcaddc_w( 700*4bdc9457SAndroid Build Coastguard Worker size_t c, 701*4bdc9457SAndroid Build Coastguard Worker size_t cr, 702*4bdc9457SAndroid Build Coastguard Worker const uint16_t* s, 703*4bdc9457SAndroid Build Coastguard Worker const uint16_t* b, 704*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 705*4bdc9457SAndroid Build Coastguard Worker const void* params); 706*4bdc9457SAndroid Build Coastguard Worker 707*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_vmulcaddc_w( 708*4bdc9457SAndroid Build Coastguard Worker size_t c, 709*4bdc9457SAndroid Build Coastguard Worker size_t cr, 710*4bdc9457SAndroid Build Coastguard Worker const float* s, 711*4bdc9457SAndroid Build Coastguard Worker const float* b, 712*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w, 713*4bdc9457SAndroid Build Coastguard Worker const void* params); 714*4bdc9457SAndroid Build Coastguard Worker 715*4bdc9457SAndroid Build Coastguard Worker 716*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_pack_prelu_w_function)( 717*4bdc9457SAndroid Build Coastguard Worker size_t c, 718*4bdc9457SAndroid Build Coastguard Worker const void* s, 719*4bdc9457SAndroid Build Coastguard Worker void* packed_w); 720*4bdc9457SAndroid Build Coastguard Worker 721*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_prelu_w( 722*4bdc9457SAndroid Build Coastguard Worker size_t c, 723*4bdc9457SAndroid Build Coastguard Worker const float* s, 724*4bdc9457SAndroid Build Coastguard Worker float* packed_w); 725*4bdc9457SAndroid Build Coastguard Worker 726*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f16_prelu_w( 727*4bdc9457SAndroid Build Coastguard Worker size_t c, 728*4bdc9457SAndroid Build Coastguard Worker const uint16_t* s, 729*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w); 730*4bdc9457SAndroid Build Coastguard Worker 731*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_pack_f32_to_f16_prelu_w( 732*4bdc9457SAndroid Build Coastguard Worker size_t c, 733*4bdc9457SAndroid Build Coastguard Worker const float* s, 734*4bdc9457SAndroid Build Coastguard Worker uint16_t* packed_w); 735*4bdc9457SAndroid Build Coastguard Worker 736*4bdc9457SAndroid Build Coastguard Worker 737*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 738*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 739*4bdc9457SAndroid Build Coastguard Worker #endif 740