xref: /aosp_15_r20/external/executorch/backends/xnnpack/serialization/schema.fbs (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker// Copyright (c) Meta Platforms, Inc. and affiliates.
2*523fa7a6SAndroid Build Coastguard Worker
3*523fa7a6SAndroid Build Coastguard Workernamespace fb_xnnpack;
4*523fa7a6SAndroid Build Coastguard Worker
5*523fa7a6SAndroid Build Coastguard Worker// Update after any BC breaking changes
6*523fa7a6SAndroid Build Coastguard Workerfile_identifier "XN01";
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Worker// datatype for xnn-values
9*523fa7a6SAndroid Build Coastguard Workerenum XNNDatatype : short {
10*523fa7a6SAndroid Build Coastguard Worker  /// Invalid data type. Valid Values never have this datatype.
11*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_invalid = 0,
12*523fa7a6SAndroid Build Coastguard Worker  /// IEEE754 single-precision floating-point.
13*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_fp32 = 1,
14*523fa7a6SAndroid Build Coastguard Worker  /// IEEE754 half-precision floating-point.
15*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_fp16 = 2,
16*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 8-bit signed integer with shared per-Value quantization parameters.
17*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qint8 = 3,
18*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 8-bit unsigned integer with shared per-Value quantization parameters.
19*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_quint8 = 4,
20*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 32-bit signed integer with shared per-Value quantization parameters.
21*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qint32 = 5,
22*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 8-bit signed integer with shared per-channel quantization parameters.
23*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qcint8 = 6,
24*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 32-bit signed integer with shared per-channel quantization parameters.
25*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qcint32 = 7,
26*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 4-bit signed integer with shared per-channel quantization parameters.
27*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qcint4 = 8,
28*523fa7a6SAndroid Build Coastguard Worker  /// Dynamically quantized 8-bit signed integer with per-batch quantization parameters.
29*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qdint8 = 9,
30*523fa7a6SAndroid Build Coastguard Worker  /// Quantized 4-bit signed integer with shared blockwise quantization parameters.
31*523fa7a6SAndroid Build Coastguard Worker  xnn_datatype_qbint4 = 10,
32*523fa7a6SAndroid Build Coastguard Worker}
33*523fa7a6SAndroid Build Coastguard Worker
34*523fa7a6SAndroid Build Coastguard Worker// type of quantization
35*523fa7a6SAndroid Build Coastguard Workerunion XNNQuantParams {
36*523fa7a6SAndroid Build Coastguard Worker  PerChannelQuant,
37*523fa7a6SAndroid Build Coastguard Worker  PerTensorQuant,
38*523fa7a6SAndroid Build Coastguard Worker  PerTokenDynamicQuant,
39*523fa7a6SAndroid Build Coastguard Worker  PerChannelGroupQuant,
40*523fa7a6SAndroid Build Coastguard Worker}
41*523fa7a6SAndroid Build Coastguard Worker
42*523fa7a6SAndroid Build Coastguard Worker// Deprecated buffer abstraction, const data buffers do not belong in flatbuffer
43*523fa7a6SAndroid Build Coastguard Workertable Buffer {
44*523fa7a6SAndroid Build Coastguard Worker  storage:[ubyte] (deprecated, force_align: 16);
45*523fa7a6SAndroid Build Coastguard Worker}
46*523fa7a6SAndroid Build Coastguard Worker
47*523fa7a6SAndroid Build Coastguard Workertable PerChannelGroupQuant {
48*523fa7a6SAndroid Build Coastguard Worker  scale:[float];
49*523fa7a6SAndroid Build Coastguard Worker  channel_dim:int;
50*523fa7a6SAndroid Build Coastguard Worker  group_size:int;
51*523fa7a6SAndroid Build Coastguard Worker  scale_bf16:[ushort];
52*523fa7a6SAndroid Build Coastguard Worker}
53*523fa7a6SAndroid Build Coastguard Worker
54*523fa7a6SAndroid Build Coastguard Workertable PerChannelQuant {
55*523fa7a6SAndroid Build Coastguard Worker  scale:[float];
56*523fa7a6SAndroid Build Coastguard Worker  channel_dim:int;
57*523fa7a6SAndroid Build Coastguard Worker}
58*523fa7a6SAndroid Build Coastguard Worker
59*523fa7a6SAndroid Build Coastguard Workertable PerTokenDynamicQuant {
60*523fa7a6SAndroid Build Coastguard Worker  num_nonbatch_dims:int;
61*523fa7a6SAndroid Build Coastguard Worker}
62*523fa7a6SAndroid Build Coastguard Worker
63*523fa7a6SAndroid Build Coastguard Workertable PerTensorQuant {
64*523fa7a6SAndroid Build Coastguard Worker  scale:float;
65*523fa7a6SAndroid Build Coastguard Worker  zero_point:int;
66*523fa7a6SAndroid Build Coastguard Worker}
67*523fa7a6SAndroid Build Coastguard Worker
68*523fa7a6SAndroid Build Coastguard Workertable XNNTensorValue {
69*523fa7a6SAndroid Build Coastguard Worker  // type of the tensor elements.
70*523fa7a6SAndroid Build Coastguard Worker  datatype:XNNDatatype;
71*523fa7a6SAndroid Build Coastguard Worker  // number of dimensions in the shape.
72*523fa7a6SAndroid Build Coastguard Worker  num_dims:uint;
73*523fa7a6SAndroid Build Coastguard Worker  // pointer to an array of @a num_dims shape dimensions. If num_dims is 0, this pointer can be NULL.
74*523fa7a6SAndroid Build Coastguard Worker  // XNNPACK does not keep any pointers to this array after the function returns.
75*523fa7a6SAndroid Build Coastguard Worker  dims:[uint];
76*523fa7a6SAndroid Build Coastguard Worker  // Index to the program's constant buffer table, value 0 is reserved to indicate non constant
77*523fa7a6SAndroid Build Coastguard Worker  constant_buffer_idx:uint;
78*523fa7a6SAndroid Build Coastguard Worker  // external ID for the Value. The ID must be within the range of reserved Value IDs specified on
79*523fa7a6SAndroid Build Coastguard Worker  // the Subgraph creation. If the external ID is XNN_INVALID_VALUE_ID, an internal ID will be
80*523fa7a6SAndroid Build Coastguard Worker  // created for the Value.
81*523fa7a6SAndroid Build Coastguard Worker  external_id:uint;
82*523fa7a6SAndroid Build Coastguard Worker  // binary features of the Value. Supported values are any combination of XNN_VALUE_FLAG_EXTERNAL_INPUT
83*523fa7a6SAndroid Build Coastguard Worker  // and XNN_VALUE_FLAG_EXTERNAL_OUTPUT.
84*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
85*523fa7a6SAndroid Build Coastguard Worker  // pointer to the variable that will be initialized with the Value ID upon successful return. If a
86*523fa7a6SAndroid Build Coastguard Worker  // valid @a external_id was provided, the variable will be initialized with the @a external_id value.
87*523fa7a6SAndroid Build Coastguard Worker  id_out:uint;
88*523fa7a6SAndroid Build Coastguard Worker}
89*523fa7a6SAndroid Build Coastguard Worker
90*523fa7a6SAndroid Build Coastguard Workertable XNNQuantizedTensorValue {
91*523fa7a6SAndroid Build Coastguard Worker  // Base Tensor Value
92*523fa7a6SAndroid Build Coastguard Worker  tensor_value:XNNTensorValue;
93*523fa7a6SAndroid Build Coastguard Worker  // Quantization parameters
94*523fa7a6SAndroid Build Coastguard Worker  quant_params:XNNQuantParams;
95*523fa7a6SAndroid Build Coastguard Worker}
96*523fa7a6SAndroid Build Coastguard Worker
97*523fa7a6SAndroid Build Coastguard Workerunion XNodeUnion {
98*523fa7a6SAndroid Build Coastguard Worker  XNNAdd: _XNNNode2x1,
99*523fa7a6SAndroid Build Coastguard Worker  XNNFullyConnected,
100*523fa7a6SAndroid Build Coastguard Worker  XNNSoftmax: _XNNNode1x1,
101*523fa7a6SAndroid Build Coastguard Worker  XNNSigmoid: _XNNNode1x1,
102*523fa7a6SAndroid Build Coastguard Worker  XNNStaticTranspose,
103*523fa7a6SAndroid Build Coastguard Worker  XNNClamp: _XNNNode1x1,
104*523fa7a6SAndroid Build Coastguard Worker  XNNConv2d: _XNNNodeConv,
105*523fa7a6SAndroid Build Coastguard Worker  XNNDiv: _XNNNode2x1,
106*523fa7a6SAndroid Build Coastguard Worker  XNNStaticResizeBilinear2D,
107*523fa7a6SAndroid Build Coastguard Worker  XNNStaticConstantPad,
108*523fa7a6SAndroid Build Coastguard Worker  XNNAvgPooling2d: _XNNPooling2D,
109*523fa7a6SAndroid Build Coastguard Worker  XNNMinimum: _XNNNode2x1,
110*523fa7a6SAndroid Build Coastguard Worker  XNNDepthwiseConv2d: _XNNNodeConv,
111*523fa7a6SAndroid Build Coastguard Worker  XNNMaxPooling2d: _XNNPooling2D,
112*523fa7a6SAndroid Build Coastguard Worker  XNNMultiply: _XNNNode2x1,
113*523fa7a6SAndroid Build Coastguard Worker  XNNSubtract: _XNNNode2x1,
114*523fa7a6SAndroid Build Coastguard Worker  XNNFloor: _XNNNode1x1,
115*523fa7a6SAndroid Build Coastguard Worker  XNNConvert: _XNNNode1x1,
116*523fa7a6SAndroid Build Coastguard Worker  XNNGlobalAvgPooling2d: _XNNNode1x1,
117*523fa7a6SAndroid Build Coastguard Worker  XNNStaticReshape,
118*523fa7a6SAndroid Build Coastguard Worker  XNNArgMaxPooling2d,
119*523fa7a6SAndroid Build Coastguard Worker  XNNSquareRoot: _XNNNode1x1,
120*523fa7a6SAndroid Build Coastguard Worker  XNNCeiling: _XNNNode1x1,
121*523fa7a6SAndroid Build Coastguard Worker  XNNHardswish: _XNNNode1x1,
122*523fa7a6SAndroid Build Coastguard Worker  XNNLeakyReLU,
123*523fa7a6SAndroid Build Coastguard Worker  XNNMaximum: _XNNNode2x1,
124*523fa7a6SAndroid Build Coastguard Worker  XNNNegate: _XNNNode1x1,
125*523fa7a6SAndroid Build Coastguard Worker  XNNSquare: _XNNNode1x1,
126*523fa7a6SAndroid Build Coastguard Worker  XNNELU,
127*523fa7a6SAndroid Build Coastguard Worker  XNNAbs: _XNNNode1x1,
128*523fa7a6SAndroid Build Coastguard Worker  XNNPReLU: _XNNNode2x1,
129*523fa7a6SAndroid Build Coastguard Worker  XNNConcatenate2: _XNNCat,
130*523fa7a6SAndroid Build Coastguard Worker  XNNConcatenate3: _XNNCat,
131*523fa7a6SAndroid Build Coastguard Worker  XNNConcatenate4: _XNNCat,
132*523fa7a6SAndroid Build Coastguard Worker  XNNStaticSlice,
133*523fa7a6SAndroid Build Coastguard Worker  XNNScaledDotProductAttention,
134*523fa7a6SAndroid Build Coastguard Worker  XNNBatchMatrixMultiply: _XNNNode2x1,
135*523fa7a6SAndroid Build Coastguard Worker}
136*523fa7a6SAndroid Build Coastguard Worker
137*523fa7a6SAndroid Build Coastguard Workerunion XValueUnion {
138*523fa7a6SAndroid Build Coastguard Worker  XNNTensorValue,
139*523fa7a6SAndroid Build Coastguard Worker  XNNQuantizedTensorValue,
140*523fa7a6SAndroid Build Coastguard Worker}
141*523fa7a6SAndroid Build Coastguard Worker
142*523fa7a6SAndroid Build Coastguard Workertable OutputMinMax {
143*523fa7a6SAndroid Build Coastguard Worker  output_min:float;
144*523fa7a6SAndroid Build Coastguard Worker  output_max:float;
145*523fa7a6SAndroid Build Coastguard Worker}
146*523fa7a6SAndroid Build Coastguard Worker
147*523fa7a6SAndroid Build Coastguard Workertable XNode {
148*523fa7a6SAndroid Build Coastguard Worker  xnode_union:XNodeUnion;
149*523fa7a6SAndroid Build Coastguard Worker  // An int which can be linked back to the node in the origin graph
150*523fa7a6SAndroid Build Coastguard Worker  debug_handle:uint;
151*523fa7a6SAndroid Build Coastguard Worker  output_min_max:OutputMinMax;
152*523fa7a6SAndroid Build Coastguard Worker}
153*523fa7a6SAndroid Build Coastguard Worker
154*523fa7a6SAndroid Build Coastguard Workertable XValue {
155*523fa7a6SAndroid Build Coastguard Worker  xvalue_union:XValueUnion;
156*523fa7a6SAndroid Build Coastguard Worker}
157*523fa7a6SAndroid Build Coastguard Worker
158*523fa7a6SAndroid Build Coastguard Workertable XNNStaticTranspose {
159*523fa7a6SAndroid Build Coastguard Worker  num_dims:uint;
160*523fa7a6SAndroid Build Coastguard Worker  perm:[uint];
161*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
162*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
163*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
164*523fa7a6SAndroid Build Coastguard Worker}
165*523fa7a6SAndroid Build Coastguard Worker
166*523fa7a6SAndroid Build Coastguard Workertable XNNStaticResizeBilinear2D {
167*523fa7a6SAndroid Build Coastguard Worker  new_height:uint;
168*523fa7a6SAndroid Build Coastguard Worker  new_width:uint;
169*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
170*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
171*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
172*523fa7a6SAndroid Build Coastguard Worker}
173*523fa7a6SAndroid Build Coastguard Worker
174*523fa7a6SAndroid Build Coastguard Workertable XNNStaticConstantPad {
175*523fa7a6SAndroid Build Coastguard Worker  pre_paddings:[uint];
176*523fa7a6SAndroid Build Coastguard Worker  post_paddings:[uint];
177*523fa7a6SAndroid Build Coastguard Worker  padding_value:float;
178*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
179*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
180*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
181*523fa7a6SAndroid Build Coastguard Worker}
182*523fa7a6SAndroid Build Coastguard Worker
183*523fa7a6SAndroid Build Coastguard Worker// A node with two input and one output
184*523fa7a6SAndroid Build Coastguard Worker// Not meant to be used directly
185*523fa7a6SAndroid Build Coastguard Workertable _XNNNode2x1 {
186*523fa7a6SAndroid Build Coastguard Worker  input1_id:uint;
187*523fa7a6SAndroid Build Coastguard Worker  input2_id:uint;
188*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
189*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
190*523fa7a6SAndroid Build Coastguard Worker}
191*523fa7a6SAndroid Build Coastguard Worker
192*523fa7a6SAndroid Build Coastguard Worker// A node with one input and one output
193*523fa7a6SAndroid Build Coastguard Worker// Not meant to be used directly
194*523fa7a6SAndroid Build Coastguard Workertable _XNNNode1x1 {
195*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
196*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
197*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
198*523fa7a6SAndroid Build Coastguard Worker}
199*523fa7a6SAndroid Build Coastguard Worker
200*523fa7a6SAndroid Build Coastguard Workertable _XNNCat {
201*523fa7a6SAndroid Build Coastguard Worker  axis: uint;
202*523fa7a6SAndroid Build Coastguard Worker  input1_id: uint;
203*523fa7a6SAndroid Build Coastguard Worker  input2_id: uint;
204*523fa7a6SAndroid Build Coastguard Worker  input3_id: uint;
205*523fa7a6SAndroid Build Coastguard Worker  input4_id: uint;
206*523fa7a6SAndroid Build Coastguard Worker  output_id: uint;
207*523fa7a6SAndroid Build Coastguard Worker  flags: uint;
208*523fa7a6SAndroid Build Coastguard Worker}
209*523fa7a6SAndroid Build Coastguard Worker
210*523fa7a6SAndroid Build Coastguard Workertable XNNELU {
211*523fa7a6SAndroid Build Coastguard Worker  alpha:float;
212*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
213*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
214*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
215*523fa7a6SAndroid Build Coastguard Worker}
216*523fa7a6SAndroid Build Coastguard Worker
217*523fa7a6SAndroid Build Coastguard Workertable XNNFullyConnected {
218*523fa7a6SAndroid Build Coastguard Worker  input1_id:uint;
219*523fa7a6SAndroid Build Coastguard Worker  filter_id:uint;
220*523fa7a6SAndroid Build Coastguard Worker  bias_id:uint;
221*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
222*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
223*523fa7a6SAndroid Build Coastguard Worker}
224*523fa7a6SAndroid Build Coastguard Worker
225*523fa7a6SAndroid Build Coastguard Workertable _XNNNodeConv {
226*523fa7a6SAndroid Build Coastguard Worker  padding_top:uint;
227*523fa7a6SAndroid Build Coastguard Worker  padding_right:uint;
228*523fa7a6SAndroid Build Coastguard Worker  padding_bottom:uint;
229*523fa7a6SAndroid Build Coastguard Worker  padding_left:uint;
230*523fa7a6SAndroid Build Coastguard Worker  kernel_height:uint;
231*523fa7a6SAndroid Build Coastguard Worker  kernel_width:uint;
232*523fa7a6SAndroid Build Coastguard Worker  subsampling_height:uint;
233*523fa7a6SAndroid Build Coastguard Worker  subsampling_width:uint;
234*523fa7a6SAndroid Build Coastguard Worker  dilation_height:uint;
235*523fa7a6SAndroid Build Coastguard Worker  dilation_width:uint;
236*523fa7a6SAndroid Build Coastguard Worker  group_input_channels:uint;
237*523fa7a6SAndroid Build Coastguard Worker  group_output_channels:uint;
238*523fa7a6SAndroid Build Coastguard Worker  groups:uint;
239*523fa7a6SAndroid Build Coastguard Worker  adjustment_height:uint;
240*523fa7a6SAndroid Build Coastguard Worker  adjustment_width:uint;
241*523fa7a6SAndroid Build Coastguard Worker  input1_id:uint;
242*523fa7a6SAndroid Build Coastguard Worker  filter_id:uint;
243*523fa7a6SAndroid Build Coastguard Worker  bias_id:uint;
244*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
245*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
246*523fa7a6SAndroid Build Coastguard Worker}
247*523fa7a6SAndroid Build Coastguard Worker
248*523fa7a6SAndroid Build Coastguard Workertable _XNNPooling2D {
249*523fa7a6SAndroid Build Coastguard Worker  padding_top: uint;
250*523fa7a6SAndroid Build Coastguard Worker  padding_right: uint;
251*523fa7a6SAndroid Build Coastguard Worker  padding_bottom: uint;
252*523fa7a6SAndroid Build Coastguard Worker  padding_left: uint;
253*523fa7a6SAndroid Build Coastguard Worker  pooling_height: uint;
254*523fa7a6SAndroid Build Coastguard Worker  pooling_width: uint;
255*523fa7a6SAndroid Build Coastguard Worker  stride_height: uint;
256*523fa7a6SAndroid Build Coastguard Worker  stride_width: uint;
257*523fa7a6SAndroid Build Coastguard Worker  dilation_height: uint;
258*523fa7a6SAndroid Build Coastguard Worker  dilation_width: uint;
259*523fa7a6SAndroid Build Coastguard Worker  input_id: uint;
260*523fa7a6SAndroid Build Coastguard Worker  output_id: uint;
261*523fa7a6SAndroid Build Coastguard Worker  flags: uint;
262*523fa7a6SAndroid Build Coastguard Worker}
263*523fa7a6SAndroid Build Coastguard Worker
264*523fa7a6SAndroid Build Coastguard Workertable XNNStaticReshape {
265*523fa7a6SAndroid Build Coastguard Worker  num_dims:uint;
266*523fa7a6SAndroid Build Coastguard Worker  new_shape:[uint];
267*523fa7a6SAndroid Build Coastguard Worker  input_id: uint;
268*523fa7a6SAndroid Build Coastguard Worker  output_id: uint;
269*523fa7a6SAndroid Build Coastguard Worker  flags: uint;
270*523fa7a6SAndroid Build Coastguard Worker}
271*523fa7a6SAndroid Build Coastguard Worker
272*523fa7a6SAndroid Build Coastguard Workertable XNNStaticSlice {
273*523fa7a6SAndroid Build Coastguard Worker  num_dims:uint;
274*523fa7a6SAndroid Build Coastguard Worker  offsets:[uint];
275*523fa7a6SAndroid Build Coastguard Worker  sizes:[uint];
276*523fa7a6SAndroid Build Coastguard Worker  input_id:uint;
277*523fa7a6SAndroid Build Coastguard Worker  output_id:uint;
278*523fa7a6SAndroid Build Coastguard Worker  flags:uint;
279*523fa7a6SAndroid Build Coastguard Worker}
280*523fa7a6SAndroid Build Coastguard Worker
281*523fa7a6SAndroid Build Coastguard Workertable XNNScaledDotProductAttention {
282*523fa7a6SAndroid Build Coastguard Worker    query_id:uint;
283*523fa7a6SAndroid Build Coastguard Worker    key_id:uint;
284*523fa7a6SAndroid Build Coastguard Worker    value_id:uint;
285*523fa7a6SAndroid Build Coastguard Worker    scale_id:uint;
286*523fa7a6SAndroid Build Coastguard Worker    mask_id:uint;
287*523fa7a6SAndroid Build Coastguard Worker    output_id:uint;
288*523fa7a6SAndroid Build Coastguard Worker    flags:uint;
289*523fa7a6SAndroid Build Coastguard Worker}
290*523fa7a6SAndroid Build Coastguard Worker
291*523fa7a6SAndroid Build Coastguard Workertable XNNArgMaxPooling2d {
292*523fa7a6SAndroid Build Coastguard Worker  padding_top: uint;
293*523fa7a6SAndroid Build Coastguard Worker  padding_right: uint;
294*523fa7a6SAndroid Build Coastguard Worker  padding_bottom: uint;
295*523fa7a6SAndroid Build Coastguard Worker  padding_left: uint;
296*523fa7a6SAndroid Build Coastguard Worker  pooling_height: uint;
297*523fa7a6SAndroid Build Coastguard Worker  pooling_width: uint;
298*523fa7a6SAndroid Build Coastguard Worker  input_id: uint;
299*523fa7a6SAndroid Build Coastguard Worker  output_value_id: uint;
300*523fa7a6SAndroid Build Coastguard Worker  output_index_id: uint;
301*523fa7a6SAndroid Build Coastguard Worker  flags: uint;
302*523fa7a6SAndroid Build Coastguard Worker}
303*523fa7a6SAndroid Build Coastguard Worker
304*523fa7a6SAndroid Build Coastguard Workertable XNNLeakyReLU {
305*523fa7a6SAndroid Build Coastguard Worker  negative_slope: float;
306*523fa7a6SAndroid Build Coastguard Worker  input_id: uint;
307*523fa7a6SAndroid Build Coastguard Worker  output_id: uint;
308*523fa7a6SAndroid Build Coastguard Worker  flags: uint;
309*523fa7a6SAndroid Build Coastguard Worker}
310*523fa7a6SAndroid Build Coastguard Worker
311*523fa7a6SAndroid Build Coastguard Worker// Describes data offsets for constant data
312*523fa7a6SAndroid Build Coastguard Workertable ConstantDataOffset {
313*523fa7a6SAndroid Build Coastguard Worker  // Constant data offsets are relative to the constant data base offset provided
314*523fa7a6SAndroid Build Coastguard Worker  // in the XNNPACKHeader.
315*523fa7a6SAndroid Build Coastguard Worker  offset: uint64;
316*523fa7a6SAndroid Build Coastguard Worker
317*523fa7a6SAndroid Build Coastguard Worker  // The size in bytes of valid data starting at the offset. The constant data
318*523fa7a6SAndroid Build Coastguard Worker  // may be followed by padding before the next piece of constant data
319*523fa7a6SAndroid Build Coastguard Worker  size: uint64;
320*523fa7a6SAndroid Build Coastguard Worker}
321*523fa7a6SAndroid Build Coastguard Worker
322*523fa7a6SAndroid Build Coastguard Workertable XNNGraph {
323*523fa7a6SAndroid Build Coastguard Worker  // Schema version.
324*523fa7a6SAndroid Build Coastguard Worker  version:string;
325*523fa7a6SAndroid Build Coastguard Worker  xnodes:[XNode];
326*523fa7a6SAndroid Build Coastguard Worker  xvalues:[XValue];
327*523fa7a6SAndroid Build Coastguard Worker
328*523fa7a6SAndroid Build Coastguard Worker  // Number of external inputs/outputs
329*523fa7a6SAndroid Build Coastguard Worker  num_externs:uint;
330*523fa7a6SAndroid Build Coastguard Worker
331*523fa7a6SAndroid Build Coastguard Worker  // Ids of external inputs
332*523fa7a6SAndroid Build Coastguard Worker  input_ids:[uint];
333*523fa7a6SAndroid Build Coastguard Worker
334*523fa7a6SAndroid Build Coastguard Worker  // Ids of external outputs
335*523fa7a6SAndroid Build Coastguard Worker  output_ids:[uint];
336*523fa7a6SAndroid Build Coastguard Worker
337*523fa7a6SAndroid Build Coastguard Worker  // Deprecated constant buffer storage in flatbuffer
338*523fa7a6SAndroid Build Coastguard Worker  constant_buffer:[Buffer] (deprecated);
339*523fa7a6SAndroid Build Coastguard Worker
340*523fa7a6SAndroid Build Coastguard Worker  // Deprecated memory_buffer size tracking in flatbuffer
341*523fa7a6SAndroid Build Coastguard Worker  mem_buffer_sizes: [uint] (deprecated);
342*523fa7a6SAndroid Build Coastguard Worker
343*523fa7a6SAndroid Build Coastguard Worker  // List of the constant data that follows the XNNGraph in this file. Each constant data is assigned an index into
344*523fa7a6SAndroid Build Coastguard Worker  // the table. 0 index is reserved to be pointed to by non-constant Tensor.
345*523fa7a6SAndroid Build Coastguard Worker  constant_data:[ConstantDataOffset];
346*523fa7a6SAndroid Build Coastguard Worker}
347*523fa7a6SAndroid Build Coastguard Worker
348*523fa7a6SAndroid Build Coastguard Workerroot_type XNNGraph;
349