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 <stdbool.h> 12*4bdc9457SAndroid Build Coastguard Worker #include <stddef.h> 13*4bdc9457SAndroid Build Coastguard Worker #include <stdint.h> 14*4bdc9457SAndroid Build Coastguard Worker 15*4bdc9457SAndroid Build Coastguard Worker #include <pthreadpool.h> 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 18*4bdc9457SAndroid Build Coastguard Worker extern "C" { 19*4bdc9457SAndroid Build Coastguard Worker #endif 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Worker /// The number of bytes XNNPACK may read beyond array bounds. 22*4bdc9457SAndroid Build Coastguard Worker /// The caller must allocate at least this many extra bytes after the tensor data passed to XNNPACK. 23*4bdc9457SAndroid Build Coastguard Worker /// 24*4bdc9457SAndroid Build Coastguard Worker /// Note: XNNPACK reads, but never writes beyond array bounds. 25*4bdc9457SAndroid Build Coastguard Worker #define XNN_EXTRA_BYTES 16 26*4bdc9457SAndroid Build Coastguard Worker 27*4bdc9457SAndroid Build Coastguard Worker /// Maximum number of dimensions in tensor shape. 28*4bdc9457SAndroid Build Coastguard Worker #define XNN_MAX_TENSOR_DIMS 6 29*4bdc9457SAndroid Build Coastguard Worker 30*4bdc9457SAndroid Build Coastguard Worker /// Allow sparse inference in a Runtime. 31*4bdc9457SAndroid Build Coastguard Worker /// 32*4bdc9457SAndroid Build Coastguard Worker /// Note: this flag hints XNNPACK to consider sparse inference, but does not guarantee it. 33*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_SPARSE_INFERENCE 0x00000001 34*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_HINT_SPARSE_INFERENCE XNN_FLAG_SPARSE_INFERENCE 35*4bdc9457SAndroid Build Coastguard Worker 36*4bdc9457SAndroid Build Coastguard Worker /// Allow IEEE FP16 inference in a Runtime. 37*4bdc9457SAndroid Build Coastguard Worker /// 38*4bdc9457SAndroid Build Coastguard Worker /// Note: this flag hints XNNPACK to consider IEEE FP16 inference, but does not guarantee it. 39*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_FP16_INFERENCE 0x00000002 40*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_HINT_FP16_INFERENCE XNN_FLAG_FP16_INFERENCE 41*4bdc9457SAndroid Build Coastguard Worker 42*4bdc9457SAndroid Build Coastguard Worker /// Force IEEE FP16 inference in a Runtime, and fail if FP16 inference is not possible. 43*4bdc9457SAndroid Build Coastguard Worker /// 44*4bdc9457SAndroid Build Coastguard Worker /// Note: this flag guarantees that XNNPACK will use IEEE FP16 inference, or fail to create the Runtime object. 45*4bdc9457SAndroid Build Coastguard Worker /// Warning: on x86 systems FP16 computations will be emulated at a substantial performance cost. 46*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_FORCE_FP16_INFERENCE 0x00000004 47*4bdc9457SAndroid Build Coastguard Worker 48*4bdc9457SAndroid Build Coastguard Worker /// Enable timing of each operator's runtime. 49*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_BASIC_PROFILING 0x00000008 50*4bdc9457SAndroid Build Coastguard Worker 51*4bdc9457SAndroid Build Coastguard Worker /// The convolution operator represents a depthwise convolution, and use HWGo layout for filters. 52*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_DEPTHWISE_CONVOLUTION 0x00000001 53*4bdc9457SAndroid Build Coastguard Worker 54*4bdc9457SAndroid Build Coastguard Worker /// Assume transposed weights in a fully connected operator. 55*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_TRANSPOSE_WEIGHTS 0x00000001 56*4bdc9457SAndroid Build Coastguard Worker 57*4bdc9457SAndroid Build Coastguard Worker /// The operator assumes NHWC layout for the input, regardless of the output layout. 58*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_INPUT_NHWC 0x00000002 59*4bdc9457SAndroid Build Coastguard Worker 60*4bdc9457SAndroid Build Coastguard Worker /// Match "SAME" padding in TensorFlow. Exact padding values are computed dynamically depending on input size. 61*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_TENSORFLOW_SAME_PADDING 0x00000004 62*4bdc9457SAndroid Build Coastguard Worker 63*4bdc9457SAndroid Build Coastguard Worker /// Implicitly flatten and reshape input of a Fully Connected operator into a 2D tensor. 64*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_TENSORFLOW_RESHAPE_2D 0x00000004 65*4bdc9457SAndroid Build Coastguard Worker 66*4bdc9457SAndroid Build Coastguard Worker /// Match behaviour of TensorFlow 1.x. 67*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_TENSORFLOW_LEGACY_MODE 0x00000004 68*4bdc9457SAndroid Build Coastguard Worker 69*4bdc9457SAndroid Build Coastguard Worker /// Static weights of the FP16 operator are in FP32 format. 70*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_FP32_STATIC_WEIGHTS 0x00000008 71*4bdc9457SAndroid Build Coastguard Worker 72*4bdc9457SAndroid Build Coastguard Worker /// Align corners of input and output images in resize operations. 73*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_ALIGN_CORNERS 0x00000008 74*4bdc9457SAndroid Build Coastguard Worker 75*4bdc9457SAndroid Build Coastguard Worker /// Yield worker threads of the thread pool to the system scheduler after the inference. 76*4bdc9457SAndroid Build Coastguard Worker #define XNN_FLAG_YIELD_WORKERS 0x00000010 77*4bdc9457SAndroid Build Coastguard Worker 78*4bdc9457SAndroid Build Coastguard Worker /// Status code for any XNNPACK function call. 79*4bdc9457SAndroid Build Coastguard Worker enum xnn_status { 80*4bdc9457SAndroid Build Coastguard Worker /// The call succeeded, and all output arguments now contain valid data. 81*4bdc9457SAndroid Build Coastguard Worker xnn_status_success = 0, 82*4bdc9457SAndroid Build Coastguard Worker xnn_status_uninitialized = 1, 83*4bdc9457SAndroid Build Coastguard Worker xnn_status_invalid_parameter = 2, 84*4bdc9457SAndroid Build Coastguard Worker xnn_status_invalid_state = 3, 85*4bdc9457SAndroid Build Coastguard Worker xnn_status_unsupported_parameter = 4, 86*4bdc9457SAndroid Build Coastguard Worker xnn_status_unsupported_hardware = 5, 87*4bdc9457SAndroid Build Coastguard Worker xnn_status_out_of_memory = 6, 88*4bdc9457SAndroid Build Coastguard Worker }; 89*4bdc9457SAndroid Build Coastguard Worker 90*4bdc9457SAndroid Build Coastguard Worker struct xnn_allocator { 91*4bdc9457SAndroid Build Coastguard Worker /// User-specified pointer that will be passed as-is to all functions in this structure. 92*4bdc9457SAndroid Build Coastguard Worker void* context; 93*4bdc9457SAndroid Build Coastguard Worker /// Pointer to a function to be called for general memory allocation. 94*4bdc9457SAndroid Build Coastguard Worker /// 95*4bdc9457SAndroid Build Coastguard Worker /// @param context - The user-specified pointer from xnn_allocator structure. 96*4bdc9457SAndroid Build Coastguard Worker /// @param size - The size of the memory block to allocate, in bytes. 97*4bdc9457SAndroid Build Coastguard Worker /// 98*4bdc9457SAndroid Build Coastguard Worker /// @returns Pointer to the allocated memory block of at least @ref size bytes. 99*4bdc9457SAndroid Build Coastguard Worker /// If allocation fails, the function must return NULL. 100*4bdc9457SAndroid Build Coastguard Worker void* (*allocate)(void* context, size_t size); 101*4bdc9457SAndroid Build Coastguard Worker /// Pointer to a function to be called for general memory re-allocation, i.e. to increase or shrink a previously 102*4bdc9457SAndroid Build Coastguard Worker /// allocated memory block. The content of the old memory block is copied to the new memory block. 103*4bdc9457SAndroid Build Coastguard Worker /// 104*4bdc9457SAndroid Build Coastguard Worker /// @param context - The user-specified pointer from xnn_allocator structure. 105*4bdc9457SAndroid Build Coastguard Worker /// @param pointer - Pointer to a memory block allocated by @ref allocate or @ref reallocate functions. Can be NULL. 106*4bdc9457SAndroid Build Coastguard Worker /// If the pointer is NULL, the @ref reallocate call is equivalent to an @ref allocate call. 107*4bdc9457SAndroid Build Coastguard Worker /// @param size - The new size of the memory block to allocate, in bytes. 108*4bdc9457SAndroid Build Coastguard Worker /// 109*4bdc9457SAndroid Build Coastguard Worker /// @returns Pointer to the newly allocated memory block of at least @ref size bytes with the content of the previous 110*4bdc9457SAndroid Build Coastguard Worker /// memory block. 111*4bdc9457SAndroid Build Coastguard Worker /// If allocation fails, the function must return NULL, but must not release the previous memory block. 112*4bdc9457SAndroid Build Coastguard Worker void* (*reallocate)(void* context, void* pointer, size_t size); 113*4bdc9457SAndroid Build Coastguard Worker /// Pointer to a function to be called for general memory de-allocation. 114*4bdc9457SAndroid Build Coastguard Worker /// 115*4bdc9457SAndroid Build Coastguard Worker /// @param context - The user-specified pointer from xnn_allocator structure. 116*4bdc9457SAndroid Build Coastguard Worker /// @param pointer - Pointer to a memory block allocated by @ref allocate or @ref reallocate functions. Can be NULL. 117*4bdc9457SAndroid Build Coastguard Worker /// If the pointer is NULL, the @ref deallocate call is a no-op. 118*4bdc9457SAndroid Build Coastguard Worker void (*deallocate)(void* context, void* pointer); 119*4bdc9457SAndroid Build Coastguard Worker /// Pointer to a function to be called for aligned memory allocation. 120*4bdc9457SAndroid Build Coastguard Worker /// 121*4bdc9457SAndroid Build Coastguard Worker /// @param context - The user-specified pointer from xnn_allocator structure. 122*4bdc9457SAndroid Build Coastguard Worker /// @param alignment - The alignment of the memory block to allocate, in bytes. Alignment is always a power-of-2. 123*4bdc9457SAndroid Build Coastguard Worker /// @param size - The size of the memory block to allocate, in bytes. 124*4bdc9457SAndroid Build Coastguard Worker /// 125*4bdc9457SAndroid Build Coastguard Worker /// @returns Pointer to the allocated memory block of at least @ref size bytes. 126*4bdc9457SAndroid Build Coastguard Worker /// If allocation fails, the function must return NULL. 127*4bdc9457SAndroid Build Coastguard Worker void* (*aligned_allocate)(void* context, size_t alignment, size_t size); 128*4bdc9457SAndroid Build Coastguard Worker /// Pointer to a function to be called for aligned memory de-allocation. 129*4bdc9457SAndroid Build Coastguard Worker /// 130*4bdc9457SAndroid Build Coastguard Worker /// @param context - The user-specified pointer from xnn_allocator structure. 131*4bdc9457SAndroid Build Coastguard Worker /// @param pointer - Pointer to a memory block allocated by @ref aligned_allocate function. Can be NULL. 132*4bdc9457SAndroid Build Coastguard Worker /// If the pointer is NULL, the @ref aligned_deallocate call is a no-op. 133*4bdc9457SAndroid Build Coastguard Worker void (*aligned_deallocate)(void* context, void* pointer); 134*4bdc9457SAndroid Build Coastguard Worker }; 135*4bdc9457SAndroid Build Coastguard Worker 136*4bdc9457SAndroid Build Coastguard Worker /// Initialize XNNPACK library. 137*4bdc9457SAndroid Build Coastguard Worker /// 138*4bdc9457SAndroid Build Coastguard Worker /// XNNPACK must be successfully initialized before use. During initialization, XNNPACK populates internal structures 139*4bdc9457SAndroid Build Coastguard Worker /// depending on the host processor. Initialization can be time-consuming. 140*4bdc9457SAndroid Build Coastguard Worker /// 141*4bdc9457SAndroid Build Coastguard Worker /// @param[in] allocator - structure with function pointers to be use for memory allocation and de-allocation. 142*4bdc9457SAndroid Build Coastguard Worker /// If this argument is NULL, system-provided memory management functions (e.g. malloc/free) 143*4bdc9457SAndroid Build Coastguard Worker /// will be used. 144*4bdc9457SAndroid Build Coastguard Worker /// 145*4bdc9457SAndroid Build Coastguard Worker /// @retval xnn_status_success - XNNPACK is successfully initialized and ready to use. 146*4bdc9457SAndroid Build Coastguard Worker /// @retval xnn_status_out_of_memory - initialization failed due to out-of-memory condition. 147*4bdc9457SAndroid Build Coastguard Worker /// @retval xnn_status_unsupported_hardware - initialization failed because the host processor does not satisfy the 148*4bdc9457SAndroid Build Coastguard Worker /// minimum hardware requirements for XNNPACK. E.g. this may happen on x86 149*4bdc9457SAndroid Build Coastguard Worker /// processors without SSE2 extension, or on 32-bit ARM processors without 150*4bdc9457SAndroid Build Coastguard Worker /// the NEON SIMD extension. 151*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_initialize(const struct xnn_allocator* allocator); 152*4bdc9457SAndroid Build Coastguard Worker 153*4bdc9457SAndroid Build Coastguard Worker /// Deinitialize XNNPACK library. 154*4bdc9457SAndroid Build Coastguard Worker /// 155*4bdc9457SAndroid Build Coastguard Worker /// To avoid memory and resource leaks, users must call xnn_deinitialize once for each successful xnn_initialize call. 156*4bdc9457SAndroid Build Coastguard Worker /// 157*4bdc9457SAndroid Build Coastguard Worker /// @retval xnn_status_success - deinitialization call succeeded. 158*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_deinitialize(void); 159*4bdc9457SAndroid Build Coastguard Worker 160*4bdc9457SAndroid Build Coastguard Worker /// Subgraph is an abstract representation of a neural network model. 161*4bdc9457SAndroid Build Coastguard Worker /// Subgraph objects are used to define Values (tensors) and Nodes (operators) comprising the model. 162*4bdc9457SAndroid Build Coastguard Worker typedef struct xnn_subgraph* xnn_subgraph_t; 163*4bdc9457SAndroid Build Coastguard Worker 164*4bdc9457SAndroid Build Coastguard Worker /// Create a empty Subgraph object. 165*4bdc9457SAndroid Build Coastguard Worker /// 166*4bdc9457SAndroid Build Coastguard Worker /// @param external_value_ids - number of Value IDs to reserve for communication with external graph representation. 167*4bdc9457SAndroid Build Coastguard Worker /// The Subgraph object would avoid creating internal Value IDs in the 168*4bdc9457SAndroid Build Coastguard Worker /// [0, reserved_value_ids-1] range. 169*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the subgraph. No supported flags are currently defined. 170*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph_out - pointer to the variable that will be initialized with a handle to the Subgraph object upon 171*4bdc9457SAndroid Build Coastguard Worker /// successful return. 172*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_subgraph( 173*4bdc9457SAndroid Build Coastguard Worker uint32_t external_value_ids, 174*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 175*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t* subgraph_out); 176*4bdc9457SAndroid Build Coastguard Worker 177*4bdc9457SAndroid Build Coastguard Worker /// Destroy a Subgraph object, as well as Values, and Nodes associated with the subgraph. 178*4bdc9457SAndroid Build Coastguard Worker /// 179*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - the Subgraph object to destroy. 180*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_delete_subgraph( 181*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph); 182*4bdc9457SAndroid Build Coastguard Worker 183*4bdc9457SAndroid Build Coastguard Worker #define XNN_VALUE_FLAG_EXTERNAL_INPUT 0x00000001 184*4bdc9457SAndroid Build Coastguard Worker #define XNN_VALUE_FLAG_EXTERNAL_OUTPUT 0x00000002 185*4bdc9457SAndroid Build Coastguard Worker 186*4bdc9457SAndroid Build Coastguard Worker #define XNN_INVALID_VALUE_ID UINT32_MAX 187*4bdc9457SAndroid Build Coastguard Worker 188*4bdc9457SAndroid Build Coastguard Worker /// Type of elements in a Value object. 189*4bdc9457SAndroid Build Coastguard Worker enum xnn_datatype { 190*4bdc9457SAndroid Build Coastguard Worker /// Invalid data type. Valid Values never have this datatype. 191*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_invalid = 0, 192*4bdc9457SAndroid Build Coastguard Worker /// IEEE754 single-precision floating-point. 193*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_fp32 = 1, 194*4bdc9457SAndroid Build Coastguard Worker /// IEEE754 half-precision floating-point. 195*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_fp16 = 2, 196*4bdc9457SAndroid Build Coastguard Worker /// Quantized 8-bit signed integer with shared per-Value quantization parameters. 197*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_qint8 = 3, 198*4bdc9457SAndroid Build Coastguard Worker /// Quantized 8-bit unsigned integer with shared per-Value quantization parameters. 199*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_quint8 = 4, 200*4bdc9457SAndroid Build Coastguard Worker /// Quantized 32-bit signed integer with shared per-Value quantization parameters. 201*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_qint32 = 5, 202*4bdc9457SAndroid Build Coastguard Worker /// Quantized 8-bit signed integer with shared per-channel quantization parameters. 203*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_qcint8 = 6, 204*4bdc9457SAndroid Build Coastguard Worker /// Quantized 32-bit signed integer with shared per-channel quantization parameters. 205*4bdc9457SAndroid Build Coastguard Worker xnn_datatype_qcint32 = 7, 206*4bdc9457SAndroid Build Coastguard Worker }; 207*4bdc9457SAndroid Build Coastguard Worker 208*4bdc9457SAndroid Build Coastguard Worker /// Define a tensor-type Value and add it to a Subgraph. 209*4bdc9457SAndroid Build Coastguard Worker /// 210*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Value. 211*4bdc9457SAndroid Build Coastguard Worker /// @param datatype - type of the tensor elements. 212*4bdc9457SAndroid Build Coastguard Worker /// @param num_dims - number of dimensions in the shape. 213*4bdc9457SAndroid Build Coastguard Worker /// @param dims - pointer to an array of @a num_dims shape dimensions. If num_dims is 0, this pointer can be NULL. 214*4bdc9457SAndroid Build Coastguard Worker /// XNNPACK does not keep any pointers to this array after the function returns. 215*4bdc9457SAndroid Build Coastguard Worker /// @param data - pointer to static data used for tensor initialization. If the tensor is not statically initialized, 216*4bdc9457SAndroid Build Coastguard Worker /// this pointer must be is NULL. If non-NULL, the life-time of the static data must exceed the life-time 217*4bdc9457SAndroid Build Coastguard Worker /// of the Subgraph object, and of any Runtime objects created from the Subgraph. 218*4bdc9457SAndroid Build Coastguard Worker /// @param external_id - external ID for the Value. The ID must be within the range of reversed Value IDs specified on 219*4bdc9457SAndroid Build Coastguard Worker /// the Subgraph creation. If the external ID is XNN_INVALID_VALUE_ID, an internal ID will be 220*4bdc9457SAndroid Build Coastguard Worker /// created for the Value. 221*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Value. Supported values are any combination of XNN_VALUE_FLAG_EXTERNAL_INPUT 222*4bdc9457SAndroid Build Coastguard Worker /// and XNN_VALUE_FLAG_EXTERNAL_OUTPUT. 223*4bdc9457SAndroid Build Coastguard Worker /// @param id_out - pointer to the variable that will be initialized with the Value ID upon successful return. If a 224*4bdc9457SAndroid Build Coastguard Worker /// valid @a external_id was provided, the variable will be initialized with the @a external_id value. 225*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_tensor_value( 226*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 227*4bdc9457SAndroid Build Coastguard Worker enum xnn_datatype datatype, 228*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 229*4bdc9457SAndroid Build Coastguard Worker const size_t* dims, 230*4bdc9457SAndroid Build Coastguard Worker const void* data, 231*4bdc9457SAndroid Build Coastguard Worker uint32_t external_id, 232*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 233*4bdc9457SAndroid Build Coastguard Worker uint32_t* id_out); 234*4bdc9457SAndroid Build Coastguard Worker 235*4bdc9457SAndroid Build Coastguard Worker /// Define a quantized tensor-type Value and add it to a Subgraph. 236*4bdc9457SAndroid Build Coastguard Worker /// 237*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Value. 238*4bdc9457SAndroid Build Coastguard Worker /// @param datatype - type of the tensor elements. 239*4bdc9457SAndroid Build Coastguard Worker /// @param zero_point - offset from zero to subtract from the quantized elements in the Value. 240*4bdc9457SAndroid Build Coastguard Worker /// @param scale - multiplication factor to convert quantized elements to real representation. 241*4bdc9457SAndroid Build Coastguard Worker /// @param num_dims - number of dimensions in the shape. 242*4bdc9457SAndroid Build Coastguard Worker /// @param dims - pointer to an array of @a num_dims shape dimensions. If num_dims is 0, this pointer can be NULL. 243*4bdc9457SAndroid Build Coastguard Worker /// XNNPACK does not keep any pointers to this array after the function returns. 244*4bdc9457SAndroid Build Coastguard Worker /// @param data - pointer to static data used for tensor initialization. If the tensor is not statically initialized, 245*4bdc9457SAndroid Build Coastguard Worker /// this pointer must be is NULL. If non-NULL, the life-time of the static data must exceed the life-time 246*4bdc9457SAndroid Build Coastguard Worker /// of the Subgraph object, and of any Runtime objects created from the Subgraph. 247*4bdc9457SAndroid Build Coastguard Worker /// @param external_id - external ID for the Value. The ID must be within the range of reversed Value IDs specified on 248*4bdc9457SAndroid Build Coastguard Worker /// the Subgraph creation. If the external ID is XNN_INVALID_VALUE_ID, an internal ID will be 249*4bdc9457SAndroid Build Coastguard Worker /// created for the Value. 250*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Value. Supported values are any combination of XNN_VALUE_FLAG_EXTERNAL_INPUT 251*4bdc9457SAndroid Build Coastguard Worker /// and XNN_VALUE_FLAG_EXTERNAL_OUTPUT. 252*4bdc9457SAndroid Build Coastguard Worker /// @param id_out - pointer to the variable that will be initialized with the Value ID upon successful return. If a 253*4bdc9457SAndroid Build Coastguard Worker /// valid @a external_id was provided, the variable will be initialized with the @a external_id value. 254*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_quantized_tensor_value( 255*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 256*4bdc9457SAndroid Build Coastguard Worker enum xnn_datatype datatype, 257*4bdc9457SAndroid Build Coastguard Worker int32_t zero_point, 258*4bdc9457SAndroid Build Coastguard Worker float scale, 259*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 260*4bdc9457SAndroid Build Coastguard Worker const size_t* dims, 261*4bdc9457SAndroid Build Coastguard Worker const void* data, 262*4bdc9457SAndroid Build Coastguard Worker uint32_t external_id, 263*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 264*4bdc9457SAndroid Build Coastguard Worker uint32_t* id_out); 265*4bdc9457SAndroid Build Coastguard Worker 266*4bdc9457SAndroid Build Coastguard Worker /// Define a channelwise quantized tensor-type Value and add it to a Subgraph. 267*4bdc9457SAndroid Build Coastguard Worker /// 268*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Value. 269*4bdc9457SAndroid Build Coastguard Worker /// @param datatype - type of the tensor elements. 270*4bdc9457SAndroid Build Coastguard Worker /// @param scale - per-channel multiplication factors to convert quantized elements to real representation. 271*4bdc9457SAndroid Build Coastguard Worker /// @param num_dims - number of dimensions in the shape. 272*4bdc9457SAndroid Build Coastguard Worker /// @param channel_dim - index of the channel dimension in the tensor with per-channel quantization parameters. 273*4bdc9457SAndroid Build Coastguard Worker /// Typically this is the first dimension (dimension #0) of the filter tensors in the Convolution, 274*4bdc9457SAndroid Build Coastguard Worker /// Deconvolution, and Fully Connected operators and the last dimension of the filter tensors in 275*4bdc9457SAndroid Build Coastguard Worker /// the Depthwise Convolution operators. 276*4bdc9457SAndroid Build Coastguard Worker /// @param dims - pointer to an array of @a num_dims shape dimensions. If num_dims is 0, this pointer can be NULL. 277*4bdc9457SAndroid Build Coastguard Worker /// XNNPACK does not keep any pointers to this array after the function returns. 278*4bdc9457SAndroid Build Coastguard Worker /// @param data - pointer to static data used for tensor initialization. If the tensor is not statically initialized, 279*4bdc9457SAndroid Build Coastguard Worker /// this pointer must be is NULL. If non-NULL, the life-time of the static data must exceed the life-time 280*4bdc9457SAndroid Build Coastguard Worker /// of the Subgraph object, and of any Runtime objects created from the Subgraph. 281*4bdc9457SAndroid Build Coastguard Worker /// @param external_id - external ID for the Value. The ID must be within the range of reversed Value IDs specified on 282*4bdc9457SAndroid Build Coastguard Worker /// the Subgraph creation. If the external ID is XNN_INVALID_VALUE_ID, an internal ID will be 283*4bdc9457SAndroid Build Coastguard Worker /// created for the Value. 284*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Value. Supported values are any combination of XNN_VALUE_FLAG_EXTERNAL_INPUT 285*4bdc9457SAndroid Build Coastguard Worker /// and XNN_VALUE_FLAG_EXTERNAL_OUTPUT. 286*4bdc9457SAndroid Build Coastguard Worker /// @param id_out - pointer to the variable that will be initialized with the Value ID upon successful return. If a 287*4bdc9457SAndroid Build Coastguard Worker /// valid @a external_id was provided, the variable will be initialized with the @a external_id value. 288*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_channelwise_quantized_tensor_value( 289*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 290*4bdc9457SAndroid Build Coastguard Worker enum xnn_datatype datatype, 291*4bdc9457SAndroid Build Coastguard Worker const float* scale, 292*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 293*4bdc9457SAndroid Build Coastguard Worker size_t channel_dim, 294*4bdc9457SAndroid Build Coastguard Worker const size_t* dims, 295*4bdc9457SAndroid Build Coastguard Worker const void* data, 296*4bdc9457SAndroid Build Coastguard Worker uint32_t external_id, 297*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 298*4bdc9457SAndroid Build Coastguard Worker uint32_t* id_out); 299*4bdc9457SAndroid Build Coastguard Worker 300*4bdc9457SAndroid Build Coastguard Worker /// Define a Convert Node and add it to a Subgraph. 301*4bdc9457SAndroid Build Coastguard Worker /// 302*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 303*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 304*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 305*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 306*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Convert Node. No supported flags are currently defined. 307*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_convert( 308*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 309*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 310*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 311*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 312*4bdc9457SAndroid Build Coastguard Worker 313*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Convolution Node and add it to a Subgraph. 314*4bdc9457SAndroid Build Coastguard Worker /// 315*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 316*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_top - implicit zero-padding above 2D input data. Must be 0 if XNN_FLAG_TENSORFLOW_SAME_PADDING 317*4bdc9457SAndroid Build Coastguard Worker /// flag is specified. 318*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_right - implicit zero-padding to the right of 2D input data. Must be 0 if 319*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 320*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_bottom - implicit zero-padding below 2D input data. Must be 0 if 321*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 322*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_left - implicit zero-padding to the left of 2D input data. Must be 0 if 323*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 324*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_height - kernel (filter) height. 325*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_width - kernel (filter) width. 326*4bdc9457SAndroid Build Coastguard Worker /// @param subsampling_height - height of subsampling region for convolution output (convolution height stride). 327*4bdc9457SAndroid Build Coastguard Worker /// @param subsampling_width - width of subsampling region for convolution output (convolution width stride). 328*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_height - dilation of kernel elements along the height dimension. 329*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_width - dilation of kernel elements along the width dimension. 330*4bdc9457SAndroid Build Coastguard Worker /// @param groups - number of convolution groups. 331*4bdc9457SAndroid Build Coastguard Worker /// @param group_input_channels - number of input channels per group. 332*4bdc9457SAndroid Build Coastguard Worker /// @param group_output_channels - number of output channels per group. 333*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 334*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 335*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 336*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, groups * group_input_channels] dimensions 337*4bdc9457SAndroid Build Coastguard Worker /// @param filter_id - Value ID for the filter tensor. The filter tensor must ge a 4D tensor defined in the @a subgraph 338*4bdc9457SAndroid Build Coastguard Worker /// with [groups * group_output_channels, kernel_height, kernel_width, group_input_channels] 339*4bdc9457SAndroid Build Coastguard Worker /// dimensions. 340*4bdc9457SAndroid Build Coastguard Worker /// @param bias_id - Value ID for the bias tensor, or XNN_INVALID_VALUE_ID for a 2D Convolution Node without a bias. If 341*4bdc9457SAndroid Build Coastguard Worker /// present, the bias tensor must be a 1D tensor defined in the @a subgraph with [groups * 342*4bdc9457SAndroid Build Coastguard Worker /// group_output_channels] dimensions. 343*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 344*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, groups * group_output_channels] dimensions. 345*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Convolution Node. The only currently supported values is 346*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING. 347*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_convolution_2d( 348*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 349*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 350*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 351*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 352*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 353*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 354*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 355*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 356*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 357*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 358*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 359*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 360*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 361*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 362*4bdc9457SAndroid Build Coastguard Worker float output_min, 363*4bdc9457SAndroid Build Coastguard Worker float output_max, 364*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 365*4bdc9457SAndroid Build Coastguard Worker uint32_t filter_id, 366*4bdc9457SAndroid Build Coastguard Worker uint32_t bias_id, 367*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 368*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 369*4bdc9457SAndroid Build Coastguard Worker 370*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Deconvolution (Transposed Convolution) Node and add it to a Subgraph. 371*4bdc9457SAndroid Build Coastguard Worker /// 372*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 373*4bdc9457SAndroid Build Coastguard Worker /// @param padding_top - implicit padding above 2D output data. 374*4bdc9457SAndroid Build Coastguard Worker /// @param padding_right - implicit padding to the right of 2D output data. 375*4bdc9457SAndroid Build Coastguard Worker /// @param padding_bottom - implicit padding below 2D output data. 376*4bdc9457SAndroid Build Coastguard Worker /// @param padding_left - implicit padding to the left of 2D output data. 377*4bdc9457SAndroid Build Coastguard Worker /// @param adjustment_height - additional elements in the bottom of the 2D output data. 378*4bdc9457SAndroid Build Coastguard Worker /// @param adjustment_width - additional elements to the right of the 2D output data. 379*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_height - kernel (filter) height. 380*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_width - kernel (filter) width. 381*4bdc9457SAndroid Build Coastguard Worker /// @param upsampling_height - height of upsampling region for deconvolution input (deconvolution height stride). 382*4bdc9457SAndroid Build Coastguard Worker /// @param upsampling_width - width of upsampling region for deconvolution input (deconvolution width stride). 383*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_height - dilation of kernel elements along the height dimension. 384*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_width - dilation of kernel elements along the width dimension. 385*4bdc9457SAndroid Build Coastguard Worker /// @param groups - number of convolution groups. 386*4bdc9457SAndroid Build Coastguard Worker /// @param group_input_channels - number of input channels per group. 387*4bdc9457SAndroid Build Coastguard Worker /// @param group_output_channels - number of output channels per group. 388*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 389*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 390*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 391*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, groups * group_input_channels] dimensions 392*4bdc9457SAndroid Build Coastguard Worker /// @param filter_id - Value ID for the filter tensor. The filter tensor must ge a 4D tensor defined in the @a subgraph 393*4bdc9457SAndroid Build Coastguard Worker /// with [groups * group_output_channels, kernel_height, kernel_width, group_input_channels] 394*4bdc9457SAndroid Build Coastguard Worker /// dimensions. 395*4bdc9457SAndroid Build Coastguard Worker /// @param bias_id - Value ID for the bias tensor, or XNN_INVALID_VALUE_ID for a 2D Convolution Node without a bias. If 396*4bdc9457SAndroid Build Coastguard Worker /// present, the bias tensor must be a 1D tensor defined in the @a subgraph with 397*4bdc9457SAndroid Build Coastguard Worker /// [groups * group_output_channels] dimensions. 398*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 399*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, groups * group_output_channels] dimensions. 400*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Deconvolution Node. No supported flags are currently defined. 401*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_deconvolution_2d( 402*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 403*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_top, 404*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_right, 405*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_bottom, 406*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_left, 407*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_height, 408*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_width, 409*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 410*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 411*4bdc9457SAndroid Build Coastguard Worker uint32_t upsampling_height, 412*4bdc9457SAndroid Build Coastguard Worker uint32_t upsampling_width, 413*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 414*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 415*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 416*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 417*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 418*4bdc9457SAndroid Build Coastguard Worker float output_min, 419*4bdc9457SAndroid Build Coastguard Worker float output_max, 420*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 421*4bdc9457SAndroid Build Coastguard Worker uint32_t filter_id, 422*4bdc9457SAndroid Build Coastguard Worker uint32_t bias_id, 423*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 424*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 425*4bdc9457SAndroid Build Coastguard Worker 426*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Depthwise Convolution Node and add it to a Subgraph. 427*4bdc9457SAndroid Build Coastguard Worker /// 428*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 429*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_top - implicit zero-padding above 2D input data. Must be 0 if XNN_FLAG_TENSORFLOW_SAME_PADDING 430*4bdc9457SAndroid Build Coastguard Worker /// flag is specified. 431*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_right - implicit zero-padding to the right of 2D input data. Must be 0 if 432*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 433*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_bottom - implicit zero-padding below 2D input data. Must be 0 if 434*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 435*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_left - implicit zero-padding to the left of 2D input data. Must be 0 if 436*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 437*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_height - kernel (filter) height. 438*4bdc9457SAndroid Build Coastguard Worker /// @param kernel_width - kernel (filter) width. 439*4bdc9457SAndroid Build Coastguard Worker /// @param subsampling_height - height of subsampling region for convolution output (convolution height stride). 440*4bdc9457SAndroid Build Coastguard Worker /// @param subsampling_width - width of subsampling region for convolution output (convolution width stride). 441*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_height - dilation of kernel elements along the height dimension. 442*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_width - dilation of kernel elements along the width dimension. 443*4bdc9457SAndroid Build Coastguard Worker /// @param depth_multiplier - ratio of output channels to input channels. 444*4bdc9457SAndroid Build Coastguard Worker /// @param input_channels - number of input channels. 445*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 446*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 447*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 448*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, input_channels] dimensions 449*4bdc9457SAndroid Build Coastguard Worker /// @param filter_id - Value ID for the filter tensor. The filter tensor must ge a 4D tensor defined in the @a subgraph 450*4bdc9457SAndroid Build Coastguard Worker /// with [1, kernel_height, kernel_width, input_channels * depth_multiplier] dimensions. 451*4bdc9457SAndroid Build Coastguard Worker /// @param bias_id - Value ID for the bias tensor, or XNN_INVALID_VALUE_ID for a 2D Depthwise Convolution Node without 452*4bdc9457SAndroid Build Coastguard Worker /// a bias. If present, the bias tensor must be a 1D tensor defined in the @a subgraph with 453*4bdc9457SAndroid Build Coastguard Worker /// [input_channels * depth_multiplier] dimensions. 454*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 455*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, input_channels * depth_multiplier] dimensions. 456*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Depthwise Convolution Node. The only currently supported values is 457*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING. 458*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_depthwise_convolution_2d( 459*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 460*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 461*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 462*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 463*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 464*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 465*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 466*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 467*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 468*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 469*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 470*4bdc9457SAndroid Build Coastguard Worker uint32_t depth_multiplier, 471*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 472*4bdc9457SAndroid Build Coastguard Worker float output_min, 473*4bdc9457SAndroid Build Coastguard Worker float output_max, 474*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 475*4bdc9457SAndroid Build Coastguard Worker uint32_t filter_id, 476*4bdc9457SAndroid Build Coastguard Worker uint32_t bias_id, 477*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 478*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 479*4bdc9457SAndroid Build Coastguard Worker 480*4bdc9457SAndroid Build Coastguard Worker /// Define a Depth To Space Node and add it to a Subgraph. 481*4bdc9457SAndroid Build Coastguard Worker /// 482*4bdc9457SAndroid Build Coastguard Worker /// The Depth To Space Node rearranges data from depth into blocks of spatial data (a reverse transform to 483*4bdc9457SAndroid Build Coastguard Worker /// Space To Depth). For a given input pixel, an output square of pixels with side @a block_size is formed from values 484*4bdc9457SAndroid Build Coastguard Worker /// in the corresponding number of its channels. The output depth is therefore @a block_size x @a block_size times 485*4bdc9457SAndroid Build Coastguard Worker /// smaller than that of the input. 486*4bdc9457SAndroid Build Coastguard Worker /// 487*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 488*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 489*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, OC * block_size * block_size] dimensions. 490*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 491*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH * block_size, IW * block_size, OC] dimensions. 492*4bdc9457SAndroid Build Coastguard Worker /// @param block_size - the size of the spatial block. 493*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the input_channels Node. No supported flags are currently defined. 494*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_depth_to_space( 495*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 496*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 497*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 498*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 499*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 500*4bdc9457SAndroid Build Coastguard Worker 501*4bdc9457SAndroid Build Coastguard Worker /// Define a 1D Global Average Pooling Node and add it to a Subgraph. 502*4bdc9457SAndroid Build Coastguard Worker /// 503*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 504*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 505*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 506*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a dense tensor with 2 or more dimensions 507*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph. Averaging is performed across the second-innermost dimension. 508*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a dense tensor with 2 or more 509*4bdc9457SAndroid Build Coastguard Worker /// dimensions defined in the @a subgraph. 510*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 1D Global Average Pooling Node. No supported flags are currently defined. 511*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_global_average_pooling_1d( 512*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 513*4bdc9457SAndroid Build Coastguard Worker float output_min, 514*4bdc9457SAndroid Build Coastguard Worker float output_max, 515*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 516*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 517*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 518*4bdc9457SAndroid Build Coastguard Worker 519*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Global Average Pooling Node and add it to a Subgraph. 520*4bdc9457SAndroid Build Coastguard Worker /// 521*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 522*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 523*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 524*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a dense tensor with 3 or more dimensions 525*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph. Averaging is performed across the second- and third-innermost 526*4bdc9457SAndroid Build Coastguard Worker /// dimensions. 527*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a dense tensor with 3 or more 528*4bdc9457SAndroid Build Coastguard Worker /// dimensions defined in the @a subgraph. 529*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Global Average Pooling Node. No supported flags are currently defined. 530*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_global_average_pooling_2d( 531*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 532*4bdc9457SAndroid Build Coastguard Worker float output_min, 533*4bdc9457SAndroid Build Coastguard Worker float output_max, 534*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 535*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 536*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 537*4bdc9457SAndroid Build Coastguard Worker 538*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Average Pooling Node and add it to a Subgraph. 539*4bdc9457SAndroid Build Coastguard Worker /// 540*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 541*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_top - implicit zero-padding above 2D input data. Must be 0 if XNN_FLAG_TENSORFLOW_SAME_PADDING 542*4bdc9457SAndroid Build Coastguard Worker /// flag is specified. 543*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_right - implicit zero-padding to the right of 2D input data. Must be 0 if 544*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 545*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_bottom - implicit zero-padding below 2D input data. Must be 0 if 546*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 547*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_left - implicit zero-padding to the left of 2D input data. Must be 0 if 548*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 549*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_height - pooling (kernel) height. 550*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_width - pooling (kernel) width. 551*4bdc9457SAndroid Build Coastguard Worker /// @param stride_height - displacing of the pooling window in the vertical dimension of the input pixels corresponding 552*4bdc9457SAndroid Build Coastguard Worker /// to vertically adjacent output pixels. 553*4bdc9457SAndroid Build Coastguard Worker /// @param stride_width - displacing of the pooling window in the horizontal dimension of the input pixels corresponding 554*4bdc9457SAndroid Build Coastguard Worker /// to horizontally adjacent output pixels. 555*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 556*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 557*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 558*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, channels] dimensions 559*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 560*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, channels] dimensions. 561*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Average Pooling Node. The only currently supported values is 562*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING. 563*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_average_pooling_2d( 564*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 565*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 566*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 567*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 568*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 569*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 570*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 571*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 572*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 573*4bdc9457SAndroid Build Coastguard Worker float output_min, 574*4bdc9457SAndroid Build Coastguard Worker float output_max, 575*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 576*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 577*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 578*4bdc9457SAndroid Build Coastguard Worker 579*4bdc9457SAndroid Build Coastguard Worker /// Define a Fully Connected Node and add it to a Subgraph. 580*4bdc9457SAndroid Build Coastguard Worker /// 581*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 582*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 583*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 584*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be an N-dimensional tensor defined in the 585*4bdc9457SAndroid Build Coastguard Worker /// @a subgraph. If XNN_FLAG_TENSORFLOW_RESHAPE_2D is not specified, the input tensor must be at least 586*4bdc9457SAndroid Build Coastguard Worker /// 1D and its last dimension must match the last dimension of the filter tensor. In particular, if 587*4bdc9457SAndroid Build Coastguard Worker /// input is a 2D tensor, it must have [batch_size, input_channels] dimensions. 588*4bdc9457SAndroid Build Coastguard Worker /// If XNN_FLAG_TENSORFLOW_RESHAPE_2D is specified, the number of elements in the input tensor must be 589*4bdc9457SAndroid Build Coastguard Worker /// divisible by the input_channels. The tensor will be first flattened into a 1D tensor of 590*4bdc9457SAndroid Build Coastguard Worker /// [num_input_elements] dimensions, then reshaped into a 2D tensor of 591*4bdc9457SAndroid Build Coastguard Worker /// [num_input_elements / input_channels, input_channels] dimensions where num_input_elements is the 592*4bdc9457SAndroid Build Coastguard Worker /// total number of elements in the input tensor. 593*4bdc9457SAndroid Build Coastguard Worker /// @param filter_id - Value ID for the filter tensor. The filter tensor must a 2D tensor defined in the @a subgraph. 594*4bdc9457SAndroid Build Coastguard Worker /// If the XNN_FLAG_TRANSPOSE_WEIGHTS flag is not specified, the filter tensor must have 595*4bdc9457SAndroid Build Coastguard Worker /// [output_channels, input_channels] dimensions. If the XNN_FLAG_TRANSPOSE_WEIGHTS flag is 596*4bdc9457SAndroid Build Coastguard Worker /// specified, the filter tensor must have [input_channels, output_channels] dimensions. 597*4bdc9457SAndroid Build Coastguard Worker /// @param bias_id - Value ID for the bias tensor, or XNN_INVALID_VALUE_ID for a Fully Connected Node without a bias. 598*4bdc9457SAndroid Build Coastguard Worker /// If present, the bias tensor must be a 1D tensor defined in the @a subgraph with [output_channels] 599*4bdc9457SAndroid Build Coastguard Worker /// dimensions. 600*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph. 601*4bdc9457SAndroid Build Coastguard Worker /// If XNN_FLAG_TENSORFLOW_RESHAPE_2D is not specified, the output tensor must have the same 602*4bdc9457SAndroid Build Coastguard Worker /// dimensionality as the input tensor, all its dimensions but the last one must match the 603*4bdc9457SAndroid Build Coastguard Worker /// corresponding dimensions of the input tensor, and the last dimensions of the output tensor must 604*4bdc9457SAndroid Build Coastguard Worker /// match the first dimension of the filter tensor. In particular, if input is a 2D tensor, output 605*4bdc9457SAndroid Build Coastguard Worker /// must be a 2D tensor of [batch_size, output_channels] dimensions. 606*4bdc9457SAndroid Build Coastguard Worker /// If XNN_FLAG_TENSORFLOW_RESHAPE_2D is specified, output must be a 2D tensor of 607*4bdc9457SAndroid Build Coastguard Worker /// [num_input_elements / input_channels, output_channels] dimensions where num_input_elements is the 608*4bdc9457SAndroid Build Coastguard Worker /// total number of elements in the input tensor. 609*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Fully Connected Node. The only currently supported values are 610*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_RESHAPE_2D and XNN_FLAG_TRANSPOSE_WEIGHTS. 611*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_fully_connected( 612*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 613*4bdc9457SAndroid Build Coastguard Worker float output_min, 614*4bdc9457SAndroid Build Coastguard Worker float output_max, 615*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 616*4bdc9457SAndroid Build Coastguard Worker uint32_t filter_id, 617*4bdc9457SAndroid Build Coastguard Worker uint32_t bias_id, 618*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 619*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 620*4bdc9457SAndroid Build Coastguard Worker 621*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Max Pooling Node and add it to a Subgraph. 622*4bdc9457SAndroid Build Coastguard Worker /// 623*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 624*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_top - implicit zero-padding above 2D input data. Must be 0 if XNN_FLAG_TENSORFLOW_SAME_PADDING 625*4bdc9457SAndroid Build Coastguard Worker /// flag is specified. 626*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_right - implicit zero-padding to the right of 2D input data. Must be 0 if 627*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 628*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_bottom - implicit zero-padding below 2D input data. Must be 0 if 629*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 630*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_left - implicit zero-padding to the left of 2D input data. Must be 0 if 631*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING flag is specified. 632*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_height - pooling (kernel) height. 633*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_width - pooling (kernel) width. 634*4bdc9457SAndroid Build Coastguard Worker /// @param stride_height - displacing of the pooling window in the vertical dimension of the input pixels corresponding 635*4bdc9457SAndroid Build Coastguard Worker /// to vertically adjacent output pixels. 636*4bdc9457SAndroid Build Coastguard Worker /// @param stride_width - displacing of the pooling window in the horizontal dimension of the input pixels corresponding 637*4bdc9457SAndroid Build Coastguard Worker /// to horizontally adjacent output pixels. 638*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_height - dilation of pooling elements along the height dimension. 639*4bdc9457SAndroid Build Coastguard Worker /// @param dilation_width - dilation of pooling elements along the width dimension. 640*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 641*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 642*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 643*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, channels] dimensions 644*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 645*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, channels] dimensions. 646*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Max Pooling Node. The only currently supported values is 647*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_SAME_PADDING. 648*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_max_pooling_2d( 649*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 650*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 651*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 652*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 653*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 654*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 655*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 656*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 657*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 658*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 659*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 660*4bdc9457SAndroid Build Coastguard Worker float output_min, 661*4bdc9457SAndroid Build Coastguard Worker float output_max, 662*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 663*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 664*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 665*4bdc9457SAndroid Build Coastguard Worker 666*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D ArgMax Pooling Node and add it to a Subgraph. 667*4bdc9457SAndroid Build Coastguard Worker /// 668*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 669*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_top - implicit zero-padding above 2D input data. 670*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_right - implicit zero-padding to the right of 2D input data. 671*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_bottom - implicit zero-padding below 2D input data. 672*4bdc9457SAndroid Build Coastguard Worker /// @param input_padding_left - implicit zero-padding to the left of 2D input data. 673*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_height - pooling (kernel) height. Vertical stride between pooling regions match this value. 674*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_width - pooling (kernel) width. Horizontal stride between pooling regions match this value. 675*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 676*4bdc9457SAndroid Build Coastguard Worker /// with [N, IH, IW, channels] dimensions 677*4bdc9457SAndroid Build Coastguard Worker /// @param output_value_id - Value ID for the output tensor with the maximum values in the pools. The output tensor must 678*4bdc9457SAndroid Build Coastguard Worker /// be a 4D tensor defined in the @a subgraph with [N, OH, OW, channels] dimensions. 679*4bdc9457SAndroid Build Coastguard Worker /// @param output_index_id - Value ID for the output tensor with the indexes of the maximum values in the pools. The 680*4bdc9457SAndroid Build Coastguard Worker /// output tensor must be a 4D tensor defined in the @a subgraph with [N, OH, OW, channels] 681*4bdc9457SAndroid Build Coastguard Worker /// dimensions. 682*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D ArgMax Pooling Node. No supported flags are currently defined. 683*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_argmax_pooling_2d( 684*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 685*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 686*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 687*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 688*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 689*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 690*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 691*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 692*4bdc9457SAndroid Build Coastguard Worker uint32_t output_value_id, 693*4bdc9457SAndroid Build Coastguard Worker uint32_t output_index_id, 694*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 695*4bdc9457SAndroid Build Coastguard Worker 696*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D UnPooling Node and add it to a Subgraph. 697*4bdc9457SAndroid Build Coastguard Worker /// 698*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 699*4bdc9457SAndroid Build Coastguard Worker /// @param padding_top - implicit padding above 2D output data. 700*4bdc9457SAndroid Build Coastguard Worker /// @param padding_right - implicit padding to the right of 2D output data. 701*4bdc9457SAndroid Build Coastguard Worker /// @param padding_bottom - implicit padding below 2D output data. 702*4bdc9457SAndroid Build Coastguard Worker /// @param padding_left - implicit padding to the left of 2D output data. 703*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_height - height of the pooling window. 704*4bdc9457SAndroid Build Coastguard Worker /// @param pooling_width - width of the pooling window. 705*4bdc9457SAndroid Build Coastguard Worker /// @param input_value_id - Value ID for the input tensor with the max-pooling values to invert. The input value tensor 706*4bdc9457SAndroid Build Coastguard Worker /// must be a 4D tensor defined in the @a subgraph with [N, IH, IW, channels] dimensions. 707*4bdc9457SAndroid Build Coastguard Worker /// @param input_index_id - Value ID for the input tensor with the indices of the per-pool maximum values produced by 708*4bdc9457SAndroid Build Coastguard Worker /// a 2D UnPooling Node. The input tensor must be a 4D tensor defined in the @a subgraph with 709*4bdc9457SAndroid Build Coastguard Worker /// [N, IH, IW, channels] dimensions. 710*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 711*4bdc9457SAndroid Build Coastguard Worker /// with [N, OH, OW, channels] dimensions. 712*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D UnPooling Node. No supported flags are currently defined. 713*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_unpooling_2d( 714*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 715*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_top, 716*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_right, 717*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_bottom, 718*4bdc9457SAndroid Build Coastguard Worker uint32_t padding_left, 719*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 720*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 721*4bdc9457SAndroid Build Coastguard Worker uint32_t input_value_id, 722*4bdc9457SAndroid Build Coastguard Worker uint32_t input_index_id, 723*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 724*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 725*4bdc9457SAndroid Build Coastguard Worker 726*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Input Add Node and add it to a Subgraph. 727*4bdc9457SAndroid Build Coastguard Worker /// 728*4bdc9457SAndroid Build Coastguard Worker /// The 2-Input Add Node computes elementwise addition of two tensor inputs with numpy broadcasting rules. 729*4bdc9457SAndroid Build Coastguard Worker /// 730*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 731*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 732*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 733*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 734*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 735*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 736*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 737*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 738*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 739*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 740*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 741*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 742*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 743*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 744*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Add Node. No supported flags are currently defined. 745*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_add2( 746*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 747*4bdc9457SAndroid Build Coastguard Worker float output_min, 748*4bdc9457SAndroid Build Coastguard Worker float output_max, 749*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 750*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 751*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 752*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 753*4bdc9457SAndroid Build Coastguard Worker 754*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Input Multiply Node and add it to a Subgraph. 755*4bdc9457SAndroid Build Coastguard Worker /// 756*4bdc9457SAndroid Build Coastguard Worker /// The 2-Input Multiply Node computes elementwise multiplication of two tensor inputs with numpy broadcasting rules. 757*4bdc9457SAndroid Build Coastguard Worker /// 758*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 759*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 760*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 761*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 762*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 763*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 764*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 765*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 766*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 767*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 768*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 769*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 770*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 771*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 772*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Multiply Node. No supported flags are currently defined. 773*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_multiply2( 774*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 775*4bdc9457SAndroid Build Coastguard Worker float output_min, 776*4bdc9457SAndroid Build Coastguard Worker float output_max, 777*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 778*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 779*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 780*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 781*4bdc9457SAndroid Build Coastguard Worker 782*4bdc9457SAndroid Build Coastguard Worker /// Define a Subtract Node and add it to a Subgraph. 783*4bdc9457SAndroid Build Coastguard Worker /// 784*4bdc9457SAndroid Build Coastguard Worker /// The Subtract Node computes elementwise subtraction of two tensor inputs with numpy broadcasting rules. 785*4bdc9457SAndroid Build Coastguard Worker /// 786*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 787*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 788*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 789*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 790*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 791*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 792*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 793*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 794*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 795*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 796*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 797*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 798*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 799*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 800*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Subtract Node. No supported flags are currently defined. 801*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_subtract( 802*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 803*4bdc9457SAndroid Build Coastguard Worker float output_min, 804*4bdc9457SAndroid Build Coastguard Worker float output_max, 805*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 806*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 807*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 808*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 809*4bdc9457SAndroid Build Coastguard Worker 810*4bdc9457SAndroid Build Coastguard Worker /// Define a Divide Node and add it to a Subgraph. 811*4bdc9457SAndroid Build Coastguard Worker /// 812*4bdc9457SAndroid Build Coastguard Worker /// The Divide Node computes elementwise division of two tensor inputs with numpy broadcasting rules. 813*4bdc9457SAndroid Build Coastguard Worker /// 814*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 815*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 816*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 817*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 818*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 819*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 820*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 821*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 822*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 823*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 824*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 825*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 826*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 827*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 828*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Divide Node. No supported flags are currently defined. 829*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_divide( 830*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 831*4bdc9457SAndroid Build Coastguard Worker float output_min, 832*4bdc9457SAndroid Build Coastguard Worker float output_max, 833*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 834*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 835*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 836*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 837*4bdc9457SAndroid Build Coastguard Worker 838*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Input Maximum Node and add it to a Subgraph. 839*4bdc9457SAndroid Build Coastguard Worker /// 840*4bdc9457SAndroid Build Coastguard Worker /// The 2-Input Maximum Node computes elementwise maximum of two tensor inputs with numpy broadcasting rules. 841*4bdc9457SAndroid Build Coastguard Worker /// 842*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 843*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 844*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 845*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 846*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 847*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 848*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 849*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 850*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 851*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 852*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 853*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 854*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Maximum Node. No supported flags are currently defined. 855*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_maximum2( 856*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 857*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 858*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 859*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 860*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 861*4bdc9457SAndroid Build Coastguard Worker 862*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Input Minimum Node and add it to a Subgraph. 863*4bdc9457SAndroid Build Coastguard Worker /// 864*4bdc9457SAndroid Build Coastguard Worker /// The 2-Input Minimum Node computes elementwise minimum of two tensor inputs with numpy broadcasting rules. 865*4bdc9457SAndroid Build Coastguard Worker /// 866*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 867*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 868*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 869*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 870*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 871*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 872*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 873*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 874*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 875*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 876*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 877*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 878*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Minimum Node. No supported flags are currently defined. 879*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_minimum2( 880*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 881*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 882*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 883*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 884*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 885*4bdc9457SAndroid Build Coastguard Worker 886*4bdc9457SAndroid Build Coastguard Worker /// Define a Squared Difference Node and add it to a Subgraph. 887*4bdc9457SAndroid Build Coastguard Worker /// 888*4bdc9457SAndroid Build Coastguard Worker /// The Squared Difference Node computes elementwise squared difference of two tensor inputs with numpy broadcasting 889*4bdc9457SAndroid Build Coastguard Worker /// rules. 890*4bdc9457SAndroid Build Coastguard Worker /// 891*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 892*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 893*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the second 894*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 895*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 896*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an M-dimensional tensor defined in 897*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension either equal to the corresponding dimension of the first 898*4bdc9457SAndroid Build Coastguard Worker /// input, or equal to 1. In the latter case, the elements of the input tensor are broadcasted along 899*4bdc9457SAndroid Build Coastguard Worker /// that dimension. 900*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a max(N,M)-dimensional tensor defined 901*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the maximum between the corresponding dimension 902*4bdc9457SAndroid Build Coastguard Worker /// of the two inputs. 903*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Squared Difference Node. No supported flags are currently defined. 904*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_squared_difference( 905*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 906*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 907*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 908*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 909*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 910*4bdc9457SAndroid Build Coastguard Worker 911*4bdc9457SAndroid Build Coastguard Worker /// Define a Constant Pad Node with static padding specification and add it to a Subgraph. 912*4bdc9457SAndroid Build Coastguard Worker /// 913*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 914*4bdc9457SAndroid Build Coastguard Worker /// @param pre_paddings - number of padding elements to insert before input elements for every dimension. This array 915*4bdc9457SAndroid Build Coastguard Worker /// must have as many elements as the the number of dimensions in the input tensor. 916*4bdc9457SAndroid Build Coastguard Worker /// @param post_paddings - number of padding elements to insert after input elements for every dimension. This array 917*4bdc9457SAndroid Build Coastguard Worker /// must have as many elements as the the number of dimensions in the input tensor. 918*4bdc9457SAndroid Build Coastguard Worker /// @param padding_value - constant value used to initialize padding elements. 919*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 920*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 921*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor with padding. 922*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Constant Pad Node. No supported flags are currently defined. 923*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_static_constant_pad( 924*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 925*4bdc9457SAndroid Build Coastguard Worker const size_t* pre_paddings, 926*4bdc9457SAndroid Build Coastguard Worker const size_t* post_paddings, 927*4bdc9457SAndroid Build Coastguard Worker float padding_value, 928*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 929*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 930*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 931*4bdc9457SAndroid Build Coastguard Worker 932*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Input Concatenate Node and add it to a Subgraph. 933*4bdc9457SAndroid Build Coastguard Worker /// 934*4bdc9457SAndroid Build Coastguard Worker /// The 2-Input Concatenate Node concatenates two tensors along a specified axis. 935*4bdc9457SAndroid Build Coastguard Worker /// 936*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 937*4bdc9457SAndroid Build Coastguard Worker /// @param axis - the axis to concatenate the two input tensors along 938*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 939*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 940*4bdc9457SAndroid Build Coastguard Worker /// second input. 941*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an N-dimensional tensor defined in 942*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 943*4bdc9457SAndroid Build Coastguard Worker /// first input. 944*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a N-dimensional tensor defined 945*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the dimension of both inputs, except the axis 946*4bdc9457SAndroid Build Coastguard Worker /// dimension, where it is the sum of the corresponding dimensions of both inputs. 947*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Concatenate Node. No supported flags are currently defined. 948*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_concatenate2( 949*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 950*4bdc9457SAndroid Build Coastguard Worker size_t axis, 951*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 952*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 953*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 954*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 955*4bdc9457SAndroid Build Coastguard Worker 956*4bdc9457SAndroid Build Coastguard Worker /// Define a 3-Input Concatenate Node and add it to a Subgraph. 957*4bdc9457SAndroid Build Coastguard Worker /// 958*4bdc9457SAndroid Build Coastguard Worker /// The 3-Input Concatenate Node concatenates three tensors along a specified axis. 959*4bdc9457SAndroid Build Coastguard Worker /// 960*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 961*4bdc9457SAndroid Build Coastguard Worker /// @param axis - the axis to concatenate the three input tensors along 962*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 963*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 964*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 965*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an N-dimensional tensor defined in 966*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 967*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 968*4bdc9457SAndroid Build Coastguard Worker /// @param input3_id - Value ID for the third input tensor. The input tensor must be an N-dimensional tensor defined in 969*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 970*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 971*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a N-dimensional tensor defined 972*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the dimension of all inputs, except the axis 973*4bdc9457SAndroid Build Coastguard Worker /// dimension, where it is the sum of the corresponding dimensions of all inputs. 974*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Concatenate Node. No supported flags are currently defined. 975*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_concatenate3( 976*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 977*4bdc9457SAndroid Build Coastguard Worker size_t axis, 978*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 979*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 980*4bdc9457SAndroid Build Coastguard Worker uint32_t input3_id, 981*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 982*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 983*4bdc9457SAndroid Build Coastguard Worker 984*4bdc9457SAndroid Build Coastguard Worker /// Define a 4-Input Concatenate Node and add it to a Subgraph. 985*4bdc9457SAndroid Build Coastguard Worker /// 986*4bdc9457SAndroid Build Coastguard Worker /// The 4-Input Concatenate Node concatenates four tensors along a specified axis. 987*4bdc9457SAndroid Build Coastguard Worker /// 988*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 989*4bdc9457SAndroid Build Coastguard Worker /// @param axis - the axis to concatenate the four input tensors along 990*4bdc9457SAndroid Build Coastguard Worker /// @param input1_id - Value ID for the first input tensor. The input tensor must be an N-dimensional tensor defined in 991*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 992*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 993*4bdc9457SAndroid Build Coastguard Worker /// @param input2_id - Value ID for the second input tensor. The input tensor must be an N-dimensional tensor defined in 994*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 995*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 996*4bdc9457SAndroid Build Coastguard Worker /// @param input3_id - Value ID for the third input tensor. The input tensor must be an N-dimensional tensor defined in 997*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 998*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 999*4bdc9457SAndroid Build Coastguard Worker /// @param input4_id - Value ID for the fourth input tensor. The input tensor must be an N-dimensional tensor defined in 1000*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph with each dimension, except the axis, equal to the corresponding dimension of the 1001*4bdc9457SAndroid Build Coastguard Worker /// other inputs. 1002*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a N-dimensional tensor defined 1003*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to the dimension of all inputs, except the axis 1004*4bdc9457SAndroid Build Coastguard Worker /// dimension, where it is the sum of the corresponding dimensions of all inputs. 1005*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Concatenate Node. No supported flags are currently defined. 1006*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_concatenate4( 1007*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1008*4bdc9457SAndroid Build Coastguard Worker size_t axis, 1009*4bdc9457SAndroid Build Coastguard Worker uint32_t input1_id, 1010*4bdc9457SAndroid Build Coastguard Worker uint32_t input2_id, 1011*4bdc9457SAndroid Build Coastguard Worker uint32_t input3_id, 1012*4bdc9457SAndroid Build Coastguard Worker uint32_t input4_id, 1013*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1014*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1015*4bdc9457SAndroid Build Coastguard Worker 1016*4bdc9457SAndroid Build Coastguard Worker /// Define a 2-Output Split Node and add it to a Subgraph. 1017*4bdc9457SAndroid Build Coastguard Worker /// 1018*4bdc9457SAndroid Build Coastguard Worker /// The 2-Output Split Node splits an input tensor into two output tensors along a specified axis evenly. 1019*4bdc9457SAndroid Build Coastguard Worker /// 1020*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1021*4bdc9457SAndroid Build Coastguard Worker /// @param split_dim - the dimension to split the input tensor along 1022*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be an N-dimensional tensor defined in the @a 1023*4bdc9457SAndroid Build Coastguard Worker /// subgraph. 1024*4bdc9457SAndroid Build Coastguard Worker /// @param output1_id - Value ID for the first output tensor. The output tensor must be an N-dimensional tensor defined 1025*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension, except the axis, equal to the corresponding dimension 1026*4bdc9457SAndroid Build Coastguard Worker /// of the second output. The split_dim dimension is half of the input's split_dim. 1027*4bdc9457SAndroid Build Coastguard Worker /// @param output2_id - Value ID for the second output tensor. The output tensor must be an N-dimensional tensor 1028*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1029*4bdc9457SAndroid Build Coastguard Worker /// dimension of the first output. The split_dim dimension is half of the input's split_dim. 1030*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Split Node. No supported flags are currently defined. 1031*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_even_split2( 1032*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1033*4bdc9457SAndroid Build Coastguard Worker size_t split_dim, 1034*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1035*4bdc9457SAndroid Build Coastguard Worker uint32_t output1_id, 1036*4bdc9457SAndroid Build Coastguard Worker uint32_t output2_id, 1037*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1038*4bdc9457SAndroid Build Coastguard Worker 1039*4bdc9457SAndroid Build Coastguard Worker /// Define a 3-Output Split Node and add it to a Subgraph. 1040*4bdc9457SAndroid Build Coastguard Worker /// 1041*4bdc9457SAndroid Build Coastguard Worker /// The 3-Output Split Node splits an input tensor into three output tensors along a specified axis evenly. 1042*4bdc9457SAndroid Build Coastguard Worker /// 1043*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1044*4bdc9457SAndroid Build Coastguard Worker /// @param split_dim - the dimension to split the input tensor along 1045*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be an N-dimensional tensor defined in the @a 1046*4bdc9457SAndroid Build Coastguard Worker /// subgraph. 1047*4bdc9457SAndroid Build Coastguard Worker /// @param output1_id - Value ID for the first output tensor. The output tensor must be an N-dimensional tensor defined 1048*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension, except the axis, equal to the corresponding dimension 1049*4bdc9457SAndroid Build Coastguard Worker /// of the second and third output. The split_dim dimension is one third of the input's split_dim. 1050*4bdc9457SAndroid Build Coastguard Worker /// @param output2_id - Value ID for the second output tensor. The output tensor must be an N-dimensional tensor 1051*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1052*4bdc9457SAndroid Build Coastguard Worker /// dimension of the first and third output. The split_dim dimension is one third of the input's 1053*4bdc9457SAndroid Build Coastguard Worker /// split_dim. 1054*4bdc9457SAndroid Build Coastguard Worker /// @param output3_id - Value ID for the third output tensor. The output tensor must be an N-dimensional tensor 1055*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1056*4bdc9457SAndroid Build Coastguard Worker /// dimension of the second and third output. The split_dim dimension is one third of the input's 1057*4bdc9457SAndroid Build Coastguard Worker /// split_dim. 1058*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Split Node. No supported flags are currently defined. 1059*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_even_split3( 1060*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1061*4bdc9457SAndroid Build Coastguard Worker size_t split_dim, 1062*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1063*4bdc9457SAndroid Build Coastguard Worker uint32_t output1_id, 1064*4bdc9457SAndroid Build Coastguard Worker uint32_t output2_id, 1065*4bdc9457SAndroid Build Coastguard Worker uint32_t output3_id, 1066*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1067*4bdc9457SAndroid Build Coastguard Worker 1068*4bdc9457SAndroid Build Coastguard Worker /// Define a 4-Output Split Node and add it to a Subgraph. 1069*4bdc9457SAndroid Build Coastguard Worker /// 1070*4bdc9457SAndroid Build Coastguard Worker /// The 4-Output Split Node splits an input tensor into four output tensors along a specified axis evenly. 1071*4bdc9457SAndroid Build Coastguard Worker /// 1072*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1073*4bdc9457SAndroid Build Coastguard Worker /// @param split_dim - the dimension to split the input tensor along 1074*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be an N-dimensional tensor defined in the @a 1075*4bdc9457SAndroid Build Coastguard Worker /// subgraph. 1076*4bdc9457SAndroid Build Coastguard Worker /// @param output1_id - Value ID for the first output tensor. The output tensor must be an N-dimensional tensor defined 1077*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension, except the axis, equal to the corresponding dimension 1078*4bdc9457SAndroid Build Coastguard Worker /// of the other output tensors. The split_dim dimension is one fourth of the input's split_dim. 1079*4bdc9457SAndroid Build Coastguard Worker /// @param output2_id - Value ID for the second output tensor. The output tensor must be an N-dimensional tensor 1080*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1081*4bdc9457SAndroid Build Coastguard Worker /// dimension of the other output tensors. The split_dim dimension is one fourth of the input's 1082*4bdc9457SAndroid Build Coastguard Worker /// split_dim. 1083*4bdc9457SAndroid Build Coastguard Worker /// @param output3_id - Value ID for the third output tensor. The output tensor must be an N-dimensional tensor 1084*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1085*4bdc9457SAndroid Build Coastguard Worker /// dimension of the other output tensors. The split_dim dimension is one fourth of the input's 1086*4bdc9457SAndroid Build Coastguard Worker /// split_dim. 1087*4bdc9457SAndroid Build Coastguard Worker /// @param output4_id - Value ID for the fourth output tensor. The output tensor must be an N-dimensional tensor 1088*4bdc9457SAndroid Build Coastguard Worker /// defined in the @a subgraph with each dimension, except the axis, equal to the corresponding 1089*4bdc9457SAndroid Build Coastguard Worker /// dimension of the other output tensors. The split_dim dimension is one fourth of the input's 1090*4bdc9457SAndroid Build Coastguard Worker /// split_dim. 1091*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Split Node. No supported flags are currently defined. 1092*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_even_split4( 1093*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1094*4bdc9457SAndroid Build Coastguard Worker size_t split_dim, 1095*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1096*4bdc9457SAndroid Build Coastguard Worker uint32_t output1_id, 1097*4bdc9457SAndroid Build Coastguard Worker uint32_t output2_id, 1098*4bdc9457SAndroid Build Coastguard Worker uint32_t output3_id, 1099*4bdc9457SAndroid Build Coastguard Worker uint32_t output4_id, 1100*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1101*4bdc9457SAndroid Build Coastguard Worker 1102*4bdc9457SAndroid Build Coastguard Worker /// Define a Reshape Node with static shape specification and add it to a Subgraph. 1103*4bdc9457SAndroid Build Coastguard Worker /// 1104*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1105*4bdc9457SAndroid Build Coastguard Worker /// @param num_dims - number of shape dimensions in the output tensor. 1106*4bdc9457SAndroid Build Coastguard Worker /// @param new_shape - shape dimensions of the output tensor. 1107*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1108*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1109*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor with padding. 1110*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Reshape Node. No supported flags are currently defined. 1111*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_static_reshape( 1112*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1113*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 1114*4bdc9457SAndroid Build Coastguard Worker const size_t* new_shape, 1115*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1116*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1117*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1118*4bdc9457SAndroid Build Coastguard Worker 1119*4bdc9457SAndroid Build Coastguard Worker /// Define a 2D Resize Bilinear Node with static output height & width specification and add it to a Subgraph. 1120*4bdc9457SAndroid Build Coastguard Worker /// 1121*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1122*4bdc9457SAndroid Build Coastguard Worker /// @param new_height - height dimension of the output tensor. 1123*4bdc9457SAndroid Build Coastguard Worker /// @param new_width - width dimension of the output tensor. 1124*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 1125*4bdc9457SAndroid Build Coastguard Worker /// with [N, H, W, C] dimensions. 1126*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 1127*4bdc9457SAndroid Build Coastguard Worker /// with [N, new_height, new_width, C] dimensions. 1128*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the 2D Resize Bilinear Node. The only currently supported values are 1129*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_TENSORFLOW_LEGACY_MODE and XNN_FLAG_ALIGN_CORNERS, which are mutually exclusive. 1130*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_static_resize_bilinear_2d( 1131*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1132*4bdc9457SAndroid Build Coastguard Worker size_t new_height, 1133*4bdc9457SAndroid Build Coastguard Worker size_t new_width, 1134*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1135*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1136*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1137*4bdc9457SAndroid Build Coastguard Worker 1138*4bdc9457SAndroid Build Coastguard Worker /// Define a PReLU (Parametric ReLU) Node and add it to a Subgraph. 1139*4bdc9457SAndroid Build Coastguard Worker /// 1140*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1141*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be a 4D tensor defined in the @a subgraph 1142*4bdc9457SAndroid Build Coastguard Worker /// with [N, H, W, channels] dimensions. 1143*4bdc9457SAndroid Build Coastguard Worker /// @param slope_id - Value ID for the bias tensor. The bias tensor must be a 1D tensor defined in the @a subgraph with 1144*4bdc9457SAndroid Build Coastguard Worker /// [channels] dimensions. 1145*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be a 4D tensor defined in the @a subgraph 1146*4bdc9457SAndroid Build Coastguard Worker /// with [N, H, W, channels] dimensions. 1147*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the PReLU Node. No supported flags are currently defined. 1148*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_prelu( 1149*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1150*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1151*4bdc9457SAndroid Build Coastguard Worker uint32_t slope_id, 1152*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1153*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1154*4bdc9457SAndroid Build Coastguard Worker 1155*4bdc9457SAndroid Build Coastguard Worker /// Define a Abs Node and add it to a Subgraph. 1156*4bdc9457SAndroid Build Coastguard Worker /// 1157*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1158*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1159*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1160*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1161*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Abs Node. No supported flags are currently defined. 1162*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_abs( 1163*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1164*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1165*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1166*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1167*4bdc9457SAndroid Build Coastguard Worker 1168*4bdc9457SAndroid Build Coastguard Worker /// Define a Bankers' Rounding Node and add it to a Subgraph. 1169*4bdc9457SAndroid Build Coastguard Worker /// 1170*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1171*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1172*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1173*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1174*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Bankers' Rounding Node. No supported flags are currently defined. 1175*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_bankers_rounding( 1176*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1177*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1178*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1179*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1180*4bdc9457SAndroid Build Coastguard Worker 1181*4bdc9457SAndroid Build Coastguard Worker /// Define a Ceiling Node and add it to a Subgraph. 1182*4bdc9457SAndroid Build Coastguard Worker /// 1183*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1184*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1185*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1186*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1187*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Ceiling Node. No supported flags are currently defined. 1188*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_ceiling( 1189*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1190*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1191*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1192*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1193*4bdc9457SAndroid Build Coastguard Worker 1194*4bdc9457SAndroid Build Coastguard Worker /// Define a Clamp Node and add it to a Subgraph. 1195*4bdc9457SAndroid Build Coastguard Worker /// 1196*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1197*4bdc9457SAndroid Build Coastguard Worker /// @param output_min - lower bound for clipping output values. 1198*4bdc9457SAndroid Build Coastguard Worker /// @param output_max - upper bound for clipping output values. 1199*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1200*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1201*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1202*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Clamp Node. No supported flags are currently defined. 1203*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_clamp( 1204*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1205*4bdc9457SAndroid Build Coastguard Worker float output_min, 1206*4bdc9457SAndroid Build Coastguard Worker float output_max, 1207*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1208*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1209*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1210*4bdc9457SAndroid Build Coastguard Worker 1211*4bdc9457SAndroid Build Coastguard Worker /// Define an ELU (Exponential Linear Unit) Node and add it to a Subgraph. 1212*4bdc9457SAndroid Build Coastguard Worker /// 1213*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1214*4bdc9457SAndroid Build Coastguard Worker /// @param alpha - scale factor for negative output elements. 1215*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1216*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1217*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1218*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the ELU Node. No supported flags are currently defined. 1219*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_elu( 1220*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1221*4bdc9457SAndroid Build Coastguard Worker float alpha, 1222*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1223*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1224*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1225*4bdc9457SAndroid Build Coastguard Worker 1226*4bdc9457SAndroid Build Coastguard Worker /// Define a Floor Node and add it to a Subgraph. 1227*4bdc9457SAndroid Build Coastguard Worker /// 1228*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1229*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1230*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1231*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1232*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Floor Node. No supported flags are currently defined. 1233*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_floor( 1234*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1235*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1236*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1237*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1238*4bdc9457SAndroid Build Coastguard Worker 1239*4bdc9457SAndroid Build Coastguard Worker /// Define a HardSwish Node and add it to a Subgraph. 1240*4bdc9457SAndroid Build Coastguard Worker /// 1241*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1242*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1243*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1244*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1245*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the HardSwish Node. No supported flags are currently defined. 1246*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_hardswish( 1247*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1248*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1249*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1250*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1251*4bdc9457SAndroid Build Coastguard Worker 1252*4bdc9457SAndroid Build Coastguard Worker /// Define a Leaky ReLU Node and add it to a Subgraph. 1253*4bdc9457SAndroid Build Coastguard Worker /// 1254*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1255*4bdc9457SAndroid Build Coastguard Worker /// @param negative_slope - scale factor for negative input elements. 1256*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1257*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1258*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1259*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Leaky ReLU Node. No supported flags are currently defined. 1260*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_leaky_relu( 1261*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1262*4bdc9457SAndroid Build Coastguard Worker float negative_slope, 1263*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1264*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1265*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1266*4bdc9457SAndroid Build Coastguard Worker 1267*4bdc9457SAndroid Build Coastguard Worker /// Define a Negate Node and add it to a Subgraph. 1268*4bdc9457SAndroid Build Coastguard Worker /// 1269*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1270*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1271*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1272*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1273*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Negate Node. No supported flags are currently defined. 1274*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_negate( 1275*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1276*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1277*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1278*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1279*4bdc9457SAndroid Build Coastguard Worker 1280*4bdc9457SAndroid Build Coastguard Worker /// Define a Sigmoid Node and add it to a Subgraph. 1281*4bdc9457SAndroid Build Coastguard Worker /// 1282*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1283*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1284*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1285*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1286*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Sigmoid Node. No supported flags are currently defined. 1287*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_sigmoid( 1288*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1289*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1290*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1291*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1292*4bdc9457SAndroid Build Coastguard Worker 1293*4bdc9457SAndroid Build Coastguard Worker /// Define a SoftMax Node and add it to a Subgraph. 1294*4bdc9457SAndroid Build Coastguard Worker /// 1295*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1296*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph, and have at 1297*4bdc9457SAndroid Build Coastguard Worker /// least one dimension. 1298*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1299*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1300*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the SoftMax Node. No supported flags are currently defined. 1301*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_softmax( 1302*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1303*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1304*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1305*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1306*4bdc9457SAndroid Build Coastguard Worker 1307*4bdc9457SAndroid Build Coastguard Worker /// Define a Square Node and add it to a Subgraph. 1308*4bdc9457SAndroid Build Coastguard Worker /// 1309*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1310*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1311*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1312*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1313*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Square Node. No supported flags are currently defined. 1314*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_square( 1315*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1316*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1317*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1318*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1319*4bdc9457SAndroid Build Coastguard Worker 1320*4bdc9457SAndroid Build Coastguard Worker /// Define a Square Root Node and add it to a Subgraph. 1321*4bdc9457SAndroid Build Coastguard Worker /// 1322*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1323*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be defined in the @a subgraph. 1324*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be defined in the @a subgraph, and its 1325*4bdc9457SAndroid Build Coastguard Worker /// shape must match the shape of the input tensor. 1326*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Square Root Node. No supported flags are currently defined. 1327*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_square_root( 1328*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1329*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1330*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1331*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1332*4bdc9457SAndroid Build Coastguard Worker 1333*4bdc9457SAndroid Build Coastguard Worker /// Define a Static Transpose Node and add it to a Subgraph. 1334*4bdc9457SAndroid Build Coastguard Worker /// 1335*4bdc9457SAndroid Build Coastguard Worker /// The Static Transpose Node applies a generalized transpose to the input tensor using the permuation in perm. 1336*4bdc9457SAndroid Build Coastguard Worker /// 1337*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object that will own the created Node. 1338*4bdc9457SAndroid Build Coastguard Worker /// @param input_id - Value ID for the input tensor. The input tensor must be an N-dimensional tensor defined in 1339*4bdc9457SAndroid Build Coastguard Worker /// the @a subgraph. 1340*4bdc9457SAndroid Build Coastguard Worker /// @param output_id - Value ID for the output tensor. The output tensor must be an N-dimensional tensor defined 1341*4bdc9457SAndroid Build Coastguard Worker /// in the @a subgraph with each dimension equal to its corresponding permuted input dimension. 1342*4bdc9457SAndroid Build Coastguard Worker /// @param num_dims - the number of permutation dimensions. This must be equal to the number of input dimensions. 1343*4bdc9457SAndroid Build Coastguard Worker /// @param perm - The permutation of the axis of the input tensor. The perm array must must contain 0 to N-1 in the 1344*4bdc9457SAndroid Build Coastguard Worker /// permuted order. 1345*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the Static Transpose Node. No supported flags are currently defined. 1346*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_define_static_transpose( 1347*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1348*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 1349*4bdc9457SAndroid Build Coastguard Worker const size_t* perm, 1350*4bdc9457SAndroid Build Coastguard Worker uint32_t input_id, 1351*4bdc9457SAndroid Build Coastguard Worker uint32_t output_id, 1352*4bdc9457SAndroid Build Coastguard Worker uint32_t flags); 1353*4bdc9457SAndroid Build Coastguard Worker 1354*4bdc9457SAndroid Build Coastguard Worker /// Weights cache is a cache for packed weights. It can be reused between runtimes. 1355*4bdc9457SAndroid Build Coastguard Worker typedef struct xnn_weights_cache* xnn_weights_cache_t; 1356*4bdc9457SAndroid Build Coastguard Worker 1357*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_weights_cache(xnn_weights_cache_t* weights_cache_out); 1358*4bdc9457SAndroid Build Coastguard Worker 1359*4bdc9457SAndroid Build Coastguard Worker /// Create a weights cache object specifying the initial size of weights cache (in bytes). 1360*4bdc9457SAndroid Build Coastguard Worker /// @size - initial capacity of the weights cache (in bytes), i.e. it can hold size bytes without growing. 1361*4bdc9457SAndroid Build Coastguard Worker /// @param weights_cache_out - pointer to the variable that will be initialized to a handle to the weights cache object 1362*4bdc9457SAndroid Build Coastguard Worker /// upon successful return. Once created, the weights cache object can be shared between 1363*4bdc9457SAndroid Build Coastguard Worker /// different Runtime objects. 1364*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_weights_cache_with_size(size_t size, xnn_weights_cache_t* weights_cache_out); 1365*4bdc9457SAndroid Build Coastguard Worker 1366*4bdc9457SAndroid Build Coastguard Worker 1367*4bdc9457SAndroid Build Coastguard Worker /// Weights cache can be finalized in these ways: 1368*4bdc9457SAndroid Build Coastguard Worker enum xnn_weights_cache_finalization_kind { 1369*4bdc9457SAndroid Build Coastguard Worker /// Weights cache is finalized, no insert operations into the weights cache is allowed, even if the "inserted" 1370*4bdc9457SAndroid Build Coastguard Worker /// weights already exist in thee cache. Weights cache memory will also be trimmed to page boundary and set to 1371*4bdc9457SAndroid Build Coastguard Worker /// read-only (to prevent writes). 1372*4bdc9457SAndroid Build Coastguard Worker xnn_weights_cache_finalization_kind_hard, 1373*4bdc9457SAndroid Build Coastguard Worker /// Weights cache will be finalized with some extra space at the end, this allows for "inserting" into the cache only 1374*4bdc9457SAndroid Build Coastguard Worker /// if the weights are already in the cache, and errors on inserting uncached weights. There is memory overhead. 1375*4bdc9457SAndroid Build Coastguard Worker xnn_weights_cache_finalization_kind_soft, 1376*4bdc9457SAndroid Build Coastguard Worker }; 1377*4bdc9457SAndroid Build Coastguard Worker 1378*4bdc9457SAndroid Build Coastguard Worker /// Finalizes the weights cache. The kind of finalization is specified by `finalization_kind`. 1379*4bdc9457SAndroid Build Coastguard Worker /// @param weights_cache - the weights cache object to finalize. 1380*4bdc9457SAndroid Build Coastguard Worker /// @param finalization_kind - the kind of finalization. 1381*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_finalize_weights_cache( 1382*4bdc9457SAndroid Build Coastguard Worker xnn_weights_cache_t weights_cache, 1383*4bdc9457SAndroid Build Coastguard Worker enum xnn_weights_cache_finalization_kind finalization_kind); 1384*4bdc9457SAndroid Build Coastguard Worker 1385*4bdc9457SAndroid Build Coastguard Worker /// Destroy a weights cache object, as well as memory used for the cache. 1386*4bdc9457SAndroid Build Coastguard Worker /// @param weights_cache - the weights cache object to destroy. 1387*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_delete_weights_cache(xnn_weights_cache_t weights_cache); 1388*4bdc9457SAndroid Build Coastguard Worker 1389*4bdc9457SAndroid Build Coastguard Worker typedef struct xnn_workspace* xnn_workspace_t; 1390*4bdc9457SAndroid Build Coastguard Worker 1391*4bdc9457SAndroid Build Coastguard Worker /// Create a workspace object. 1392*4bdc9457SAndroid Build Coastguard Worker /// @param workspace_out - pointer to the variable that will be initialized to a handle to the workspace object upon 1393*4bdc9457SAndroid Build Coastguard Worker /// successful return. Once created, the workspace can be shared between different Runtime 1394*4bdc9457SAndroid Build Coastguard Worker /// objects. 1395*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_workspace(xnn_workspace_t* workspace_out); 1396*4bdc9457SAndroid Build Coastguard Worker /// Destroy a workspace object, as well as memory used by the workspace. Object destruction can be deferred until all 1397*4bdc9457SAndroid Build Coastguard Worker /// Runtime objects created with this workspace are destroyed. 1398*4bdc9457SAndroid Build Coastguard Worker /// @param workspace - the workspace object to destroy. 1399*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_release_workspace(xnn_workspace_t workspace); 1400*4bdc9457SAndroid Build Coastguard Worker 1401*4bdc9457SAndroid Build Coastguard Worker /// Runtime is a combination of an execution plan for subgraph Nodes and a memory manager for subgraph Values. 1402*4bdc9457SAndroid Build Coastguard Worker typedef struct xnn_runtime* xnn_runtime_t; 1403*4bdc9457SAndroid Build Coastguard Worker 1404*4bdc9457SAndroid Build Coastguard Worker enum xnn_profile_info { 1405*4bdc9457SAndroid Build Coastguard Worker /// Returns a size_t containing the number of operators. 1406*4bdc9457SAndroid Build Coastguard Worker xnn_profile_info_num_operators, 1407*4bdc9457SAndroid Build Coastguard Worker /// Returns a char[] containing the null character separated names of all operators. 1408*4bdc9457SAndroid Build Coastguard Worker xnn_profile_info_operator_name, 1409*4bdc9457SAndroid Build Coastguard Worker /// Returns a uint64_t[] with the runtimes of all operators in the same order as xnn_profile_info_operator_name. 1410*4bdc9457SAndroid Build Coastguard Worker xnn_profile_info_operator_timing, 1411*4bdc9457SAndroid Build Coastguard Worker }; 1412*4bdc9457SAndroid Build Coastguard Worker 1413*4bdc9457SAndroid Build Coastguard Worker /// Return profile information for all operators. 1414*4bdc9457SAndroid Build Coastguard Worker /// 1415*4bdc9457SAndroid Build Coastguard Worker /// @param runtime - a Runtime object created with @ref xnn_create_runtime, @ref xnn_create_runtime_v2 or 1416*4bdc9457SAndroid Build Coastguard Worker /// @ref xnn_create_runtime_v3. 1417*4bdc9457SAndroid Build Coastguard Worker /// @param param_name - type of profile information required. 1418*4bdc9457SAndroid Build Coastguard Worker /// @param param_value_size - the size in bytes of memory pointed to by param_value. If this is not sufficient then 1419*4bdc9457SAndroid Build Coastguard Worker /// param_value_size_ret will be set to the required size and xnn_status_out_of_memory will be 1420*4bdc9457SAndroid Build Coastguard Worker /// returned. 1421*4bdc9457SAndroid Build Coastguard Worker /// @param param_value - a pointer to memory location where appropriate values for a given param_value will be written. 1422*4bdc9457SAndroid Build Coastguard Worker /// @param param_value_size_ret - returns number of bytes required to write the result if param_value_size is not 1423*4bdc9457SAndroid Build Coastguard Worker /// sufficient. 1424*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_get_runtime_profiling_info(xnn_runtime_t runtime, 1425*4bdc9457SAndroid Build Coastguard Worker enum xnn_profile_info param_name, 1426*4bdc9457SAndroid Build Coastguard Worker size_t param_value_size, 1427*4bdc9457SAndroid Build Coastguard Worker void* param_value, 1428*4bdc9457SAndroid Build Coastguard Worker size_t* param_value_size_ret); 1429*4bdc9457SAndroid Build Coastguard Worker 1430*4bdc9457SAndroid Build Coastguard Worker /// Create a Runtime object from a subgraph. 1431*4bdc9457SAndroid Build Coastguard Worker /// 1432*4bdc9457SAndroid Build Coastguard Worker /// @param subgraph - a Subgraph object with all Values and Nodes that would be handled by the runtime. No Values or 1433*4bdc9457SAndroid Build Coastguard Worker /// Nodes can be added to the runtime once it is constructed. 1434*4bdc9457SAndroid Build Coastguard Worker /// @param weights_cache - a cache for packed weights. The runtime will look up and reuse packed weights in this cache, 1435*4bdc9457SAndroid Build Coastguard Worker /// this will reduce memory allocated for packed weights. 1436*4bdc9457SAndroid Build Coastguard Worker /// @param workspace - a workspace to hold internal tensors. The runtime will allocate space used for internal tensors 1437*4bdc9457SAndroid Build Coastguard Worker /// and track them using workspace. Workspace can be shared and reused across different runtimes. If 1438*4bdc9457SAndroid Build Coastguard Worker /// workspace is NULL, there will be no sharing: each runtime has its own workspace. 1439*4bdc9457SAndroid Build Coastguard Worker /// @param threadpool - the thread pool to be used for parallelisation of computations in the runtime. If the thread 1440*4bdc9457SAndroid Build Coastguard Worker /// pool is NULL, the computation would run on the caller thread without parallelization. 1441*4bdc9457SAndroid Build Coastguard Worker /// @param flags - binary features of the runtime. The only currently supported values are 1442*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_HINT_SPARSE_INFERENCE, XNN_FLAG_HINT_FP16_INFERENCE, XNN_FLAG_FORCE_FP16_INFERENCE, and 1443*4bdc9457SAndroid Build Coastguard Worker /// XNN_FLAG_YIELD_WORKERS. If XNN_FLAG_YIELD_WORKERS is specified, worker threads would be yielded to 1444*4bdc9457SAndroid Build Coastguard Worker /// the system scheduler after processing the last operator in the Runtime. 1445*4bdc9457SAndroid Build Coastguard Worker /// @param runtime_out - pointer to the variable that will be initialized with a handle to the Runtime object upon 1446*4bdc9457SAndroid Build Coastguard Worker /// successful return. Once constructed, the Runtime object is independent of the Subgraph object 1447*4bdc9457SAndroid Build Coastguard Worker /// used to create it. 1448*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_runtime_v4( 1449*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1450*4bdc9457SAndroid Build Coastguard Worker xnn_weights_cache_t weights_cache, 1451*4bdc9457SAndroid Build Coastguard Worker xnn_workspace_t workspace, 1452*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool, 1453*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1454*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t* runtime_out); 1455*4bdc9457SAndroid Build Coastguard Worker 1456*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_runtime_v3( 1457*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1458*4bdc9457SAndroid Build Coastguard Worker xnn_weights_cache_t weights_cache, 1459*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool, 1460*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1461*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t* runtime_out); 1462*4bdc9457SAndroid Build Coastguard Worker 1463*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_runtime_v2( 1464*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1465*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool, 1466*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1467*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t* runtime_out); 1468*4bdc9457SAndroid Build Coastguard Worker 1469*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_runtime( 1470*4bdc9457SAndroid Build Coastguard Worker xnn_subgraph_t subgraph, 1471*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t* runtime_out); 1472*4bdc9457SAndroid Build Coastguard Worker 1473*4bdc9457SAndroid Build Coastguard Worker struct xnn_external_value { 1474*4bdc9457SAndroid Build Coastguard Worker uint32_t id; 1475*4bdc9457SAndroid Build Coastguard Worker void* data; 1476*4bdc9457SAndroid Build Coastguard Worker }; 1477*4bdc9457SAndroid Build Coastguard Worker 1478*4bdc9457SAndroid Build Coastguard Worker /// Setup data pointers for external inputs and outputs in a Runtime object. 1479*4bdc9457SAndroid Build Coastguard Worker /// 1480*4bdc9457SAndroid Build Coastguard Worker /// @param runtime - a Runtime object created with @ref xnn_create_runtime or @ref xnn_create_runtime_v2. 1481*4bdc9457SAndroid Build Coastguard Worker /// @param num_external_values - the number of external inputs and outputs specified in this call. This number must 1482*4bdc9457SAndroid Build Coastguard Worker /// match the number of external inputs and outputs in the runtime, i.e. all external 1483*4bdc9457SAndroid Build Coastguard Worker /// inputs and outputs in the runtime must be specified in one call. 1484*4bdc9457SAndroid Build Coastguard Worker /// @param external_values - array with location information for all external inputs and outputs in the runtime. 1485*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_runtime( 1486*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t runtime, 1487*4bdc9457SAndroid Build Coastguard Worker size_t num_external_values, 1488*4bdc9457SAndroid Build Coastguard Worker const struct xnn_external_value* external_values); 1489*4bdc9457SAndroid Build Coastguard Worker 1490*4bdc9457SAndroid Build Coastguard Worker /// Execute forward pass for all operators in the runtime. 1491*4bdc9457SAndroid Build Coastguard Worker /// 1492*4bdc9457SAndroid Build Coastguard Worker /// @param runtime - the Runtime object with the execution plan to invoke. 1493*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_invoke_runtime( 1494*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t runtime); 1495*4bdc9457SAndroid Build Coastguard Worker 1496*4bdc9457SAndroid Build Coastguard Worker /// Destroy a Runtime object, as well as operators and memory associated with it. 1497*4bdc9457SAndroid Build Coastguard Worker /// 1498*4bdc9457SAndroid Build Coastguard Worker /// @param runtime - the Runtime object to destroy. 1499*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_delete_runtime( 1500*4bdc9457SAndroid Build Coastguard Worker xnn_runtime_t runtime); 1501*4bdc9457SAndroid Build Coastguard Worker 1502*4bdc9457SAndroid Build Coastguard Worker typedef struct xnn_operator* xnn_operator_t; 1503*4bdc9457SAndroid Build Coastguard Worker 1504*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_run_operator( 1505*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op, 1506*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1507*4bdc9457SAndroid Build Coastguard Worker 1508*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_delete_operator( 1509*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t op); 1510*4bdc9457SAndroid Build Coastguard Worker 1511*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_F32_OPERATORS 1512*4bdc9457SAndroid Build Coastguard Worker 1513*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_abs_nc_f32( 1514*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1515*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1516*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1517*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1518*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* abs_op_out); 1519*4bdc9457SAndroid Build Coastguard Worker 1520*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_abs_nc_f32( 1521*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t abs_op, 1522*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1523*4bdc9457SAndroid Build Coastguard Worker const float* input, 1524*4bdc9457SAndroid Build Coastguard Worker float* output, 1525*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1526*4bdc9457SAndroid Build Coastguard Worker 1527*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_add_nd_f32( 1528*4bdc9457SAndroid Build Coastguard Worker float output_min, 1529*4bdc9457SAndroid Build Coastguard Worker float output_max, 1530*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1531*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* add_op_out); 1532*4bdc9457SAndroid Build Coastguard Worker 1533*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_add_nd_f32( 1534*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t add_op, 1535*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 1536*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 1537*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 1538*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 1539*4bdc9457SAndroid Build Coastguard Worker const float* input1, 1540*4bdc9457SAndroid Build Coastguard Worker const float* input2, 1541*4bdc9457SAndroid Build Coastguard Worker float* output, 1542*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1543*4bdc9457SAndroid Build Coastguard Worker 1544*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_argmax_pooling2d_nhwc_f32( 1545*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 1546*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 1547*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 1548*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 1549*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 1550*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 1551*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1552*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1553*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1554*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1555*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* argmax_pooling_op_out); 1556*4bdc9457SAndroid Build Coastguard Worker 1557*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_argmax_pooling2d_nhwc_f32( 1558*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t argmax_pooling_op, 1559*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1560*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1561*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1562*4bdc9457SAndroid Build Coastguard Worker const float* input, 1563*4bdc9457SAndroid Build Coastguard Worker float* output, 1564*4bdc9457SAndroid Build Coastguard Worker uint32_t* index, 1565*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1566*4bdc9457SAndroid Build Coastguard Worker 1567*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_average_pooling2d_nhwc_f32( 1568*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 1569*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 1570*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 1571*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 1572*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 1573*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 1574*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 1575*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 1576*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1577*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1578*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1579*4bdc9457SAndroid Build Coastguard Worker float output_min, 1580*4bdc9457SAndroid Build Coastguard Worker float output_max, 1581*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1582*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* average_pooling_op_out); 1583*4bdc9457SAndroid Build Coastguard Worker 1584*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_average_pooling2d_nhwc_f32( 1585*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t average_pooling_op, 1586*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1587*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1588*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1589*4bdc9457SAndroid Build Coastguard Worker const float* input, 1590*4bdc9457SAndroid Build Coastguard Worker float* output, 1591*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1592*4bdc9457SAndroid Build Coastguard Worker 1593*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_bankers_rounding_nc_f32( 1594*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1595*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1596*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1597*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1598*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* rounding_op_out); 1599*4bdc9457SAndroid Build Coastguard Worker 1600*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_bankers_rounding_nc_f32( 1601*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t rounding_op, 1602*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1603*4bdc9457SAndroid Build Coastguard Worker const float* input, 1604*4bdc9457SAndroid Build Coastguard Worker float* output, 1605*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1606*4bdc9457SAndroid Build Coastguard Worker 1607*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_ceiling_nc_f32( 1608*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1609*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1610*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1611*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1612*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* ceiling_op_out); 1613*4bdc9457SAndroid Build Coastguard Worker 1614*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_ceiling_nc_f32( 1615*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t ceiling_op, 1616*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1617*4bdc9457SAndroid Build Coastguard Worker const float* input, 1618*4bdc9457SAndroid Build Coastguard Worker float* output, 1619*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1620*4bdc9457SAndroid Build Coastguard Worker 1621*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_clamp_nc_f32( 1622*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1623*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1624*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1625*4bdc9457SAndroid Build Coastguard Worker float output_min, 1626*4bdc9457SAndroid Build Coastguard Worker float output_max, 1627*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1628*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* clamp_op_out); 1629*4bdc9457SAndroid Build Coastguard Worker 1630*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_clamp_nc_f32( 1631*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t clamp_op, 1632*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1633*4bdc9457SAndroid Build Coastguard Worker const float* input, 1634*4bdc9457SAndroid Build Coastguard Worker float* output, 1635*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1636*4bdc9457SAndroid Build Coastguard Worker 1637*4bdc9457SAndroid Build Coastguard Worker typedef const struct xnn_caches* xnn_caches_t; 1638*4bdc9457SAndroid Build Coastguard Worker 1639*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nhwc_f32( 1640*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 1641*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 1642*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 1643*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 1644*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 1645*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 1646*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 1647*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 1648*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 1649*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 1650*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 1651*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 1652*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 1653*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 1654*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 1655*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 1656*4bdc9457SAndroid Build Coastguard Worker const float* bias, 1657*4bdc9457SAndroid Build Coastguard Worker float output_min, 1658*4bdc9457SAndroid Build Coastguard Worker float output_max, 1659*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1660*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 1661*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 1662*4bdc9457SAndroid Build Coastguard Worker 1663*4bdc9457SAndroid Build Coastguard Worker // Forward declare. 1664*4bdc9457SAndroid Build Coastguard Worker struct xnn_post_operation; 1665*4bdc9457SAndroid Build Coastguard Worker 1666*4bdc9457SAndroid Build Coastguard Worker /// Create a convolution operator with a number of post operations. The 1667*4bdc9457SAndroid Build Coastguard Worker /// convolution operator created using this function does not have output_min 1668*4bdc9457SAndroid Build Coastguard Worker /// and output_max. The list of operators in post_operations will be applied in 1669*4bdc9457SAndroid Build Coastguard Worker /// order. Convolution with post operations is only supported on JIT platforms 1670*4bdc9457SAndroid Build Coastguard Worker /// and when JIT is enabled. 1671*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_fused_convolution2d_nhwc_f32( 1672*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 1673*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 1674*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 1675*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 1676*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 1677*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 1678*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 1679*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 1680*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 1681*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 1682*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 1683*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 1684*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 1685*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 1686*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 1687*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 1688*4bdc9457SAndroid Build Coastguard Worker const float* bias, 1689*4bdc9457SAndroid Build Coastguard Worker size_t num_post_operations, 1690*4bdc9457SAndroid Build Coastguard Worker struct xnn_post_operation* post_operations, 1691*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1692*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 1693*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 1694*4bdc9457SAndroid Build Coastguard Worker 1695*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nhwc_f32( 1696*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 1697*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1698*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1699*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1700*4bdc9457SAndroid Build Coastguard Worker const float* input, 1701*4bdc9457SAndroid Build Coastguard Worker float* output, 1702*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1703*4bdc9457SAndroid Build Coastguard Worker 1704*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_deconvolution2d_nhwc_f32( 1705*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_top, 1706*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_right, 1707*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_bottom, 1708*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_left, 1709*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 1710*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 1711*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 1712*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 1713*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 1714*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 1715*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 1716*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 1717*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 1718*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1719*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1720*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 1721*4bdc9457SAndroid Build Coastguard Worker const float* bias, 1722*4bdc9457SAndroid Build Coastguard Worker float output_min, 1723*4bdc9457SAndroid Build Coastguard Worker float output_max, 1724*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1725*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 1726*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* deconvolution_op_out); 1727*4bdc9457SAndroid Build Coastguard Worker 1728*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_deconvolution2d_nhwc_f32( 1729*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t deconvolution_op, 1730*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1731*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1732*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1733*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_height, 1734*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_width, 1735*4bdc9457SAndroid Build Coastguard Worker const float* input, 1736*4bdc9457SAndroid Build Coastguard Worker float* output, 1737*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1738*4bdc9457SAndroid Build Coastguard Worker 1739*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_divide_nd_f32( 1740*4bdc9457SAndroid Build Coastguard Worker float output_min, 1741*4bdc9457SAndroid Build Coastguard Worker float output_max, 1742*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1743*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* divide_op_out); 1744*4bdc9457SAndroid Build Coastguard Worker 1745*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_divide_nd_f32( 1746*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t divide_op, 1747*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 1748*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 1749*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 1750*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 1751*4bdc9457SAndroid Build Coastguard Worker const float* input1, 1752*4bdc9457SAndroid Build Coastguard Worker const float* input2, 1753*4bdc9457SAndroid Build Coastguard Worker float* output, 1754*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1755*4bdc9457SAndroid Build Coastguard Worker 1756*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_elu_nc_f32( 1757*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1758*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1759*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1760*4bdc9457SAndroid Build Coastguard Worker float alpha, 1761*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1762*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* elu_op_out); 1763*4bdc9457SAndroid Build Coastguard Worker 1764*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_elu_nc_f32( 1765*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t elu_op, 1766*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1767*4bdc9457SAndroid Build Coastguard Worker const float* input, 1768*4bdc9457SAndroid Build Coastguard Worker float* output, 1769*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1770*4bdc9457SAndroid Build Coastguard Worker 1771*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_floor_nc_f32( 1772*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1773*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1774*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1775*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1776*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* floor_op_out); 1777*4bdc9457SAndroid Build Coastguard Worker 1778*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_floor_nc_f32( 1779*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t floor_op, 1780*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1781*4bdc9457SAndroid Build Coastguard Worker const float* input, 1782*4bdc9457SAndroid Build Coastguard Worker float* output, 1783*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1784*4bdc9457SAndroid Build Coastguard Worker 1785*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_fully_connected_nc_f32( 1786*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 1787*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 1788*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1789*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1790*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 1791*4bdc9457SAndroid Build Coastguard Worker const float* bias, 1792*4bdc9457SAndroid Build Coastguard Worker float output_min, 1793*4bdc9457SAndroid Build Coastguard Worker float output_max, 1794*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1795*4bdc9457SAndroid Build Coastguard Worker const xnn_caches_t caches, 1796*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* fully_connected_op_out); 1797*4bdc9457SAndroid Build Coastguard Worker 1798*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_fully_connected_nc_f32( 1799*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t fully_connected_op, 1800*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1801*4bdc9457SAndroid Build Coastguard Worker const float* input, 1802*4bdc9457SAndroid Build Coastguard Worker float* output, 1803*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1804*4bdc9457SAndroid Build Coastguard Worker 1805*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_global_average_pooling_nwc_f32( 1806*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1807*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1808*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1809*4bdc9457SAndroid Build Coastguard Worker float output_min, 1810*4bdc9457SAndroid Build Coastguard Worker float output_max, 1811*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1812*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* global_average_pooling_op_out); 1813*4bdc9457SAndroid Build Coastguard Worker 1814*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_global_average_pooling_nwc_f32( 1815*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t global_average_pooling_op, 1816*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1817*4bdc9457SAndroid Build Coastguard Worker size_t width, 1818*4bdc9457SAndroid Build Coastguard Worker const float* input, 1819*4bdc9457SAndroid Build Coastguard Worker float* output, 1820*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1821*4bdc9457SAndroid Build Coastguard Worker 1822*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_hardswish_nc_f32( 1823*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1824*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1825*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1826*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1827*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* hardswish_op_out); 1828*4bdc9457SAndroid Build Coastguard Worker 1829*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_hardswish_nc_f32( 1830*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t hardswish_op, 1831*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1832*4bdc9457SAndroid Build Coastguard Worker const float* input, 1833*4bdc9457SAndroid Build Coastguard Worker float* output, 1834*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1835*4bdc9457SAndroid Build Coastguard Worker 1836*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_leaky_relu_nc_f32( 1837*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1838*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1839*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1840*4bdc9457SAndroid Build Coastguard Worker float negative_slope, 1841*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1842*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* leaky_relu_op_out); 1843*4bdc9457SAndroid Build Coastguard Worker 1844*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_leaky_relu_nc_f32( 1845*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t leaky_relu_op, 1846*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1847*4bdc9457SAndroid Build Coastguard Worker const float* input, 1848*4bdc9457SAndroid Build Coastguard Worker float* output, 1849*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1850*4bdc9457SAndroid Build Coastguard Worker 1851*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_max_pooling2d_nhwc_f32( 1852*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 1853*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 1854*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 1855*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 1856*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 1857*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 1858*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 1859*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 1860*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 1861*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 1862*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1863*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1864*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1865*4bdc9457SAndroid Build Coastguard Worker float output_min, 1866*4bdc9457SAndroid Build Coastguard Worker float output_max, 1867*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1868*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* max_pooling_op_out); 1869*4bdc9457SAndroid Build Coastguard Worker 1870*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_max_pooling2d_nhwc_f32( 1871*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t max_pooling_op, 1872*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1873*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1874*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1875*4bdc9457SAndroid Build Coastguard Worker const float* input, 1876*4bdc9457SAndroid Build Coastguard Worker float* output, 1877*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1878*4bdc9457SAndroid Build Coastguard Worker 1879*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_maximum_nd_f32( 1880*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1881*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* maximum_op_out); 1882*4bdc9457SAndroid Build Coastguard Worker 1883*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_maximum_nd_f32( 1884*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t maximum_op, 1885*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 1886*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 1887*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 1888*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 1889*4bdc9457SAndroid Build Coastguard Worker const float* input1, 1890*4bdc9457SAndroid Build Coastguard Worker const float* input2, 1891*4bdc9457SAndroid Build Coastguard Worker float* output, 1892*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1893*4bdc9457SAndroid Build Coastguard Worker 1894*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_minimum_nd_f32( 1895*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1896*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* minimum_op_out); 1897*4bdc9457SAndroid Build Coastguard Worker 1898*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_minimum_nd_f32( 1899*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t minimum_op, 1900*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 1901*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 1902*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 1903*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 1904*4bdc9457SAndroid Build Coastguard Worker const float* input1, 1905*4bdc9457SAndroid Build Coastguard Worker const float* input2, 1906*4bdc9457SAndroid Build Coastguard Worker float* output, 1907*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1908*4bdc9457SAndroid Build Coastguard Worker 1909*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_multiply_nd_f32( 1910*4bdc9457SAndroid Build Coastguard Worker float output_min, 1911*4bdc9457SAndroid Build Coastguard Worker float output_max, 1912*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1913*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* multiply_op_out); 1914*4bdc9457SAndroid Build Coastguard Worker 1915*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_multiply_nd_f32( 1916*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t multiply_op, 1917*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 1918*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 1919*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 1920*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 1921*4bdc9457SAndroid Build Coastguard Worker const float* input1, 1922*4bdc9457SAndroid Build Coastguard Worker const float* input2, 1923*4bdc9457SAndroid Build Coastguard Worker float* output, 1924*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1925*4bdc9457SAndroid Build Coastguard Worker 1926*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_negate_nc_f32( 1927*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1928*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1929*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1930*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1931*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* negate_op_out); 1932*4bdc9457SAndroid Build Coastguard Worker 1933*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_negate_nc_f32( 1934*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t negate_op, 1935*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1936*4bdc9457SAndroid Build Coastguard Worker const float* input, 1937*4bdc9457SAndroid Build Coastguard Worker float* output, 1938*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1939*4bdc9457SAndroid Build Coastguard Worker 1940*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_prelu_nc_f32( 1941*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1942*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1943*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1944*4bdc9457SAndroid Build Coastguard Worker const float* negative_slope, 1945*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1946*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 1947*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* prelu_op_out); 1948*4bdc9457SAndroid Build Coastguard Worker 1949*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_prelu_nc_f32( 1950*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t prelu_op, 1951*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1952*4bdc9457SAndroid Build Coastguard Worker const float* input, 1953*4bdc9457SAndroid Build Coastguard Worker float* output, 1954*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1955*4bdc9457SAndroid Build Coastguard Worker 1956*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_resize_bilinear2d_nchw_f32( 1957*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1958*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1959*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1960*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1961*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* resize_op_out); 1962*4bdc9457SAndroid Build Coastguard Worker 1963*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_resize_bilinear2d_nchw_f32( 1964*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t resize_op, 1965*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1966*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1967*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1968*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 1969*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 1970*4bdc9457SAndroid Build Coastguard Worker const float* input, 1971*4bdc9457SAndroid Build Coastguard Worker float* output, 1972*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1973*4bdc9457SAndroid Build Coastguard Worker 1974*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_resize_bilinear2d_nhwc_f32( 1975*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1976*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 1977*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 1978*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1979*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* resize_op_out); 1980*4bdc9457SAndroid Build Coastguard Worker 1981*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_resize_bilinear2d_nhwc_f32( 1982*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t resize_op, 1983*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 1984*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 1985*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 1986*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 1987*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 1988*4bdc9457SAndroid Build Coastguard Worker const float* input, 1989*4bdc9457SAndroid Build Coastguard Worker float* output, 1990*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 1991*4bdc9457SAndroid Build Coastguard Worker 1992*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_sigmoid_nc_f32( 1993*4bdc9457SAndroid Build Coastguard Worker size_t channels, 1994*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 1995*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 1996*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 1997*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sigmoid_op_out); 1998*4bdc9457SAndroid Build Coastguard Worker 1999*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_sigmoid_nc_f32( 2000*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sigmoid_op, 2001*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2002*4bdc9457SAndroid Build Coastguard Worker const float* input, 2003*4bdc9457SAndroid Build Coastguard Worker float* output, 2004*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2005*4bdc9457SAndroid Build Coastguard Worker 2006*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_softmax_nc_f32( 2007*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2008*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2009*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2010*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2011*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* softmax_op_out); 2012*4bdc9457SAndroid Build Coastguard Worker 2013*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_softmax_nc_f32( 2014*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t softmax_op, 2015*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2016*4bdc9457SAndroid Build Coastguard Worker const float* input, 2017*4bdc9457SAndroid Build Coastguard Worker float* output, 2018*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2019*4bdc9457SAndroid Build Coastguard Worker 2020*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_square_nc_f32( 2021*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2022*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2023*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2024*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2025*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* square_op_out); 2026*4bdc9457SAndroid Build Coastguard Worker 2027*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_square_nc_f32( 2028*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t square_op, 2029*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2030*4bdc9457SAndroid Build Coastguard Worker const float* input, 2031*4bdc9457SAndroid Build Coastguard Worker float* output, 2032*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2033*4bdc9457SAndroid Build Coastguard Worker 2034*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_square_root_nc_f32( 2035*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2036*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2037*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2038*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2039*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sqrt_op_out); 2040*4bdc9457SAndroid Build Coastguard Worker 2041*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_square_root_nc_f32( 2042*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sqrt_op, 2043*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2044*4bdc9457SAndroid Build Coastguard Worker const float* input, 2045*4bdc9457SAndroid Build Coastguard Worker float* output, 2046*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2047*4bdc9457SAndroid Build Coastguard Worker 2048*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_squared_difference_nd_f32( 2049*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2050*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* squared_difference_op_out); 2051*4bdc9457SAndroid Build Coastguard Worker 2052*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_squared_difference_nd_f32( 2053*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t squared_difference_op, 2054*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2055*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2056*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2057*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2058*4bdc9457SAndroid Build Coastguard Worker const float* input1, 2059*4bdc9457SAndroid Build Coastguard Worker const float* input2, 2060*4bdc9457SAndroid Build Coastguard Worker float* output, 2061*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2062*4bdc9457SAndroid Build Coastguard Worker 2063*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_subtract_nd_f32( 2064*4bdc9457SAndroid Build Coastguard Worker float output_min, 2065*4bdc9457SAndroid Build Coastguard Worker float output_max, 2066*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2067*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* subtract_op_out); 2068*4bdc9457SAndroid Build Coastguard Worker 2069*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_subtract_nd_f32( 2070*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t subtract_op, 2071*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2072*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2073*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2074*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2075*4bdc9457SAndroid Build Coastguard Worker const float* input1, 2076*4bdc9457SAndroid Build Coastguard Worker const float* input2, 2077*4bdc9457SAndroid Build Coastguard Worker float* output, 2078*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2079*4bdc9457SAndroid Build Coastguard Worker 2080*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_truncation_nc_f32( 2081*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2082*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2083*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2084*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2085*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* truncation_op_out); 2086*4bdc9457SAndroid Build Coastguard Worker 2087*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_truncation_nc_f32( 2088*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t truncation_op, 2089*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2090*4bdc9457SAndroid Build Coastguard Worker const float* input, 2091*4bdc9457SAndroid Build Coastguard Worker float* output, 2092*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2093*4bdc9457SAndroid Build Coastguard Worker 2094*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_NCHW_OPERATORS 2095*4bdc9457SAndroid Build Coastguard Worker 2096*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nchw_f32( 2097*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2098*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2099*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2100*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2101*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 2102*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 2103*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 2104*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 2105*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2106*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2107*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 2108*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 2109*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 2110*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2111*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2112*4bdc9457SAndroid Build Coastguard Worker const float* kernel, 2113*4bdc9457SAndroid Build Coastguard Worker const float* bias, 2114*4bdc9457SAndroid Build Coastguard Worker float output_min, 2115*4bdc9457SAndroid Build Coastguard Worker float output_max, 2116*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2117*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2118*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 2119*4bdc9457SAndroid Build Coastguard Worker 2120*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nchw_f32( 2121*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 2122*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2123*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2124*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2125*4bdc9457SAndroid Build Coastguard Worker const float* input, 2126*4bdc9457SAndroid Build Coastguard Worker float* output, 2127*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2128*4bdc9457SAndroid Build Coastguard Worker 2129*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_global_average_pooling_ncw_f32( 2130*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2131*4bdc9457SAndroid Build Coastguard Worker float output_min, 2132*4bdc9457SAndroid Build Coastguard Worker float output_max, 2133*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2134*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* global_average_pooling_op_out); 2135*4bdc9457SAndroid Build Coastguard Worker 2136*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_global_average_pooling_ncw_f32( 2137*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t global_average_pooling_op, 2138*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2139*4bdc9457SAndroid Build Coastguard Worker size_t width, 2140*4bdc9457SAndroid Build Coastguard Worker const float* input, 2141*4bdc9457SAndroid Build Coastguard Worker float* output, 2142*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2143*4bdc9457SAndroid Build Coastguard Worker 2144*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_NCHW_OPERATORS 2145*4bdc9457SAndroid Build Coastguard Worker 2146*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_F32_OPERATORS 2147*4bdc9457SAndroid Build Coastguard Worker 2148*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_X32_OPERATORS 2149*4bdc9457SAndroid Build Coastguard Worker 2150*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_channel_shuffle_nc_x32( 2151*4bdc9457SAndroid Build Coastguard Worker size_t groups, 2152*4bdc9457SAndroid Build Coastguard Worker size_t group_channels, 2153*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2154*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2155*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2156*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* channel_shuffle_op_out); 2157*4bdc9457SAndroid Build Coastguard Worker 2158*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_channel_shuffle_nc_x32( 2159*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t channel_shuffle_op, 2160*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2161*4bdc9457SAndroid Build Coastguard Worker const void* input, 2162*4bdc9457SAndroid Build Coastguard Worker void* output, 2163*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2164*4bdc9457SAndroid Build Coastguard Worker 2165*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_constant_pad_nd_x32( 2166*4bdc9457SAndroid Build Coastguard Worker const void* padding_value, 2167*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2168*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* constant_pad_op_out); 2169*4bdc9457SAndroid Build Coastguard Worker 2170*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_constant_pad_nd_x32( 2171*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t constant_pad_op, 2172*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 2173*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2174*4bdc9457SAndroid Build Coastguard Worker const size_t* pre_padding, 2175*4bdc9457SAndroid Build Coastguard Worker const size_t* post_padding, 2176*4bdc9457SAndroid Build Coastguard Worker const void* input, 2177*4bdc9457SAndroid Build Coastguard Worker void* output, 2178*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2179*4bdc9457SAndroid Build Coastguard Worker 2180*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_copy_nc_x32( 2181*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2182*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2183*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2184*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2185*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* copy_op_out); 2186*4bdc9457SAndroid Build Coastguard Worker 2187*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_copy_nc_x32( 2188*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t copy_op, 2189*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2190*4bdc9457SAndroid Build Coastguard Worker const void* input, 2191*4bdc9457SAndroid Build Coastguard Worker void* output, 2192*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2193*4bdc9457SAndroid Build Coastguard Worker 2194*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_depth_to_space_nhwc_x32( 2195*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 2196*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2197*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2198*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 2199*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2200*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* depth_to_space_op_out); 2201*4bdc9457SAndroid Build Coastguard Worker 2202*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_depth_to_space_nhwc_x32( 2203*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t depth_to_space_op, 2204*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2205*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2206*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2207*4bdc9457SAndroid Build Coastguard Worker const void* input, 2208*4bdc9457SAndroid Build Coastguard Worker void* output, 2209*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2210*4bdc9457SAndroid Build Coastguard Worker 2211*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_depth_to_space_nchw2nhwc_x32( 2212*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 2213*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2214*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2215*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 2216*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2217*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* depth_to_space_op_out); 2218*4bdc9457SAndroid Build Coastguard Worker 2219*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_depth_to_space_nchw2nhwc_x32( 2220*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t depth_to_space_op, 2221*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2222*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2223*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2224*4bdc9457SAndroid Build Coastguard Worker const void* input, 2225*4bdc9457SAndroid Build Coastguard Worker void* output, 2226*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2227*4bdc9457SAndroid Build Coastguard Worker 2228*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_space_to_depth_nhwc_x32( 2229*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 2230*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2231*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2232*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 2233*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2234*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* space_to_depth_op_out); 2235*4bdc9457SAndroid Build Coastguard Worker 2236*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_space_to_depth_nhwc_x32( 2237*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t space_to_depth_op, 2238*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2239*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2240*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2241*4bdc9457SAndroid Build Coastguard Worker const void* input, 2242*4bdc9457SAndroid Build Coastguard Worker void* output, 2243*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2244*4bdc9457SAndroid Build Coastguard Worker 2245*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_transpose_nd_x32( 2246*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2247*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* transpose_op_out); 2248*4bdc9457SAndroid Build Coastguard Worker 2249*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_transpose_nd_x32( 2250*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t transpose_op, 2251*4bdc9457SAndroid Build Coastguard Worker const void* input, 2252*4bdc9457SAndroid Build Coastguard Worker void* output, 2253*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 2254*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2255*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 2256*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2257*4bdc9457SAndroid Build Coastguard Worker 2258*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_run_transpose_nd_x32( 2259*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2260*4bdc9457SAndroid Build Coastguard Worker const void* input, 2261*4bdc9457SAndroid Build Coastguard Worker void* output, 2262*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 2263*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2264*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 2265*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2266*4bdc9457SAndroid Build Coastguard Worker 2267*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_unpooling2d_nhwc_x32( 2268*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2269*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2270*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2271*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2272*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 2273*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 2274*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2275*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 2276*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 2277*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2278*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* unpooling_op_out); 2279*4bdc9457SAndroid Build Coastguard Worker 2280*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_unpooling2d_nhwc_x32( 2281*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t unpooling_op, 2282*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2283*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2284*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2285*4bdc9457SAndroid Build Coastguard Worker const void* input, 2286*4bdc9457SAndroid Build Coastguard Worker const uint32_t* index, 2287*4bdc9457SAndroid Build Coastguard Worker void* output, 2288*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2289*4bdc9457SAndroid Build Coastguard Worker 2290*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_X32_OPERATORS 2291*4bdc9457SAndroid Build Coastguard Worker 2292*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_F16_OPERATORS 2293*4bdc9457SAndroid Build Coastguard Worker 2294*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_abs_nc_f16( 2295*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2296*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2297*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2298*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2299*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* abs_op_out); 2300*4bdc9457SAndroid Build Coastguard Worker 2301*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_abs_nc_f16( 2302*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t abs_op, 2303*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2304*4bdc9457SAndroid Build Coastguard Worker const void* input, 2305*4bdc9457SAndroid Build Coastguard Worker void* output, 2306*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2307*4bdc9457SAndroid Build Coastguard Worker 2308*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_add_nd_f16( 2309*4bdc9457SAndroid Build Coastguard Worker float output_min, 2310*4bdc9457SAndroid Build Coastguard Worker float output_max, 2311*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2312*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* add_op_out); 2313*4bdc9457SAndroid Build Coastguard Worker 2314*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_add_nd_f16( 2315*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t add_op, 2316*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2317*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2318*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2319*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2320*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2321*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2322*4bdc9457SAndroid Build Coastguard Worker void* output, 2323*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2324*4bdc9457SAndroid Build Coastguard Worker 2325*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_average_pooling2d_nhwc_f16( 2326*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2327*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2328*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2329*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2330*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 2331*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 2332*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 2333*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 2334*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2335*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 2336*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 2337*4bdc9457SAndroid Build Coastguard Worker float output_min, 2338*4bdc9457SAndroid Build Coastguard Worker float output_max, 2339*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2340*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* average_pooling_op_out); 2341*4bdc9457SAndroid Build Coastguard Worker 2342*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_average_pooling2d_nhwc_f16( 2343*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t average_pooling_op, 2344*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2345*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2346*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2347*4bdc9457SAndroid Build Coastguard Worker const void* input, 2348*4bdc9457SAndroid Build Coastguard Worker void* output, 2349*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2350*4bdc9457SAndroid Build Coastguard Worker 2351*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_bankers_rounding_nc_f16( 2352*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2353*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2354*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2355*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2356*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* rounding_op_out); 2357*4bdc9457SAndroid Build Coastguard Worker 2358*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_bankers_rounding_nc_f16( 2359*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t rounding_op, 2360*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2361*4bdc9457SAndroid Build Coastguard Worker const void* input, 2362*4bdc9457SAndroid Build Coastguard Worker void* output, 2363*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2364*4bdc9457SAndroid Build Coastguard Worker 2365*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_ceiling_nc_f16( 2366*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2367*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2368*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2369*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2370*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* ceiling_op_out); 2371*4bdc9457SAndroid Build Coastguard Worker 2372*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_ceiling_nc_f16( 2373*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t ceiling_op, 2374*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2375*4bdc9457SAndroid Build Coastguard Worker const void* input, 2376*4bdc9457SAndroid Build Coastguard Worker void* output, 2377*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2378*4bdc9457SAndroid Build Coastguard Worker 2379*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_clamp_nc_f16( 2380*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2381*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2382*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2383*4bdc9457SAndroid Build Coastguard Worker float output_min, 2384*4bdc9457SAndroid Build Coastguard Worker float output_max, 2385*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2386*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* clamp_op_out); 2387*4bdc9457SAndroid Build Coastguard Worker 2388*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_clamp_nc_f16( 2389*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t clamp_op, 2390*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2391*4bdc9457SAndroid Build Coastguard Worker const void* input, 2392*4bdc9457SAndroid Build Coastguard Worker void* output, 2393*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2394*4bdc9457SAndroid Build Coastguard Worker 2395*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nhwc_f16( 2396*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2397*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2398*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2399*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2400*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 2401*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 2402*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 2403*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 2404*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2405*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2406*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 2407*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 2408*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 2409*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2410*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2411*4bdc9457SAndroid Build Coastguard Worker const void* kernel, 2412*4bdc9457SAndroid Build Coastguard Worker const void* bias, 2413*4bdc9457SAndroid Build Coastguard Worker float output_min, 2414*4bdc9457SAndroid Build Coastguard Worker float output_max, 2415*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2416*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2417*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 2418*4bdc9457SAndroid Build Coastguard Worker 2419*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nhwc_f16( 2420*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 2421*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2422*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2423*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2424*4bdc9457SAndroid Build Coastguard Worker const void* input, 2425*4bdc9457SAndroid Build Coastguard Worker void* output, 2426*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2427*4bdc9457SAndroid Build Coastguard Worker 2428*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_deconvolution2d_nhwc_f16( 2429*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_top, 2430*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_right, 2431*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_bottom, 2432*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_left, 2433*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 2434*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 2435*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 2436*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 2437*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2438*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2439*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 2440*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 2441*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 2442*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 2443*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 2444*4bdc9457SAndroid Build Coastguard Worker const void* kernel, 2445*4bdc9457SAndroid Build Coastguard Worker const void* bias, 2446*4bdc9457SAndroid Build Coastguard Worker float output_min, 2447*4bdc9457SAndroid Build Coastguard Worker float output_max, 2448*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2449*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2450*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* deconvolution_op_out); 2451*4bdc9457SAndroid Build Coastguard Worker 2452*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_deconvolution2d_nhwc_f16( 2453*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t deconvolution_op, 2454*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2455*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2456*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2457*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_height, 2458*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_width, 2459*4bdc9457SAndroid Build Coastguard Worker const void* input, 2460*4bdc9457SAndroid Build Coastguard Worker void* output, 2461*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2462*4bdc9457SAndroid Build Coastguard Worker 2463*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_divide_nd_f16( 2464*4bdc9457SAndroid Build Coastguard Worker float output_min, 2465*4bdc9457SAndroid Build Coastguard Worker float output_max, 2466*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2467*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* divide_op_out); 2468*4bdc9457SAndroid Build Coastguard Worker 2469*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_divide_nd_f16( 2470*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t divide_op, 2471*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2472*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2473*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2474*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2475*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2476*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2477*4bdc9457SAndroid Build Coastguard Worker void* output, 2478*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2479*4bdc9457SAndroid Build Coastguard Worker 2480*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_elu_nc_f16( 2481*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2482*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2483*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2484*4bdc9457SAndroid Build Coastguard Worker float alpha, 2485*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2486*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* elu_op_out); 2487*4bdc9457SAndroid Build Coastguard Worker 2488*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_elu_nc_f16( 2489*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t elu_op, 2490*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2491*4bdc9457SAndroid Build Coastguard Worker const void* input, 2492*4bdc9457SAndroid Build Coastguard Worker void* output, 2493*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2494*4bdc9457SAndroid Build Coastguard Worker 2495*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_floor_nc_f16( 2496*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2497*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2498*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2499*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2500*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* floor_op_out); 2501*4bdc9457SAndroid Build Coastguard Worker 2502*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_floor_nc_f16( 2503*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t floor_op, 2504*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2505*4bdc9457SAndroid Build Coastguard Worker const void* input, 2506*4bdc9457SAndroid Build Coastguard Worker void* output, 2507*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2508*4bdc9457SAndroid Build Coastguard Worker 2509*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_fully_connected_nc_f16( 2510*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 2511*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 2512*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2513*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2514*4bdc9457SAndroid Build Coastguard Worker const void* kernel, 2515*4bdc9457SAndroid Build Coastguard Worker const void* bias, 2516*4bdc9457SAndroid Build Coastguard Worker float output_min, 2517*4bdc9457SAndroid Build Coastguard Worker float output_max, 2518*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2519*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2520*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* fully_connected_op_out); 2521*4bdc9457SAndroid Build Coastguard Worker 2522*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_fully_connected_nc_f16( 2523*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t fully_connected_op, 2524*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2525*4bdc9457SAndroid Build Coastguard Worker const void* input, 2526*4bdc9457SAndroid Build Coastguard Worker void* output, 2527*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2528*4bdc9457SAndroid Build Coastguard Worker 2529*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_global_average_pooling_nwc_f16( 2530*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2531*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2532*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2533*4bdc9457SAndroid Build Coastguard Worker float output_min, 2534*4bdc9457SAndroid Build Coastguard Worker float output_max, 2535*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2536*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* global_average_pooling_op_out); 2537*4bdc9457SAndroid Build Coastguard Worker 2538*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_global_average_pooling_nwc_f16( 2539*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t global_average_pooling_op, 2540*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2541*4bdc9457SAndroid Build Coastguard Worker size_t width, 2542*4bdc9457SAndroid Build Coastguard Worker const void* input, 2543*4bdc9457SAndroid Build Coastguard Worker void* output, 2544*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2545*4bdc9457SAndroid Build Coastguard Worker 2546*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_hardswish_nc_f16( 2547*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2548*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2549*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2550*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2551*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* hardswish_op_out); 2552*4bdc9457SAndroid Build Coastguard Worker 2553*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_hardswish_nc_f16( 2554*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t hardswish_op, 2555*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2556*4bdc9457SAndroid Build Coastguard Worker const void* input, 2557*4bdc9457SAndroid Build Coastguard Worker void* output, 2558*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2559*4bdc9457SAndroid Build Coastguard Worker 2560*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_leaky_relu_nc_f16( 2561*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2562*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2563*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2564*4bdc9457SAndroid Build Coastguard Worker float negative_slope, 2565*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2566*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* leaky_relu_op_out); 2567*4bdc9457SAndroid Build Coastguard Worker 2568*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_leaky_relu_nc_f16( 2569*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t leaky_relu_op, 2570*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2571*4bdc9457SAndroid Build Coastguard Worker const void* input, 2572*4bdc9457SAndroid Build Coastguard Worker void* output, 2573*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2574*4bdc9457SAndroid Build Coastguard Worker 2575*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_max_pooling2d_nhwc_f16( 2576*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2577*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2578*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2579*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2580*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 2581*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 2582*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 2583*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 2584*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2585*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2586*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2587*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 2588*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 2589*4bdc9457SAndroid Build Coastguard Worker float output_min, 2590*4bdc9457SAndroid Build Coastguard Worker float output_max, 2591*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2592*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* max_pooling_op_out); 2593*4bdc9457SAndroid Build Coastguard Worker 2594*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_max_pooling2d_nhwc_f16( 2595*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t max_pooling_op, 2596*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2597*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2598*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2599*4bdc9457SAndroid Build Coastguard Worker const void* input, 2600*4bdc9457SAndroid Build Coastguard Worker void* output, 2601*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2602*4bdc9457SAndroid Build Coastguard Worker 2603*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_maximum_nd_f16( 2604*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2605*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* maximum_op_out); 2606*4bdc9457SAndroid Build Coastguard Worker 2607*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_maximum_nd_f16( 2608*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t maximum_op, 2609*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2610*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2611*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2612*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2613*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2614*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2615*4bdc9457SAndroid Build Coastguard Worker void* output, 2616*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2617*4bdc9457SAndroid Build Coastguard Worker 2618*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_minimum_nd_f16( 2619*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2620*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* minimum_op_out); 2621*4bdc9457SAndroid Build Coastguard Worker 2622*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_minimum_nd_f16( 2623*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t minimum_op, 2624*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2625*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2626*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2627*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2628*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2629*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2630*4bdc9457SAndroid Build Coastguard Worker void* output, 2631*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2632*4bdc9457SAndroid Build Coastguard Worker 2633*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_multiply_nd_f16( 2634*4bdc9457SAndroid Build Coastguard Worker float output_min, 2635*4bdc9457SAndroid Build Coastguard Worker float output_max, 2636*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2637*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* multiply_op_out); 2638*4bdc9457SAndroid Build Coastguard Worker 2639*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_multiply_nd_f16( 2640*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t multiply_op, 2641*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2642*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2643*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2644*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2645*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2646*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2647*4bdc9457SAndroid Build Coastguard Worker void* output, 2648*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2649*4bdc9457SAndroid Build Coastguard Worker 2650*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_negate_nc_f16( 2651*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2652*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2653*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2654*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2655*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* negate_op_out); 2656*4bdc9457SAndroid Build Coastguard Worker 2657*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_negate_nc_f16( 2658*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t negate_op, 2659*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2660*4bdc9457SAndroid Build Coastguard Worker const void* input, 2661*4bdc9457SAndroid Build Coastguard Worker void* output, 2662*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2663*4bdc9457SAndroid Build Coastguard Worker 2664*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_prelu_nc_f16( 2665*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2666*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2667*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2668*4bdc9457SAndroid Build Coastguard Worker const void* negative_slope, 2669*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2670*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2671*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* prelu_op_out); 2672*4bdc9457SAndroid Build Coastguard Worker 2673*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_prelu_nc_f16( 2674*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t prelu_op, 2675*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2676*4bdc9457SAndroid Build Coastguard Worker const void* input, 2677*4bdc9457SAndroid Build Coastguard Worker void* output, 2678*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2679*4bdc9457SAndroid Build Coastguard Worker 2680*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_resize_bilinear2d_nhwc_f16( 2681*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2682*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 2683*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 2684*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2685*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* resize_op_out); 2686*4bdc9457SAndroid Build Coastguard Worker 2687*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_resize_bilinear2d_nhwc_f16( 2688*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t resize_op, 2689*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2690*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2691*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2692*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 2693*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 2694*4bdc9457SAndroid Build Coastguard Worker const void* input, 2695*4bdc9457SAndroid Build Coastguard Worker void* output, 2696*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2697*4bdc9457SAndroid Build Coastguard Worker 2698*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_sigmoid_nc_f16( 2699*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2700*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2701*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2702*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2703*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sigmoid_op_out); 2704*4bdc9457SAndroid Build Coastguard Worker 2705*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_sigmoid_nc_f16( 2706*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sigmoid_op, 2707*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2708*4bdc9457SAndroid Build Coastguard Worker const void* input, 2709*4bdc9457SAndroid Build Coastguard Worker void* output, 2710*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2711*4bdc9457SAndroid Build Coastguard Worker 2712*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_softmax_nc_f16( 2713*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2714*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2715*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2716*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2717*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* softmax_op_out); 2718*4bdc9457SAndroid Build Coastguard Worker 2719*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_softmax_nc_f16( 2720*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t softmax_op, 2721*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2722*4bdc9457SAndroid Build Coastguard Worker const void* input, 2723*4bdc9457SAndroid Build Coastguard Worker void* output, 2724*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2725*4bdc9457SAndroid Build Coastguard Worker 2726*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_square_nc_f16( 2727*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2728*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2729*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2730*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2731*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* square_op_out); 2732*4bdc9457SAndroid Build Coastguard Worker 2733*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_square_nc_f16( 2734*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t square_op, 2735*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2736*4bdc9457SAndroid Build Coastguard Worker const void* input, 2737*4bdc9457SAndroid Build Coastguard Worker void* output, 2738*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2739*4bdc9457SAndroid Build Coastguard Worker 2740*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_square_root_nc_f16( 2741*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2742*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2743*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2744*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2745*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sqrt_op_out); 2746*4bdc9457SAndroid Build Coastguard Worker 2747*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_square_root_nc_f16( 2748*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sqrt_op, 2749*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2750*4bdc9457SAndroid Build Coastguard Worker const void* input, 2751*4bdc9457SAndroid Build Coastguard Worker void* output, 2752*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2753*4bdc9457SAndroid Build Coastguard Worker 2754*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_squared_difference_nd_f16( 2755*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2756*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* squared_difference_op_out); 2757*4bdc9457SAndroid Build Coastguard Worker 2758*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_squared_difference_nd_f16( 2759*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t squared_difference_op, 2760*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2761*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2762*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2763*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2764*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2765*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2766*4bdc9457SAndroid Build Coastguard Worker void* output, 2767*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2768*4bdc9457SAndroid Build Coastguard Worker 2769*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_subtract_nd_f16( 2770*4bdc9457SAndroid Build Coastguard Worker float output_min, 2771*4bdc9457SAndroid Build Coastguard Worker float output_max, 2772*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2773*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* subtract_op_out); 2774*4bdc9457SAndroid Build Coastguard Worker 2775*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_subtract_nd_f16( 2776*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t subtract_op, 2777*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2778*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2779*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2780*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2781*4bdc9457SAndroid Build Coastguard Worker const void* input1, 2782*4bdc9457SAndroid Build Coastguard Worker const void* input2, 2783*4bdc9457SAndroid Build Coastguard Worker void* output, 2784*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2785*4bdc9457SAndroid Build Coastguard Worker 2786*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_truncation_nc_f16( 2787*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2788*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2789*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2790*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2791*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* truncation_op_out); 2792*4bdc9457SAndroid Build Coastguard Worker 2793*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_truncation_nc_f16( 2794*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t truncation_op, 2795*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2796*4bdc9457SAndroid Build Coastguard Worker const void* input, 2797*4bdc9457SAndroid Build Coastguard Worker void* output, 2798*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2799*4bdc9457SAndroid Build Coastguard Worker 2800*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_F16_OPERATORS 2801*4bdc9457SAndroid Build Coastguard Worker 2802*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_X16_OPERATORS 2803*4bdc9457SAndroid Build Coastguard Worker 2804*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_constant_pad_nd_x16( 2805*4bdc9457SAndroid Build Coastguard Worker const void* padding_value, 2806*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2807*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* constant_pad_op_out); 2808*4bdc9457SAndroid Build Coastguard Worker 2809*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_constant_pad_nd_x16( 2810*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t constant_pad_op, 2811*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 2812*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2813*4bdc9457SAndroid Build Coastguard Worker const size_t* pre_padding, 2814*4bdc9457SAndroid Build Coastguard Worker const size_t* post_padding, 2815*4bdc9457SAndroid Build Coastguard Worker const void* input, 2816*4bdc9457SAndroid Build Coastguard Worker void* output, 2817*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2818*4bdc9457SAndroid Build Coastguard Worker 2819*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_copy_nc_x16( 2820*4bdc9457SAndroid Build Coastguard Worker size_t channels, 2821*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 2822*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 2823*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2824*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* copy_op_out); 2825*4bdc9457SAndroid Build Coastguard Worker 2826*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_copy_nc_x16( 2827*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t copy_op, 2828*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2829*4bdc9457SAndroid Build Coastguard Worker const void* input, 2830*4bdc9457SAndroid Build Coastguard Worker void* output, 2831*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2832*4bdc9457SAndroid Build Coastguard Worker 2833*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_depth_to_space_nhwc_x16( 2834*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 2835*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2836*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2837*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 2838*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2839*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* depth_to_space_op_out); 2840*4bdc9457SAndroid Build Coastguard Worker 2841*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_depth_to_space_nhwc_x16( 2842*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t depth_to_space_op, 2843*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2844*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2845*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2846*4bdc9457SAndroid Build Coastguard Worker const void* input, 2847*4bdc9457SAndroid Build Coastguard Worker void* output, 2848*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2849*4bdc9457SAndroid Build Coastguard Worker 2850*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_space_to_depth_nhwc_x16( 2851*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 2852*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2853*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2854*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 2855*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2856*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* space_to_depth_op_out); 2857*4bdc9457SAndroid Build Coastguard Worker 2858*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_space_to_depth_nhwc_x16( 2859*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t space_to_depth_op, 2860*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2861*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2862*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2863*4bdc9457SAndroid Build Coastguard Worker const void* input, 2864*4bdc9457SAndroid Build Coastguard Worker void* output, 2865*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2866*4bdc9457SAndroid Build Coastguard Worker 2867*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_transpose_nd_x16( 2868*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2869*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* transpose_op_out); 2870*4bdc9457SAndroid Build Coastguard Worker 2871*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_transpose_nd_x16( 2872*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t transpose_op, 2873*4bdc9457SAndroid Build Coastguard Worker const void* input, 2874*4bdc9457SAndroid Build Coastguard Worker void* output, 2875*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 2876*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2877*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 2878*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2879*4bdc9457SAndroid Build Coastguard Worker 2880*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_run_transpose_nd_x16( 2881*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2882*4bdc9457SAndroid Build Coastguard Worker const void* input, 2883*4bdc9457SAndroid Build Coastguard Worker void* output, 2884*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 2885*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 2886*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 2887*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2888*4bdc9457SAndroid Build Coastguard Worker 2889*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_X16_OPERATORS 2890*4bdc9457SAndroid Build Coastguard Worker 2891*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_QC8_OPERATORS 2892*4bdc9457SAndroid Build Coastguard Worker 2893*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nhwc_qc8( 2894*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2895*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2896*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2897*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2898*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 2899*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 2900*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 2901*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 2902*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2903*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2904*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 2905*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 2906*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 2907*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2908*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2909*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 2910*4bdc9457SAndroid Build Coastguard Worker float input_scale, 2911*4bdc9457SAndroid Build Coastguard Worker const float* kernel_scale, 2912*4bdc9457SAndroid Build Coastguard Worker const int8_t* kernel, 2913*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 2914*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 2915*4bdc9457SAndroid Build Coastguard Worker float output_scale, 2916*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 2917*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 2918*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2919*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2920*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 2921*4bdc9457SAndroid Build Coastguard Worker 2922*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nhwc_qc8( 2923*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 2924*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2925*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2926*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2927*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 2928*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 2929*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2930*4bdc9457SAndroid Build Coastguard Worker 2931*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_QC8_OPERATORS 2932*4bdc9457SAndroid Build Coastguard Worker 2933*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_QS8_OPERATORS 2934*4bdc9457SAndroid Build Coastguard Worker 2935*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_add_nd_qs8( 2936*4bdc9457SAndroid Build Coastguard Worker int8_t input1_zero_point, 2937*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 2938*4bdc9457SAndroid Build Coastguard Worker int8_t input2_zero_point, 2939*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 2940*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 2941*4bdc9457SAndroid Build Coastguard Worker float output_scale, 2942*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 2943*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 2944*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2945*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* add_op_out); 2946*4bdc9457SAndroid Build Coastguard Worker 2947*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_add_nd_qs8( 2948*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t add_op, 2949*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 2950*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 2951*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 2952*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 2953*4bdc9457SAndroid Build Coastguard Worker const int8_t* input1, 2954*4bdc9457SAndroid Build Coastguard Worker const int8_t* input2, 2955*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 2956*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2957*4bdc9457SAndroid Build Coastguard Worker 2958*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nhwc_qs8( 2959*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 2960*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 2961*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 2962*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 2963*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 2964*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 2965*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 2966*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 2967*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 2968*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 2969*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 2970*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 2971*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 2972*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 2973*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 2974*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 2975*4bdc9457SAndroid Build Coastguard Worker float input_scale, 2976*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 2977*4bdc9457SAndroid Build Coastguard Worker const int8_t* kernel, 2978*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 2979*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 2980*4bdc9457SAndroid Build Coastguard Worker float output_scale, 2981*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 2982*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 2983*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 2984*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 2985*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 2986*4bdc9457SAndroid Build Coastguard Worker 2987*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nhwc_qs8( 2988*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 2989*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 2990*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 2991*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 2992*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 2993*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 2994*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 2995*4bdc9457SAndroid Build Coastguard Worker 2996*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_deconvolution2d_nhwc_qs8( 2997*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_top, 2998*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_right, 2999*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_bottom, 3000*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_left, 3001*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 3002*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 3003*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 3004*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 3005*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 3006*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 3007*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 3008*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 3009*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 3010*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3011*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3012*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3013*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3014*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 3015*4bdc9457SAndroid Build Coastguard Worker const int8_t* kernel, 3016*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 3017*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3018*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3019*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3020*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3021*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3022*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 3023*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* deconvolution_op_out); 3024*4bdc9457SAndroid Build Coastguard Worker 3025*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_deconvolution2d_nhwc_qs8( 3026*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t deconvolution_op, 3027*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3028*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3029*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3030*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_height, 3031*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_width, 3032*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3033*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3034*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3035*4bdc9457SAndroid Build Coastguard Worker 3036*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_elu_nc_qs8( 3037*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3038*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3039*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3040*4bdc9457SAndroid Build Coastguard Worker float alpha, 3041*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3042*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3043*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3044*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3045*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3046*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3047*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3048*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* elu_op_out); 3049*4bdc9457SAndroid Build Coastguard Worker 3050*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_elu_nc_qs8( 3051*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t elu_op, 3052*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3053*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3054*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3055*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3056*4bdc9457SAndroid Build Coastguard Worker 3057*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_fully_connected_nc_qs8( 3058*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 3059*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 3060*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3061*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3062*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3063*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3064*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 3065*4bdc9457SAndroid Build Coastguard Worker const int8_t* kernel, 3066*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 3067*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3068*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3069*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3070*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3071*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3072*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 3073*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* fully_connected_op_out); 3074*4bdc9457SAndroid Build Coastguard Worker 3075*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_fully_connected_nc_qs8( 3076*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t fully_connected_op, 3077*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3078*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3079*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3080*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3081*4bdc9457SAndroid Build Coastguard Worker 3082*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_global_average_pooling_nwc_qs8( 3083*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3084*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3085*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3086*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3087*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3088*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3089*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3090*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3091*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3092*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3093*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* global_average_pooling_op_out); 3094*4bdc9457SAndroid Build Coastguard Worker 3095*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_global_average_pooling_nwc_qs8( 3096*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t global_average_pooling_op, 3097*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3098*4bdc9457SAndroid Build Coastguard Worker size_t width, 3099*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3100*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3101*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3102*4bdc9457SAndroid Build Coastguard Worker 3103*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_multiply_nd_qs8( 3104*4bdc9457SAndroid Build Coastguard Worker int8_t input1_zero_point, 3105*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 3106*4bdc9457SAndroid Build Coastguard Worker int8_t input2_zero_point, 3107*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 3108*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3109*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3110*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3111*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3112*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3113*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* multiply_op_out); 3114*4bdc9457SAndroid Build Coastguard Worker 3115*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_multiply_nd_qs8( 3116*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t multiply_op, 3117*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 3118*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 3119*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 3120*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 3121*4bdc9457SAndroid Build Coastguard Worker const int8_t* input1, 3122*4bdc9457SAndroid Build Coastguard Worker const int8_t* input2, 3123*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3124*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3125*4bdc9457SAndroid Build Coastguard Worker 3126*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_leaky_relu_nc_qs8( 3127*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3128*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3129*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3130*4bdc9457SAndroid Build Coastguard Worker float negative_slope, 3131*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3132*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3133*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3134*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3135*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3136*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* leaky_relu_op_out); 3137*4bdc9457SAndroid Build Coastguard Worker 3138*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_leaky_relu_nc_qs8( 3139*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t leaky_relu_op, 3140*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3141*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3142*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3143*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3144*4bdc9457SAndroid Build Coastguard Worker 3145*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_sigmoid_nc_qs8( 3146*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3147*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3148*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3149*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3150*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3151*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3152*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3153*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3154*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3155*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3156*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sigmoid_op_out); 3157*4bdc9457SAndroid Build Coastguard Worker 3158*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_sigmoid_nc_qs8( 3159*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sigmoid_op, 3160*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3161*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3162*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3163*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3164*4bdc9457SAndroid Build Coastguard Worker 3165*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_subtract_nd_qs8( 3166*4bdc9457SAndroid Build Coastguard Worker int8_t input1_zero_point, 3167*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 3168*4bdc9457SAndroid Build Coastguard Worker int8_t input2_zero_point, 3169*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 3170*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3171*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3172*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3173*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3174*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3175*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* subtract_op_out); 3176*4bdc9457SAndroid Build Coastguard Worker 3177*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_subtract_nd_qs8( 3178*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t subtract_op, 3179*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 3180*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 3181*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 3182*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 3183*4bdc9457SAndroid Build Coastguard Worker const int8_t* input1, 3184*4bdc9457SAndroid Build Coastguard Worker const int8_t* input2, 3185*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3186*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3187*4bdc9457SAndroid Build Coastguard Worker 3188*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_tanh_nc_qs8( 3189*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3190*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3191*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3192*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3193*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3194*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3195*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3196*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3197*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3198*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3199*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* tanh_op_out); 3200*4bdc9457SAndroid Build Coastguard Worker 3201*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_tanh_nc_qs8( 3202*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t tanh_op, 3203*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3204*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3205*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3206*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3207*4bdc9457SAndroid Build Coastguard Worker 3208*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_QS8_OPERATORS 3209*4bdc9457SAndroid Build Coastguard Worker 3210*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_QU8_OPERATORS 3211*4bdc9457SAndroid Build Coastguard Worker 3212*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_add_nd_qu8( 3213*4bdc9457SAndroid Build Coastguard Worker uint8_t input1_zero_point, 3214*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 3215*4bdc9457SAndroid Build Coastguard Worker uint8_t input2_zero_point, 3216*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 3217*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3218*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3219*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3220*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3221*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3222*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* add_op_out); 3223*4bdc9457SAndroid Build Coastguard Worker 3224*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_add_nd_qu8( 3225*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t add_op, 3226*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 3227*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 3228*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 3229*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 3230*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input1, 3231*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input2, 3232*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3233*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3234*4bdc9457SAndroid Build Coastguard Worker 3235*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_average_pooling2d_nhwc_qu8( 3236*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 3237*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 3238*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 3239*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 3240*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 3241*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 3242*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 3243*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 3244*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3245*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3246*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3247*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3248*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3249*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3250*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3251*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3252*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3253*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3254*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* average_pooling_op_out); 3255*4bdc9457SAndroid Build Coastguard Worker 3256*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_average_pooling2d_nhwc_qu8( 3257*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t average_pooling_op, 3258*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3259*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3260*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3261*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3262*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3263*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3264*4bdc9457SAndroid Build Coastguard Worker 3265*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convolution2d_nhwc_qu8( 3266*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 3267*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 3268*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 3269*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 3270*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 3271*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 3272*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_height, 3273*4bdc9457SAndroid Build Coastguard Worker uint32_t subsampling_width, 3274*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 3275*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 3276*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 3277*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 3278*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 3279*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 3280*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 3281*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3282*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3283*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 3284*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 3285*4bdc9457SAndroid Build Coastguard Worker const uint8_t* kernel, 3286*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 3287*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3288*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3289*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3290*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3291*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3292*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 3293*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convolution_op_out); 3294*4bdc9457SAndroid Build Coastguard Worker 3295*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convolution2d_nhwc_qu8( 3296*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convolution_op, 3297*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3298*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3299*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3300*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3301*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3302*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3303*4bdc9457SAndroid Build Coastguard Worker 3304*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_deconvolution2d_nhwc_qu8( 3305*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_top, 3306*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_right, 3307*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_bottom, 3308*4bdc9457SAndroid Build Coastguard Worker uint32_t output_padding_left, 3309*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_height, 3310*4bdc9457SAndroid Build Coastguard Worker uint32_t kernel_width, 3311*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 3312*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 3313*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 3314*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 3315*4bdc9457SAndroid Build Coastguard Worker uint32_t groups, 3316*4bdc9457SAndroid Build Coastguard Worker size_t group_input_channels, 3317*4bdc9457SAndroid Build Coastguard Worker size_t group_output_channels, 3318*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3319*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3320*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3321*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3322*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 3323*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 3324*4bdc9457SAndroid Build Coastguard Worker const uint8_t* kernel, 3325*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 3326*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3327*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3328*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3329*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3330*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3331*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 3332*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* deconvolution_op_out); 3333*4bdc9457SAndroid Build Coastguard Worker 3334*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_deconvolution2d_nhwc_qu8( 3335*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t deconvolution_op, 3336*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3337*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3338*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3339*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_height, 3340*4bdc9457SAndroid Build Coastguard Worker uint32_t adjustment_width, 3341*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3342*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3343*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3344*4bdc9457SAndroid Build Coastguard Worker 3345*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_fully_connected_nc_qu8( 3346*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 3347*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 3348*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3349*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3350*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3351*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3352*4bdc9457SAndroid Build Coastguard Worker uint8_t kernel_zero_point, 3353*4bdc9457SAndroid Build Coastguard Worker float kernel_scale, 3354*4bdc9457SAndroid Build Coastguard Worker const uint8_t* kernel, 3355*4bdc9457SAndroid Build Coastguard Worker const int32_t* bias, 3356*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3357*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3358*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3359*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3360*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3361*4bdc9457SAndroid Build Coastguard Worker xnn_caches_t caches, 3362*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* fully_connected_op_out); 3363*4bdc9457SAndroid Build Coastguard Worker 3364*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_fully_connected_nc_qu8( 3365*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t fully_connected_op, 3366*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3367*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3368*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3369*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3370*4bdc9457SAndroid Build Coastguard Worker 3371*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_global_average_pooling_nwc_qu8( 3372*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3373*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3374*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3375*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3376*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3377*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3378*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3379*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3380*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3381*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3382*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* global_average_pooling_op_out); 3383*4bdc9457SAndroid Build Coastguard Worker 3384*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_global_average_pooling_nwc_qu8( 3385*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t global_average_pooling_op, 3386*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3387*4bdc9457SAndroid Build Coastguard Worker size_t width, 3388*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3389*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3390*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3391*4bdc9457SAndroid Build Coastguard Worker 3392*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_leaky_relu_nc_qu8( 3393*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3394*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3395*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3396*4bdc9457SAndroid Build Coastguard Worker float negative_slope, 3397*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3398*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3399*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3400*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3401*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3402*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* leaky_relu_op_out); 3403*4bdc9457SAndroid Build Coastguard Worker 3404*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_leaky_relu_nc_qu8( 3405*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t leaky_relu_op, 3406*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3407*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3408*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3409*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3410*4bdc9457SAndroid Build Coastguard Worker 3411*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_multiply_nd_qu8( 3412*4bdc9457SAndroid Build Coastguard Worker uint8_t input1_zero_point, 3413*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 3414*4bdc9457SAndroid Build Coastguard Worker uint8_t input2_zero_point, 3415*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 3416*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3417*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3418*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3419*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3420*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3421*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* multiply_op_out); 3422*4bdc9457SAndroid Build Coastguard Worker 3423*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_multiply_nd_qu8( 3424*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t multiply_op, 3425*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 3426*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 3427*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 3428*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 3429*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input1, 3430*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input2, 3431*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3432*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3433*4bdc9457SAndroid Build Coastguard Worker 3434*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_sigmoid_nc_qu8( 3435*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3436*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3437*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3438*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3439*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3440*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3441*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3442*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3443*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3444*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3445*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* sigmoid_op_out); 3446*4bdc9457SAndroid Build Coastguard Worker 3447*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_sigmoid_nc_qu8( 3448*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t sigmoid_op, 3449*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3450*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3451*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3452*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3453*4bdc9457SAndroid Build Coastguard Worker 3454*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_softmax_nc_qu8( 3455*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3456*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3457*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3458*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3459*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3460*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3461*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3462*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* softmax_op_out); 3463*4bdc9457SAndroid Build Coastguard Worker 3464*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_softmax_nc_qu8( 3465*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t softmax_op, 3466*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3467*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3468*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3469*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3470*4bdc9457SAndroid Build Coastguard Worker 3471*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_subtract_nd_qu8( 3472*4bdc9457SAndroid Build Coastguard Worker uint8_t input1_zero_point, 3473*4bdc9457SAndroid Build Coastguard Worker float input1_scale, 3474*4bdc9457SAndroid Build Coastguard Worker uint8_t input2_zero_point, 3475*4bdc9457SAndroid Build Coastguard Worker float input2_scale, 3476*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3477*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3478*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3479*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3480*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3481*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* subtract_op_out); 3482*4bdc9457SAndroid Build Coastguard Worker 3483*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_subtract_nd_qu8( 3484*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t subtract_op, 3485*4bdc9457SAndroid Build Coastguard Worker size_t num_input1_dims, 3486*4bdc9457SAndroid Build Coastguard Worker const size_t* input1_shape, 3487*4bdc9457SAndroid Build Coastguard Worker size_t num_input2_dims, 3488*4bdc9457SAndroid Build Coastguard Worker const size_t* input2_shape, 3489*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input1, 3490*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input2, 3491*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3492*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3493*4bdc9457SAndroid Build Coastguard Worker 3494*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_tanh_nc_qu8( 3495*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3496*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3497*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3498*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3499*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3500*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3501*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3502*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3503*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3504*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3505*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* tanh_op_out); 3506*4bdc9457SAndroid Build Coastguard Worker 3507*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_tanh_nc_qu8( 3508*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t tanh_op, 3509*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3510*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3511*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3512*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3513*4bdc9457SAndroid Build Coastguard Worker 3514*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_QU8_OPERATORS 3515*4bdc9457SAndroid Build Coastguard Worker 3516*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_S8_OPERATORS 3517*4bdc9457SAndroid Build Coastguard Worker 3518*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_clamp_nc_s8( 3519*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3520*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3521*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3522*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3523*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3524*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3525*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* clamp_op_out); 3526*4bdc9457SAndroid Build Coastguard Worker 3527*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_clamp_nc_s8( 3528*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t clamp_op, 3529*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3530*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3531*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3532*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3533*4bdc9457SAndroid Build Coastguard Worker 3534*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_max_pooling2d_nhwc_s8( 3535*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 3536*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 3537*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 3538*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 3539*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 3540*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 3541*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 3542*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 3543*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 3544*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 3545*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3546*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3547*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3548*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3549*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3550*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3551*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* max_pooling_op_out); 3552*4bdc9457SAndroid Build Coastguard Worker 3553*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_max_pooling2d_nhwc_s8( 3554*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t max_pooling_op, 3555*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3556*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3557*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3558*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3559*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3560*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3561*4bdc9457SAndroid Build Coastguard Worker 3562*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_resize_bilinear2d_nhwc_s8( 3563*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3564*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3565*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3566*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3567*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* resize_op_out); 3568*4bdc9457SAndroid Build Coastguard Worker 3569*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_resize_bilinear2d_nhwc_s8( 3570*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t resize_op, 3571*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3572*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3573*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3574*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 3575*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 3576*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3577*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3578*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3579*4bdc9457SAndroid Build Coastguard Worker 3580*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_S8_OPERATORS 3581*4bdc9457SAndroid Build Coastguard Worker 3582*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_U8_OPERATORS 3583*4bdc9457SAndroid Build Coastguard Worker 3584*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_clamp_nc_u8( 3585*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3586*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3587*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3588*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3589*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3590*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3591*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* clamp_op_out); 3592*4bdc9457SAndroid Build Coastguard Worker 3593*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_clamp_nc_u8( 3594*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t clamp_op, 3595*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3596*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3597*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3598*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3599*4bdc9457SAndroid Build Coastguard Worker 3600*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_max_pooling2d_nhwc_u8( 3601*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_top, 3602*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_right, 3603*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_bottom, 3604*4bdc9457SAndroid Build Coastguard Worker uint32_t input_padding_left, 3605*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_height, 3606*4bdc9457SAndroid Build Coastguard Worker uint32_t pooling_width, 3607*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_height, 3608*4bdc9457SAndroid Build Coastguard Worker uint32_t stride_width, 3609*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_height, 3610*4bdc9457SAndroid Build Coastguard Worker uint32_t dilation_width, 3611*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3612*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3613*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3614*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3615*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3616*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3617*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* max_pooling_op_out); 3618*4bdc9457SAndroid Build Coastguard Worker 3619*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_max_pooling2d_nhwc_u8( 3620*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t max_pooling_op, 3621*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3622*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3623*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3624*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3625*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3626*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3627*4bdc9457SAndroid Build Coastguard Worker 3628*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_resize_bilinear2d_nhwc_u8( 3629*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3630*4bdc9457SAndroid Build Coastguard Worker size_t input_pixel_stride, 3631*4bdc9457SAndroid Build Coastguard Worker size_t output_pixel_stride, 3632*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3633*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* resize_op_out); 3634*4bdc9457SAndroid Build Coastguard Worker 3635*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_resize_bilinear2d_nhwc_u8( 3636*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t resize_op, 3637*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3638*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3639*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3640*4bdc9457SAndroid Build Coastguard Worker size_t output_height, 3641*4bdc9457SAndroid Build Coastguard Worker size_t output_width, 3642*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3643*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3644*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3645*4bdc9457SAndroid Build Coastguard Worker 3646*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_U8_OPERATORS 3647*4bdc9457SAndroid Build Coastguard Worker 3648*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_X8_OPERATORS 3649*4bdc9457SAndroid Build Coastguard Worker 3650*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_copy_nc_x8( 3651*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3652*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3653*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3654*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3655*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* copy_op_out); 3656*4bdc9457SAndroid Build Coastguard Worker 3657*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_copy_nc_x8( 3658*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t copy_op, 3659*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3660*4bdc9457SAndroid Build Coastguard Worker const void* input, 3661*4bdc9457SAndroid Build Coastguard Worker void* output, 3662*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3663*4bdc9457SAndroid Build Coastguard Worker 3664*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_channel_shuffle_nc_x8( 3665*4bdc9457SAndroid Build Coastguard Worker size_t groups, 3666*4bdc9457SAndroid Build Coastguard Worker size_t group_channels, 3667*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3668*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3669*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3670*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* channel_shuffle_op_out); 3671*4bdc9457SAndroid Build Coastguard Worker 3672*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_channel_shuffle_nc_x8( 3673*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t channel_shuffle_op, 3674*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3675*4bdc9457SAndroid Build Coastguard Worker const void* input, 3676*4bdc9457SAndroid Build Coastguard Worker void* output, 3677*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3678*4bdc9457SAndroid Build Coastguard Worker 3679*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_constant_pad_nd_x8( 3680*4bdc9457SAndroid Build Coastguard Worker const void* padding_value, 3681*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3682*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* constant_pad_op_out); 3683*4bdc9457SAndroid Build Coastguard Worker 3684*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_constant_pad_nd_x8( 3685*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t constant_pad_op, 3686*4bdc9457SAndroid Build Coastguard Worker size_t num_dims, 3687*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 3688*4bdc9457SAndroid Build Coastguard Worker const size_t* pre_padding, 3689*4bdc9457SAndroid Build Coastguard Worker const size_t* post_padding, 3690*4bdc9457SAndroid Build Coastguard Worker const void* input, 3691*4bdc9457SAndroid Build Coastguard Worker void* output, 3692*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3693*4bdc9457SAndroid Build Coastguard Worker 3694*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_depth_to_space_nhwc_x8( 3695*4bdc9457SAndroid Build Coastguard Worker size_t output_channels, 3696*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 3697*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 3698*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 3699*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3700*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* depth_to_space_op_out); 3701*4bdc9457SAndroid Build Coastguard Worker 3702*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_depth_to_space_nhwc_x8( 3703*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t depth_to_space_op, 3704*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3705*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3706*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3707*4bdc9457SAndroid Build Coastguard Worker const void* input, 3708*4bdc9457SAndroid Build Coastguard Worker void* output, 3709*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3710*4bdc9457SAndroid Build Coastguard Worker 3711*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_space_to_depth_nhwc_x8( 3712*4bdc9457SAndroid Build Coastguard Worker size_t input_channels, 3713*4bdc9457SAndroid Build Coastguard Worker size_t input_channel_stride, 3714*4bdc9457SAndroid Build Coastguard Worker size_t output_channel_stride, 3715*4bdc9457SAndroid Build Coastguard Worker uint32_t block_size, 3716*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3717*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* space_to_depth_op_out); 3718*4bdc9457SAndroid Build Coastguard Worker 3719*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_space_to_depth_nhwc_x8( 3720*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t space_to_depth_op, 3721*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3722*4bdc9457SAndroid Build Coastguard Worker size_t input_height, 3723*4bdc9457SAndroid Build Coastguard Worker size_t input_width, 3724*4bdc9457SAndroid Build Coastguard Worker const void* input, 3725*4bdc9457SAndroid Build Coastguard Worker void* output, 3726*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3727*4bdc9457SAndroid Build Coastguard Worker 3728*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_transpose_nd_x8( 3729*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3730*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* transpose_op_out); 3731*4bdc9457SAndroid Build Coastguard Worker 3732*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_transpose_nd_x8( 3733*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t transpose_op, 3734*4bdc9457SAndroid Build Coastguard Worker const void* input, 3735*4bdc9457SAndroid Build Coastguard Worker void* output, 3736*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 3737*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 3738*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 3739*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3740*4bdc9457SAndroid Build Coastguard Worker 3741*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_run_transpose_nd_x8( 3742*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3743*4bdc9457SAndroid Build Coastguard Worker const void* input, 3744*4bdc9457SAndroid Build Coastguard Worker void* output, 3745*4bdc9457SAndroid Build Coastguard Worker const size_t num_dims, 3746*4bdc9457SAndroid Build Coastguard Worker const size_t* input_shape, 3747*4bdc9457SAndroid Build Coastguard Worker const size_t* output_perm, 3748*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3749*4bdc9457SAndroid Build Coastguard Worker 3750*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_X8_OPERATORS 3751*4bdc9457SAndroid Build Coastguard Worker 3752*4bdc9457SAndroid Build Coastguard Worker #ifndef XNN_NO_CVT_OPERATORS 3753*4bdc9457SAndroid Build Coastguard Worker 3754*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_f16_f32( 3755*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3756*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3757*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3758*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3759*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3760*4bdc9457SAndroid Build Coastguard Worker 3761*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_f16_f32( 3762*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3763*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3764*4bdc9457SAndroid Build Coastguard Worker const void* input, 3765*4bdc9457SAndroid Build Coastguard Worker float* output, 3766*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3767*4bdc9457SAndroid Build Coastguard Worker 3768*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_f32_f16( 3769*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3770*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3771*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3772*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3773*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3774*4bdc9457SAndroid Build Coastguard Worker 3775*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_f32_f16( 3776*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3777*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3778*4bdc9457SAndroid Build Coastguard Worker const float* input, 3779*4bdc9457SAndroid Build Coastguard Worker void* output, 3780*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3781*4bdc9457SAndroid Build Coastguard Worker 3782*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_f32_qs8( 3783*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3784*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3785*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3786*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3787*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3788*4bdc9457SAndroid Build Coastguard Worker int8_t output_min, 3789*4bdc9457SAndroid Build Coastguard Worker int8_t output_max, 3790*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3791*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3792*4bdc9457SAndroid Build Coastguard Worker 3793*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_f32_qs8( 3794*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3795*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3796*4bdc9457SAndroid Build Coastguard Worker const float* input, 3797*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3798*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3799*4bdc9457SAndroid Build Coastguard Worker 3800*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_f32_qu8( 3801*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3802*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3803*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3804*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3805*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3806*4bdc9457SAndroid Build Coastguard Worker uint8_t output_min, 3807*4bdc9457SAndroid Build Coastguard Worker uint8_t output_max, 3808*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3809*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3810*4bdc9457SAndroid Build Coastguard Worker 3811*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_f32_qu8( 3812*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3813*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3814*4bdc9457SAndroid Build Coastguard Worker const float* input, 3815*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3816*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3817*4bdc9457SAndroid Build Coastguard Worker 3818*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_qs8( 3819*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3820*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3821*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3822*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3823*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3824*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3825*4bdc9457SAndroid Build Coastguard Worker int8_t output_zero_point, 3826*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3827*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3828*4bdc9457SAndroid Build Coastguard Worker 3829*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_qs8( 3830*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3831*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3832*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3833*4bdc9457SAndroid Build Coastguard Worker int8_t* output, 3834*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3835*4bdc9457SAndroid Build Coastguard Worker 3836*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_qs8_f32( 3837*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3838*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3839*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3840*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3841*4bdc9457SAndroid Build Coastguard Worker int8_t input_zero_point, 3842*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3843*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3844*4bdc9457SAndroid Build Coastguard Worker 3845*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_qs8_f32( 3846*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3847*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3848*4bdc9457SAndroid Build Coastguard Worker const int8_t* input, 3849*4bdc9457SAndroid Build Coastguard Worker float* output, 3850*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3851*4bdc9457SAndroid Build Coastguard Worker 3852*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_qu8( 3853*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3854*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3855*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3856*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3857*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3858*4bdc9457SAndroid Build Coastguard Worker float output_scale, 3859*4bdc9457SAndroid Build Coastguard Worker uint8_t output_zero_point, 3860*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3861*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3862*4bdc9457SAndroid Build Coastguard Worker 3863*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_qu8( 3864*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3865*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3866*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3867*4bdc9457SAndroid Build Coastguard Worker uint8_t* output, 3868*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3869*4bdc9457SAndroid Build Coastguard Worker 3870*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_create_convert_nc_qu8_f32( 3871*4bdc9457SAndroid Build Coastguard Worker size_t channels, 3872*4bdc9457SAndroid Build Coastguard Worker size_t input_stride, 3873*4bdc9457SAndroid Build Coastguard Worker size_t output_stride, 3874*4bdc9457SAndroid Build Coastguard Worker float input_scale, 3875*4bdc9457SAndroid Build Coastguard Worker uint8_t input_zero_point, 3876*4bdc9457SAndroid Build Coastguard Worker uint32_t flags, 3877*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t* convert_op_out); 3878*4bdc9457SAndroid Build Coastguard Worker 3879*4bdc9457SAndroid Build Coastguard Worker enum xnn_status xnn_setup_convert_nc_qu8_f32( 3880*4bdc9457SAndroid Build Coastguard Worker xnn_operator_t convert_op, 3881*4bdc9457SAndroid Build Coastguard Worker size_t batch_size, 3882*4bdc9457SAndroid Build Coastguard Worker const uint8_t* input, 3883*4bdc9457SAndroid Build Coastguard Worker float* output, 3884*4bdc9457SAndroid Build Coastguard Worker pthreadpool_t threadpool); 3885*4bdc9457SAndroid Build Coastguard Worker 3886*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_NO_CVT_OPERATORS 3887*4bdc9457SAndroid Build Coastguard Worker 3888*4bdc9457SAndroid Build Coastguard Worker #ifdef __cplusplus 3889*4bdc9457SAndroid Build Coastguard Worker } // extern "C" 3890*4bdc9457SAndroid Build Coastguard Worker #endif 3891