xref: /aosp_15_r20/external/XNNPACK/include/xnnpack.h (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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