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 <stddef.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 13*4bdc9457SAndroid Build Coastguard Worker #include <stdbool.h> 14*4bdc9457SAndroid Build Coastguard Worker 15*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack.h> 16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 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 XNN_INTERNAL void xnn_indirection_init_conv2d( 23*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 24*4bdc9457SAndroid Build Coastguard Worker size_t output_tile_size, 25*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 26*4bdc9457SAndroid Build Coastguard Worker 27*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_dwconv2d( 28*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 29*4bdc9457SAndroid Build Coastguard Worker size_t step_height, 30*4bdc9457SAndroid Build Coastguard Worker size_t step_width, 31*4bdc9457SAndroid Build Coastguard Worker size_t primary_tile, 32*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 33*4bdc9457SAndroid Build Coastguard Worker 34*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_deconv2d( 35*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 36*4bdc9457SAndroid Build Coastguard Worker size_t output_tile_size, 37*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 38*4bdc9457SAndroid Build Coastguard Worker 39*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_subconv2d( 40*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 41*4bdc9457SAndroid Build Coastguard Worker size_t output_tile_size, 42*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 43*4bdc9457SAndroid Build Coastguard Worker 44*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_maxpool2d( 45*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 46*4bdc9457SAndroid Build Coastguard Worker size_t step_height, 47*4bdc9457SAndroid Build Coastguard Worker size_t step_width, 48*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 49*4bdc9457SAndroid Build Coastguard Worker 50*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_indirection_init_resize_bilinear2d_hwc_fn)( 51*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 52*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 53*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 54*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 55*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 56*4bdc9457SAndroid Build Coastguard Worker const void* input, 57*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 58*4bdc9457SAndroid Build Coastguard Worker void* packed_weights, 59*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 60*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 61*4bdc9457SAndroid Build Coastguard Worker 62*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_resize_bilinear2d_hwc_f16( 63*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 64*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 65*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 66*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 67*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 68*4bdc9457SAndroid Build Coastguard Worker const void* input, 69*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 70*4bdc9457SAndroid Build Coastguard Worker void* packed_weights, 71*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 72*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 73*4bdc9457SAndroid Build Coastguard Worker 74*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_resize_bilinear2d_hwc_f32( 75*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 76*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 77*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 78*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 79*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 80*4bdc9457SAndroid Build Coastguard Worker const void* input, 81*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 82*4bdc9457SAndroid Build Coastguard Worker float* packed_weights, 83*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 84*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 85*4bdc9457SAndroid Build Coastguard Worker 86*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_resize_bilinear2d_hwc_q11( 87*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 88*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 89*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 90*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 91*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 92*4bdc9457SAndroid Build Coastguard Worker const void* input, 93*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 94*4bdc9457SAndroid Build Coastguard Worker int16_t* packed_weights, 95*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 96*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 97*4bdc9457SAndroid Build Coastguard Worker 98*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_resize_bilinear2d_chw_f16( 99*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 100*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 101*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 102*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 103*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 104*4bdc9457SAndroid Build Coastguard Worker const void* input, 105*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 106*4bdc9457SAndroid Build Coastguard Worker void* packed_weights, 107*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 108*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 109*4bdc9457SAndroid Build Coastguard Worker 110*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_resize_bilinear2d_chw_f32( 111*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 112*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 113*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 114*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 115*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 116*4bdc9457SAndroid Build Coastguard Worker const void* input, 117*4bdc9457SAndroid Build Coastguard Worker const void** indirection_buffer, 118*4bdc9457SAndroid Build Coastguard Worker float* packed_weights, 119*4bdc9457SAndroid Build Coastguard Worker bool align_corners, 120*4bdc9457SAndroid Build Coastguard Worker bool tensorflow_legacy); 121*4bdc9457SAndroid Build Coastguard Worker 122*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_unpool2d( 123*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 124*4bdc9457SAndroid Build Coastguard Worker size_t batch_start, 125*4bdc9457SAndroid Build Coastguard Worker uint32_t log2_element_size); 126*4bdc9457SAndroid Build Coastguard Worker 127*4bdc9457SAndroid Build Coastguard Worker typedef void (*xnn_indirection_init_pavgpool2d_fn)( 128*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 129*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 130*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 131*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 132*4bdc9457SAndroid Build Coastguard Worker size_t pooling_height, 133*4bdc9457SAndroid Build Coastguard Worker size_t pooling_width, 134*4bdc9457SAndroid Build Coastguard Worker size_t stride_height, 135*4bdc9457SAndroid Build Coastguard Worker size_t stride_width, 136*4bdc9457SAndroid Build Coastguard Worker size_t padding_top, 137*4bdc9457SAndroid Build Coastguard Worker size_t padding_left, 138*4bdc9457SAndroid Build Coastguard Worker void* pixelwise_buffer); 139*4bdc9457SAndroid Build Coastguard Worker 140*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_pavgpool2d_f16( 141*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 142*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 143*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 144*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 145*4bdc9457SAndroid Build Coastguard Worker size_t pooling_height, 146*4bdc9457SAndroid Build Coastguard Worker size_t pooling_width, 147*4bdc9457SAndroid Build Coastguard Worker size_t stride_height, 148*4bdc9457SAndroid Build Coastguard Worker size_t stride_width, 149*4bdc9457SAndroid Build Coastguard Worker size_t padding_top, 150*4bdc9457SAndroid Build Coastguard Worker size_t padding_left, 151*4bdc9457SAndroid Build Coastguard Worker uint16_t* pixelwise_buffer); 152*4bdc9457SAndroid Build Coastguard Worker 153*4bdc9457SAndroid Build Coastguard Worker XNN_INTERNAL void xnn_indirection_init_pavgpool2d_f32( 154*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 155*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 156*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 157*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 158*4bdc9457SAndroid Build Coastguard Worker size_t pooling_height, 159*4bdc9457SAndroid Build Coastguard Worker size_t pooling_width, 160*4bdc9457SAndroid Build Coastguard Worker size_t stride_height, 161*4bdc9457SAndroid Build Coastguard Worker size_t stride_width, 162*4bdc9457SAndroid Build Coastguard Worker size_t padding_top, 163*4bdc9457SAndroid Build Coastguard Worker size_t padding_left, 164*4bdc9457SAndroid Build Coastguard Worker float* pixelwise_buffer); 165*4bdc9457SAndroid Build Coastguard Worker 166*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 167*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 168*4bdc9457SAndroid Build Coastguard Worker #endif 169