xref: /aosp_15_r20/external/mesa3d/src/gallium/targets/teflon/tflite-schema-v2.15.0.fbs (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
2*61046927SAndroid Build Coastguard Worker//
3*61046927SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*61046927SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*61046927SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*61046927SAndroid Build Coastguard Worker//
7*61046927SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*61046927SAndroid Build Coastguard Worker//
9*61046927SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*61046927SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*61046927SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*61046927SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*61046927SAndroid Build Coastguard Worker// limitations under the License.
14*61046927SAndroid Build Coastguard Worker
15*61046927SAndroid Build Coastguard Worker// Revision History
16*61046927SAndroid Build Coastguard Worker// Version 0: Initial version.
17*61046927SAndroid Build Coastguard Worker// Version 1: Add subgraphs to schema.
18*61046927SAndroid Build Coastguard Worker// Version 2: Rename operators to conform to NN API.
19*61046927SAndroid Build Coastguard Worker// Version 3: Move buffer data from Model.Subgraph.Tensors to Model.Buffers.
20*61046927SAndroid Build Coastguard Worker// Version 3a: Add new builtin op code field. Has backward compatibility with
21*61046927SAndroid Build Coastguard Worker//             version 3.
22*61046927SAndroid Build Coastguard Worker// Version 3b: Rename fields in SignatureDef. Has backward compatibility with
23*61046927SAndroid Build Coastguard Worker//             version 3 and 3a.
24*61046927SAndroid Build Coastguard Worker// Version 3c: Move constant tensor buffers & custom op buffers outside from
25*61046927SAndroid Build Coastguard Worker//             Flatbuffers. Has backward compatibility with version 3, 3a and
26*61046927SAndroid Build Coastguard Worker//             3b.
27*61046927SAndroid Build Coastguard Worker
28*61046927SAndroid Build Coastguard Workernamespace tflite;
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Worker// This corresponds to the version.
31*61046927SAndroid Build Coastguard Workerfile_identifier "TFL3";
32*61046927SAndroid Build Coastguard Worker// File extension of any written files.
33*61046927SAndroid Build Coastguard Workerfile_extension "tflite";
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker// IMPORTANT: All new members of tables, enums and unions must be added at the
36*61046927SAndroid Build Coastguard Worker// end to ensure backwards compatibility.
37*61046927SAndroid Build Coastguard Worker
38*61046927SAndroid Build Coastguard Worker// The type of data stored in a tensor.
39*61046927SAndroid Build Coastguard Workerenum TensorType : byte {
40*61046927SAndroid Build Coastguard Worker  FLOAT32 = 0,
41*61046927SAndroid Build Coastguard Worker  FLOAT16 = 1,
42*61046927SAndroid Build Coastguard Worker  INT32 = 2,
43*61046927SAndroid Build Coastguard Worker  UINT8 = 3,
44*61046927SAndroid Build Coastguard Worker  INT64 = 4,
45*61046927SAndroid Build Coastguard Worker  STRING = 5,
46*61046927SAndroid Build Coastguard Worker  BOOL = 6,
47*61046927SAndroid Build Coastguard Worker  INT16 = 7,
48*61046927SAndroid Build Coastguard Worker  COMPLEX64 = 8,
49*61046927SAndroid Build Coastguard Worker  INT8 = 9,
50*61046927SAndroid Build Coastguard Worker  FLOAT64 = 10,
51*61046927SAndroid Build Coastguard Worker  COMPLEX128 = 11,
52*61046927SAndroid Build Coastguard Worker  UINT64 = 12,
53*61046927SAndroid Build Coastguard Worker  // Experimental: Resource and variant types are experimental, that are subject
54*61046927SAndroid Build Coastguard Worker  // to change. Do not implement custom kernels using resource & variant types
55*61046927SAndroid Build Coastguard Worker  // now.
56*61046927SAndroid Build Coastguard Worker  RESOURCE = 13,
57*61046927SAndroid Build Coastguard Worker  VARIANT = 14,
58*61046927SAndroid Build Coastguard Worker  UINT32 = 15,
59*61046927SAndroid Build Coastguard Worker  UINT16 = 16,
60*61046927SAndroid Build Coastguard Worker  INT4 = 17,
61*61046927SAndroid Build Coastguard Worker}
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Worker// Custom quantization parameters for experimenting with new quantization
64*61046927SAndroid Build Coastguard Worker// techniques.
65*61046927SAndroid Build Coastguard Workertable CustomQuantization {
66*61046927SAndroid Build Coastguard Worker  custom:[ubyte] (force_align: 16);
67*61046927SAndroid Build Coastguard Worker}
68*61046927SAndroid Build Coastguard Worker
69*61046927SAndroid Build Coastguard Worker// Represents a specific quantization technique's parameters.
70*61046927SAndroid Build Coastguard Workerunion QuantizationDetails {
71*61046927SAndroid Build Coastguard Worker  CustomQuantization,
72*61046927SAndroid Build Coastguard Worker}
73*61046927SAndroid Build Coastguard Worker
74*61046927SAndroid Build Coastguard Worker// Parameters for converting a quantized tensor back to float.
75*61046927SAndroid Build Coastguard Workertable QuantizationParameters {
76*61046927SAndroid Build Coastguard Worker  // These four parameters are the asymmetric linear quantization parameters.
77*61046927SAndroid Build Coastguard Worker  // Given a quantized value q, the corresponding float value f should be:
78*61046927SAndroid Build Coastguard Worker  //   f = scale * (q - zero_point)
79*61046927SAndroid Build Coastguard Worker  // For other quantization types, the QuantizationDetails below is used.
80*61046927SAndroid Build Coastguard Worker  min:[float];  // For importing back into tensorflow.
81*61046927SAndroid Build Coastguard Worker  max:[float];  // For importing back into tensorflow.
82*61046927SAndroid Build Coastguard Worker  scale:[float];  // For dequantizing the tensor's values.
83*61046927SAndroid Build Coastguard Worker  zero_point:[long];
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard Worker  // If this is not none, the other quantization parameters (i.e. min, max,
86*61046927SAndroid Build Coastguard Worker  // scale, zero_point fields above) are ignored and the value of the
87*61046927SAndroid Build Coastguard Worker  // QuantizationDetails union should be used.
88*61046927SAndroid Build Coastguard Worker  details:QuantizationDetails;
89*61046927SAndroid Build Coastguard Worker
90*61046927SAndroid Build Coastguard Worker  // Specifies the dimension of the Tensor's shape that the scales and
91*61046927SAndroid Build Coastguard Worker  // zero_points correspond to. For example, a tensor t, with dims=[4, 3, 2, 1]
92*61046927SAndroid Build Coastguard Worker  // with quantization params:
93*61046927SAndroid Build Coastguard Worker  //   scale=[1.0, 2.0, 3.0], zero_point=[1, 2, 3], quantization_dimension=1
94*61046927SAndroid Build Coastguard Worker  // will be quantized across the second dimension of t.
95*61046927SAndroid Build Coastguard Worker  //   t[:, 0, :, :] will have scale[0]=1.0, zero_point[0]=1
96*61046927SAndroid Build Coastguard Worker  //   t[:, 1, :, :] will have scale[1]=2.0, zero_point[0]=2
97*61046927SAndroid Build Coastguard Worker  //   t[:, 2, :, :] will have scale[2]=3.0, zero_point[0]=3
98*61046927SAndroid Build Coastguard Worker  quantized_dimension:int;
99*61046927SAndroid Build Coastguard Worker}
100*61046927SAndroid Build Coastguard Worker
101*61046927SAndroid Build Coastguard Worker// Sparse tensors.
102*61046927SAndroid Build Coastguard Worker// We use a modification of the TACO format.
103*61046927SAndroid Build Coastguard Worker// Reference: http://tensor-compiler.org/kjolstad-oopsla17-tensor-compiler.pdf
104*61046927SAndroid Build Coastguard Worker//
105*61046927SAndroid Build Coastguard Worker// To encode a conceptual n-dimensional dense tensor with dims (d0, ..., dn-1),
106*61046927SAndroid Build Coastguard Worker// potentially with a k-dimensional block (0 <= k <= n) with dims
107*61046927SAndroid Build Coastguard Worker// (dn, ..., dn+k-1), the format needs to specify:
108*61046927SAndroid Build Coastguard Worker//   1. In what order to traverse these dimensions. For example, to store a 2-D
109*61046927SAndroid Build Coastguard Worker//      matrix in row major order, the traversal order would be (d0, d1),
110*61046927SAndroid Build Coastguard Worker//      whereas to store it in column major order, the traversal order would be
111*61046927SAndroid Build Coastguard Worker//      (d1, d0). If the 2-D matrix has a 2-D inner block, the traversal order
112*61046927SAndroid Build Coastguard Worker//      could be (d0, d1, d2, d3).
113*61046927SAndroid Build Coastguard Worker//   2. How each block dimension in (dn, ..., dn+k-1) maps to the original
114*61046927SAndroid Build Coastguard Worker//      tensor dimension in (d0, ..., dn-1).
115*61046927SAndroid Build Coastguard Worker//   3. In the traversal order defined above, the format (dense vs. sparse) and
116*61046927SAndroid Build Coastguard Worker//      index metadata for each dimension. For a dense dimension, this is just
117*61046927SAndroid Build Coastguard Worker//      the size of that dimension. For a sparse dimension, it's the same as
118*61046927SAndroid Build Coastguard Worker//      the compressed index defined in the Compressed Sparse Row (CSR) format.
119*61046927SAndroid Build Coastguard Worker//      (http://scipy-lectures.org/advanced/scipy_sparse/csr_matrix.html)
120*61046927SAndroid Build Coastguard Worker
121*61046927SAndroid Build Coastguard Worker// The storage type for a dimension. Currently we support:
122*61046927SAndroid Build Coastguard Worker//   1. DENSE: each coordinate in this dimension is stored implicitly.
123*61046927SAndroid Build Coastguard Worker//   2. SPARSE_CSR: only the coordinates with non-zero elements are stored. The
124*61046927SAndroid Build Coastguard Worker//      compression technique is the same what CSR uses.
125*61046927SAndroid Build Coastguard Worker// More types like a sparse dimension with a different compression technique
126*61046927SAndroid Build Coastguard Worker// could be added to the list in the future.
127*61046927SAndroid Build Coastguard Workerenum DimensionType : byte {
128*61046927SAndroid Build Coastguard Worker  DENSE = 0,
129*61046927SAndroid Build Coastguard Worker  SPARSE_CSR = 1,
130*61046927SAndroid Build Coastguard Worker}
131*61046927SAndroid Build Coastguard Worker
132*61046927SAndroid Build Coastguard Workertable Int32Vector {
133*61046927SAndroid Build Coastguard Worker  values:[int];
134*61046927SAndroid Build Coastguard Worker}
135*61046927SAndroid Build Coastguard Worker
136*61046927SAndroid Build Coastguard Workertable Uint16Vector {
137*61046927SAndroid Build Coastguard Worker  values:[ushort] (force_align: 4);
138*61046927SAndroid Build Coastguard Worker}
139*61046927SAndroid Build Coastguard Worker
140*61046927SAndroid Build Coastguard Workertable Uint8Vector {
141*61046927SAndroid Build Coastguard Worker  values:[ubyte] (force_align: 4);
142*61046927SAndroid Build Coastguard Worker}
143*61046927SAndroid Build Coastguard Worker
144*61046927SAndroid Build Coastguard Worker// Variable-typed buffer to store the index metadata for a sparse dimension.
145*61046927SAndroid Build Coastguard Worker// The widest type is Int32 instead of UInt32 because tensor's shape is a int32
146*61046927SAndroid Build Coastguard Worker// vector. We don't want the per-dimensional index to overflow that range.
147*61046927SAndroid Build Coastguard Workerunion SparseIndexVector {
148*61046927SAndroid Build Coastguard Worker  Int32Vector,
149*61046927SAndroid Build Coastguard Worker  Uint16Vector,
150*61046927SAndroid Build Coastguard Worker  Uint8Vector
151*61046927SAndroid Build Coastguard Worker}
152*61046927SAndroid Build Coastguard Worker
153*61046927SAndroid Build Coastguard Workertable DimensionMetadata {
154*61046927SAndroid Build Coastguard Worker  // Whether a dimension is dense or sparse.
155*61046927SAndroid Build Coastguard Worker  format:DimensionType;
156*61046927SAndroid Build Coastguard Worker  // Index metadata used for a dimension.
157*61046927SAndroid Build Coastguard Worker  //   - If format is DimensionType.DENSE then we use the dense_size field to
158*61046927SAndroid Build Coastguard Worker  //     store the size of that dimension. Each index in that dimension is
159*61046927SAndroid Build Coastguard Worker  //     stored implicitly.
160*61046927SAndroid Build Coastguard Worker  //   - If format is DimensionType.SPARSE_CSR then we use array_segments and
161*61046927SAndroid Build Coastguard Worker  //     array_indices to encode that dimension. array_segments represents how
162*61046927SAndroid Build Coastguard Worker  //     to segment the indices array, each segment corresponds to one element
163*61046927SAndroid Build Coastguard Worker  //     in the previous dimension. array_indices represents the index of the
164*61046927SAndroid Build Coastguard Worker  //     non-zero elements within this dimension (as those in the CSR matrix
165*61046927SAndroid Build Coastguard Worker  //     format, where the first array is row pointers and the second array is
166*61046927SAndroid Build Coastguard Worker  //     column indices).
167*61046927SAndroid Build Coastguard Worker  dense_size:int;
168*61046927SAndroid Build Coastguard Worker  array_segments:SparseIndexVector;
169*61046927SAndroid Build Coastguard Worker  array_indices:SparseIndexVector;
170*61046927SAndroid Build Coastguard Worker}
171*61046927SAndroid Build Coastguard Worker
172*61046927SAndroid Build Coastguard Worker// Parameters to encode a sparse TfLite tensor.
173*61046927SAndroid Build Coastguard Workertable SparsityParameters {
174*61046927SAndroid Build Coastguard Worker  // The traversal order of the dimensions defined in the `shape` field of the
175*61046927SAndroid Build Coastguard Worker  // conceptual dense tensor. For a n-dimensional tensors with dims (d0, d1,
176*61046927SAndroid Build Coastguard Worker  // ..., dn-1),
177*61046927SAndroid Build Coastguard Worker  //   - if not block sparse, the traversal_order is just a permutation of (d0,
178*61046927SAndroid Build Coastguard Worker  //     ..., dn-1). For example, a 2-D matrix stored in row-major order would
179*61046927SAndroid Build Coastguard Worker  //     have traversal_order = (d0, d1).
180*61046927SAndroid Build Coastguard Worker  //   - if block sparse with a k-dimensional block (0 <= k <= n), the
181*61046927SAndroid Build Coastguard Worker  //     traversal_order has n + k elements. The first n elements are still a
182*61046927SAndroid Build Coastguard Worker  //     permutation of (d0, ..., dn-1). The lask k elements are a permutation
183*61046927SAndroid Build Coastguard Worker  //     of (dn, ..., dn+k-1), defining how to traverse a block internally. For
184*61046927SAndroid Build Coastguard Worker  //     example, a 2-D matrix with 2-D blocks, both stored in row-major order
185*61046927SAndroid Build Coastguard Worker  //     would have traversal_order = (d0, d1, d2, d3).
186*61046927SAndroid Build Coastguard Worker  traversal_order:[int];
187*61046927SAndroid Build Coastguard Worker  // For an n-dimensional tensor with a k-dimensional block (0 <= k <= n),
188*61046927SAndroid Build Coastguard Worker  // stores how a block dimension in (dn, ..., dn+k-1) maps to the original
189*61046927SAndroid Build Coastguard Worker  // tensor dimension in (d0, ..., dn).
190*61046927SAndroid Build Coastguard Worker  // It's stored in the order of (dn, ..., dn+k-1).
191*61046927SAndroid Build Coastguard Worker  // If not block-sparse, this field is NULL.
192*61046927SAndroid Build Coastguard Worker  block_map:[int];
193*61046927SAndroid Build Coastguard Worker  // In the traversal order defined above, the metadata needed for
194*61046927SAndroid Build Coastguard Worker  // each dimension to locate the non-zero values in the original dense tensor.
195*61046927SAndroid Build Coastguard Worker  // The size of the dim_metadata array = the size of the traversal_order array
196*61046927SAndroid Build Coastguard Worker  // = n + k.
197*61046927SAndroid Build Coastguard Worker  dim_metadata:[DimensionMetadata];
198*61046927SAndroid Build Coastguard Worker}
199*61046927SAndroid Build Coastguard Worker
200*61046927SAndroid Build Coastguard Worker// The nested tensor type for VARIANT type.
201*61046927SAndroid Build Coastguard Workertable VariantSubType {
202*61046927SAndroid Build Coastguard Worker  // The tensor shape.
203*61046927SAndroid Build Coastguard Worker  shape:[int];
204*61046927SAndroid Build Coastguard Worker  type:TensorType;
205*61046927SAndroid Build Coastguard Worker  // If false, the rank or the number of tensor dimensions is unknown.
206*61046927SAndroid Build Coastguard Worker  // If false, "shape" must be [].
207*61046927SAndroid Build Coastguard Worker  has_rank: bool = false;
208*61046927SAndroid Build Coastguard Worker}
209*61046927SAndroid Build Coastguard Worker
210*61046927SAndroid Build Coastguard Workertable Tensor {
211*61046927SAndroid Build Coastguard Worker  // The tensor shape. The meaning of each entry is operator-specific but
212*61046927SAndroid Build Coastguard Worker  // builtin ops use: [batch size, height, width, number of channels] (That's
213*61046927SAndroid Build Coastguard Worker  // Tensorflow's NHWC).
214*61046927SAndroid Build Coastguard Worker  shape:[int];
215*61046927SAndroid Build Coastguard Worker  type:TensorType;
216*61046927SAndroid Build Coastguard Worker  // An index that refers to the buffers table at the root of the model. Or,
217*61046927SAndroid Build Coastguard Worker  // if there is no data buffer associated (i.e. intermediate results), then
218*61046927SAndroid Build Coastguard Worker  // this is 0 (which refers to an always existent empty buffer).
219*61046927SAndroid Build Coastguard Worker  //
220*61046927SAndroid Build Coastguard Worker  // The data_buffer itself is an opaque container, with the assumption that the
221*61046927SAndroid Build Coastguard Worker  // target device is little-endian. In addition, all builtin operators assume
222*61046927SAndroid Build Coastguard Worker  // the memory is ordered such that if `shape` is [4, 3, 2], then index
223*61046927SAndroid Build Coastguard Worker  // [i, j, k] maps to data_buffer[i*3*2 + j*2 + k].
224*61046927SAndroid Build Coastguard Worker  buffer:uint;
225*61046927SAndroid Build Coastguard Worker  name:string;  // For debugging and importing back into tensorflow.
226*61046927SAndroid Build Coastguard Worker  quantization:QuantizationParameters;  // Optional.
227*61046927SAndroid Build Coastguard Worker
228*61046927SAndroid Build Coastguard Worker  is_variable:bool = false;
229*61046927SAndroid Build Coastguard Worker
230*61046927SAndroid Build Coastguard Worker  // Parameters to encode a sparse tensor. See the example in
231*61046927SAndroid Build Coastguard Worker  // tensorflow/lite/testdata/sparse_tensor.json.
232*61046927SAndroid Build Coastguard Worker  sparsity:SparsityParameters;  // Optional.
233*61046927SAndroid Build Coastguard Worker
234*61046927SAndroid Build Coastguard Worker  // Encodes `shape` with unknown dimensions. Unknown dimensions are
235*61046927SAndroid Build Coastguard Worker  // represented with -1.
236*61046927SAndroid Build Coastguard Worker  shape_signature:[int]; // Optional.
237*61046927SAndroid Build Coastguard Worker
238*61046927SAndroid Build Coastguard Worker  // This field is added to distinguish between scalars and tensors of unknown
239*61046927SAndroid Build Coastguard Worker  // ranks (both of which shape is []).
240*61046927SAndroid Build Coastguard Worker  // For scalars (rank = 0), shape = [] and has_rank = true.
241*61046927SAndroid Build Coastguard Worker  // For tensors with known rank (rank > 0) and shape, shape = [...] and
242*61046927SAndroid Build Coastguard Worker  // has_rank = true.
243*61046927SAndroid Build Coastguard Worker  // For tensors with unknown rank and shape, shape = [] and has_rank = false.
244*61046927SAndroid Build Coastguard Worker  has_rank: bool = false;
245*61046927SAndroid Build Coastguard Worker
246*61046927SAndroid Build Coastguard Worker  // The nested Tensor types for VARIANT type. This is always empty for
247*61046927SAndroid Build Coastguard Worker  // non-VARIANT types. This is optional because the nested type can be omitted.
248*61046927SAndroid Build Coastguard Worker  // Currently only 1 subtype is supported. The field is defined as an array for
249*61046927SAndroid Build Coastguard Worker  // flexibility of supporting multiple subtypes in the future.
250*61046927SAndroid Build Coastguard Worker  variant_tensors:[VariantSubType];
251*61046927SAndroid Build Coastguard Worker}
252*61046927SAndroid Build Coastguard Worker
253*61046927SAndroid Build Coastguard Worker// A list of builtin operators. Builtin operators are slightly faster than custom
254*61046927SAndroid Build Coastguard Worker// ones, but not by much. Moreover, while custom operators accept an opaque
255*61046927SAndroid Build Coastguard Worker// object containing configuration parameters, builtins have a predetermined
256*61046927SAndroid Build Coastguard Worker// set of acceptable options.
257*61046927SAndroid Build Coastguard Worker// LINT.IfChange
258*61046927SAndroid Build Coastguard Workerenum BuiltinOperator : int32 {
259*61046927SAndroid Build Coastguard Worker  ADD = 0,
260*61046927SAndroid Build Coastguard Worker  AVERAGE_POOL_2D = 1,
261*61046927SAndroid Build Coastguard Worker  CONCATENATION = 2,
262*61046927SAndroid Build Coastguard Worker  CONV_2D = 3,
263*61046927SAndroid Build Coastguard Worker  DEPTHWISE_CONV_2D = 4,
264*61046927SAndroid Build Coastguard Worker  DEPTH_TO_SPACE = 5,
265*61046927SAndroid Build Coastguard Worker  DEQUANTIZE = 6,
266*61046927SAndroid Build Coastguard Worker  EMBEDDING_LOOKUP = 7,
267*61046927SAndroid Build Coastguard Worker  FLOOR = 8,
268*61046927SAndroid Build Coastguard Worker  FULLY_CONNECTED = 9,
269*61046927SAndroid Build Coastguard Worker  HASHTABLE_LOOKUP = 10,
270*61046927SAndroid Build Coastguard Worker  L2_NORMALIZATION = 11,
271*61046927SAndroid Build Coastguard Worker  L2_POOL_2D = 12,
272*61046927SAndroid Build Coastguard Worker  LOCAL_RESPONSE_NORMALIZATION = 13,
273*61046927SAndroid Build Coastguard Worker  LOGISTIC = 14,
274*61046927SAndroid Build Coastguard Worker  LSH_PROJECTION = 15,
275*61046927SAndroid Build Coastguard Worker  LSTM = 16,
276*61046927SAndroid Build Coastguard Worker  MAX_POOL_2D = 17,
277*61046927SAndroid Build Coastguard Worker  MUL = 18,
278*61046927SAndroid Build Coastguard Worker  RELU = 19,
279*61046927SAndroid Build Coastguard Worker  // NOTE(aselle): RELU_N1_TO_1 used to be called RELU1, but it was renamed
280*61046927SAndroid Build Coastguard Worker  // since different model developers use RELU1 in different ways. Never
281*61046927SAndroid Build Coastguard Worker  // create another op called RELU1.
282*61046927SAndroid Build Coastguard Worker  RELU_N1_TO_1 = 20,
283*61046927SAndroid Build Coastguard Worker  RELU6 = 21,
284*61046927SAndroid Build Coastguard Worker  RESHAPE = 22,
285*61046927SAndroid Build Coastguard Worker  RESIZE_BILINEAR = 23,
286*61046927SAndroid Build Coastguard Worker  RNN = 24,
287*61046927SAndroid Build Coastguard Worker  SOFTMAX = 25,
288*61046927SAndroid Build Coastguard Worker  SPACE_TO_DEPTH = 26,
289*61046927SAndroid Build Coastguard Worker  SVDF = 27,
290*61046927SAndroid Build Coastguard Worker  TANH = 28,
291*61046927SAndroid Build Coastguard Worker  CONCAT_EMBEDDINGS = 29,
292*61046927SAndroid Build Coastguard Worker  SKIP_GRAM = 30,
293*61046927SAndroid Build Coastguard Worker  CALL = 31,
294*61046927SAndroid Build Coastguard Worker  CUSTOM = 32,
295*61046927SAndroid Build Coastguard Worker  EMBEDDING_LOOKUP_SPARSE = 33,
296*61046927SAndroid Build Coastguard Worker  PAD = 34,
297*61046927SAndroid Build Coastguard Worker  UNIDIRECTIONAL_SEQUENCE_RNN = 35,
298*61046927SAndroid Build Coastguard Worker  GATHER = 36,
299*61046927SAndroid Build Coastguard Worker  BATCH_TO_SPACE_ND = 37,
300*61046927SAndroid Build Coastguard Worker  SPACE_TO_BATCH_ND = 38,
301*61046927SAndroid Build Coastguard Worker  TRANSPOSE = 39,
302*61046927SAndroid Build Coastguard Worker  MEAN = 40,
303*61046927SAndroid Build Coastguard Worker  SUB = 41,
304*61046927SAndroid Build Coastguard Worker  DIV = 42,
305*61046927SAndroid Build Coastguard Worker  SQUEEZE = 43,
306*61046927SAndroid Build Coastguard Worker  UNIDIRECTIONAL_SEQUENCE_LSTM = 44,
307*61046927SAndroid Build Coastguard Worker  STRIDED_SLICE = 45,
308*61046927SAndroid Build Coastguard Worker  BIDIRECTIONAL_SEQUENCE_RNN = 46,
309*61046927SAndroid Build Coastguard Worker  EXP = 47,
310*61046927SAndroid Build Coastguard Worker  TOPK_V2 = 48,
311*61046927SAndroid Build Coastguard Worker  SPLIT = 49,
312*61046927SAndroid Build Coastguard Worker  LOG_SOFTMAX = 50,
313*61046927SAndroid Build Coastguard Worker  // DELEGATE is a special op type for the operations which are delegated to
314*61046927SAndroid Build Coastguard Worker  // other backends.
315*61046927SAndroid Build Coastguard Worker  // WARNING: Experimental interface, subject to change
316*61046927SAndroid Build Coastguard Worker  DELEGATE = 51,
317*61046927SAndroid Build Coastguard Worker  BIDIRECTIONAL_SEQUENCE_LSTM = 52,
318*61046927SAndroid Build Coastguard Worker  CAST = 53,
319*61046927SAndroid Build Coastguard Worker  PRELU = 54,
320*61046927SAndroid Build Coastguard Worker  MAXIMUM = 55,
321*61046927SAndroid Build Coastguard Worker  ARG_MAX = 56,
322*61046927SAndroid Build Coastguard Worker  MINIMUM = 57,
323*61046927SAndroid Build Coastguard Worker  LESS = 58,
324*61046927SAndroid Build Coastguard Worker  NEG = 59,
325*61046927SAndroid Build Coastguard Worker  PADV2 = 60,
326*61046927SAndroid Build Coastguard Worker  GREATER = 61,
327*61046927SAndroid Build Coastguard Worker  GREATER_EQUAL = 62,
328*61046927SAndroid Build Coastguard Worker  LESS_EQUAL = 63,
329*61046927SAndroid Build Coastguard Worker  SELECT = 64,
330*61046927SAndroid Build Coastguard Worker  SLICE = 65,
331*61046927SAndroid Build Coastguard Worker  SIN = 66,
332*61046927SAndroid Build Coastguard Worker  TRANSPOSE_CONV = 67,
333*61046927SAndroid Build Coastguard Worker  SPARSE_TO_DENSE = 68,
334*61046927SAndroid Build Coastguard Worker  TILE = 69,
335*61046927SAndroid Build Coastguard Worker  EXPAND_DIMS = 70,
336*61046927SAndroid Build Coastguard Worker  EQUAL = 71,
337*61046927SAndroid Build Coastguard Worker  NOT_EQUAL = 72,
338*61046927SAndroid Build Coastguard Worker  LOG = 73,
339*61046927SAndroid Build Coastguard Worker  SUM = 74,
340*61046927SAndroid Build Coastguard Worker  SQRT = 75,
341*61046927SAndroid Build Coastguard Worker  RSQRT = 76,
342*61046927SAndroid Build Coastguard Worker  SHAPE = 77,
343*61046927SAndroid Build Coastguard Worker  POW = 78,
344*61046927SAndroid Build Coastguard Worker  ARG_MIN = 79,
345*61046927SAndroid Build Coastguard Worker  FAKE_QUANT = 80,
346*61046927SAndroid Build Coastguard Worker  REDUCE_PROD = 81,
347*61046927SAndroid Build Coastguard Worker  REDUCE_MAX = 82,
348*61046927SAndroid Build Coastguard Worker  PACK = 83,
349*61046927SAndroid Build Coastguard Worker  LOGICAL_OR = 84,
350*61046927SAndroid Build Coastguard Worker  ONE_HOT = 85,
351*61046927SAndroid Build Coastguard Worker  LOGICAL_AND = 86,
352*61046927SAndroid Build Coastguard Worker  LOGICAL_NOT = 87,
353*61046927SAndroid Build Coastguard Worker  UNPACK = 88,
354*61046927SAndroid Build Coastguard Worker  REDUCE_MIN = 89,
355*61046927SAndroid Build Coastguard Worker  FLOOR_DIV = 90,
356*61046927SAndroid Build Coastguard Worker  REDUCE_ANY = 91,
357*61046927SAndroid Build Coastguard Worker  SQUARE = 92,
358*61046927SAndroid Build Coastguard Worker  ZEROS_LIKE = 93,
359*61046927SAndroid Build Coastguard Worker  FILL = 94,
360*61046927SAndroid Build Coastguard Worker  FLOOR_MOD = 95,
361*61046927SAndroid Build Coastguard Worker  RANGE = 96,
362*61046927SAndroid Build Coastguard Worker  RESIZE_NEAREST_NEIGHBOR = 97,
363*61046927SAndroid Build Coastguard Worker  LEAKY_RELU = 98,
364*61046927SAndroid Build Coastguard Worker  SQUARED_DIFFERENCE = 99,
365*61046927SAndroid Build Coastguard Worker  MIRROR_PAD = 100,
366*61046927SAndroid Build Coastguard Worker  ABS = 101,
367*61046927SAndroid Build Coastguard Worker  SPLIT_V = 102,
368*61046927SAndroid Build Coastguard Worker  UNIQUE = 103,
369*61046927SAndroid Build Coastguard Worker  CEIL = 104,
370*61046927SAndroid Build Coastguard Worker  REVERSE_V2 = 105,
371*61046927SAndroid Build Coastguard Worker  ADD_N = 106,
372*61046927SAndroid Build Coastguard Worker  GATHER_ND = 107,
373*61046927SAndroid Build Coastguard Worker  COS = 108,
374*61046927SAndroid Build Coastguard Worker  WHERE = 109,
375*61046927SAndroid Build Coastguard Worker  RANK = 110,
376*61046927SAndroid Build Coastguard Worker  ELU = 111,
377*61046927SAndroid Build Coastguard Worker  REVERSE_SEQUENCE = 112,
378*61046927SAndroid Build Coastguard Worker  MATRIX_DIAG = 113,
379*61046927SAndroid Build Coastguard Worker  QUANTIZE = 114,
380*61046927SAndroid Build Coastguard Worker  MATRIX_SET_DIAG = 115,
381*61046927SAndroid Build Coastguard Worker  ROUND = 116,
382*61046927SAndroid Build Coastguard Worker  HARD_SWISH = 117,
383*61046927SAndroid Build Coastguard Worker  IF = 118,
384*61046927SAndroid Build Coastguard Worker  WHILE = 119,
385*61046927SAndroid Build Coastguard Worker  NON_MAX_SUPPRESSION_V4 = 120,
386*61046927SAndroid Build Coastguard Worker  NON_MAX_SUPPRESSION_V5 = 121,
387*61046927SAndroid Build Coastguard Worker  SCATTER_ND = 122,
388*61046927SAndroid Build Coastguard Worker  SELECT_V2 = 123,
389*61046927SAndroid Build Coastguard Worker  DENSIFY = 124,
390*61046927SAndroid Build Coastguard Worker  SEGMENT_SUM = 125,
391*61046927SAndroid Build Coastguard Worker  BATCH_MATMUL = 126,
392*61046927SAndroid Build Coastguard Worker  PLACEHOLDER_FOR_GREATER_OP_CODES = 127,
393*61046927SAndroid Build Coastguard Worker  CUMSUM = 128,
394*61046927SAndroid Build Coastguard Worker  CALL_ONCE = 129,
395*61046927SAndroid Build Coastguard Worker  BROADCAST_TO = 130,
396*61046927SAndroid Build Coastguard Worker  RFFT2D = 131,
397*61046927SAndroid Build Coastguard Worker  CONV_3D = 132,
398*61046927SAndroid Build Coastguard Worker  IMAG=133,
399*61046927SAndroid Build Coastguard Worker  REAL=134,
400*61046927SAndroid Build Coastguard Worker  COMPLEX_ABS=135,
401*61046927SAndroid Build Coastguard Worker  HASHTABLE = 136,
402*61046927SAndroid Build Coastguard Worker  HASHTABLE_FIND = 137,
403*61046927SAndroid Build Coastguard Worker  HASHTABLE_IMPORT = 138,
404*61046927SAndroid Build Coastguard Worker  HASHTABLE_SIZE = 139,
405*61046927SAndroid Build Coastguard Worker  REDUCE_ALL = 140,
406*61046927SAndroid Build Coastguard Worker  CONV_3D_TRANSPOSE = 141,
407*61046927SAndroid Build Coastguard Worker  VAR_HANDLE = 142,
408*61046927SAndroid Build Coastguard Worker  READ_VARIABLE = 143,
409*61046927SAndroid Build Coastguard Worker  ASSIGN_VARIABLE = 144,
410*61046927SAndroid Build Coastguard Worker  BROADCAST_ARGS = 145,
411*61046927SAndroid Build Coastguard Worker  RANDOM_STANDARD_NORMAL = 146,
412*61046927SAndroid Build Coastguard Worker  BUCKETIZE = 147,
413*61046927SAndroid Build Coastguard Worker  RANDOM_UNIFORM = 148,
414*61046927SAndroid Build Coastguard Worker  MULTINOMIAL = 149,
415*61046927SAndroid Build Coastguard Worker  GELU = 150,
416*61046927SAndroid Build Coastguard Worker  DYNAMIC_UPDATE_SLICE = 151,
417*61046927SAndroid Build Coastguard Worker  RELU_0_TO_1 = 152,
418*61046927SAndroid Build Coastguard Worker  UNSORTED_SEGMENT_PROD = 153,
419*61046927SAndroid Build Coastguard Worker  UNSORTED_SEGMENT_MAX = 154,
420*61046927SAndroid Build Coastguard Worker  UNSORTED_SEGMENT_SUM = 155,
421*61046927SAndroid Build Coastguard Worker  ATAN2 = 156,
422*61046927SAndroid Build Coastguard Worker  UNSORTED_SEGMENT_MIN = 157,
423*61046927SAndroid Build Coastguard Worker  SIGN = 158,
424*61046927SAndroid Build Coastguard Worker  BITCAST = 159,
425*61046927SAndroid Build Coastguard Worker  BITWISE_XOR = 160,
426*61046927SAndroid Build Coastguard Worker  RIGHT_SHIFT = 161,
427*61046927SAndroid Build Coastguard Worker  // All Operators start with STABLEHLO_ prefixes are subject to change
428*61046927SAndroid Build Coastguard Worker  // Many of the ops below can not be executed by TFlite runtime
429*61046927SAndroid Build Coastguard Worker  STABLEHLO_LOGISTIC = 162, // WARNING: Do not have runtime support
430*61046927SAndroid Build Coastguard Worker  STABLEHLO_ADD = 163, // WARNING: No runtime support yet
431*61046927SAndroid Build Coastguard Worker  STABLEHLO_DIVIDE = 164, // WARNING: No runtime support yet
432*61046927SAndroid Build Coastguard Worker  STABLEHLO_MULTIPLY = 165, // WARNING: No runtime support yet
433*61046927SAndroid Build Coastguard Worker  STABLEHLO_MAXIMUM = 166, // WARNING: No runtime support yet
434*61046927SAndroid Build Coastguard Worker  STABLEHLO_RESHAPE = 167, // WARNING: No runtime support yet
435*61046927SAndroid Build Coastguard Worker  STABLEHLO_CLAMP = 168, // WARNING: No runtime support
436*61046927SAndroid Build Coastguard Worker  STABLEHLO_CONCATENATE = 169, // WARNING: No runtime support
437*61046927SAndroid Build Coastguard Worker  STABLEHLO_BROADCAST_IN_DIM = 170, // WARNING: No runtime support
438*61046927SAndroid Build Coastguard Worker  STABLEHLO_CONVOLUTION = 171, // WARNING: No runtime support
439*61046927SAndroid Build Coastguard Worker  STABLEHLO_SLICE = 172, // WARNING: No runtime support
440*61046927SAndroid Build Coastguard Worker  STABLEHLO_CUSTOM_CALL = 173, // WARNING: No runtime support
441*61046927SAndroid Build Coastguard Worker  STABLEHLO_REDUCE = 174, // WARNING: No runtime support
442*61046927SAndroid Build Coastguard Worker  STABLEHLO_ABS = 175, // WARNING: No runtime support
443*61046927SAndroid Build Coastguard Worker  STABLEHLO_AND = 176, // WARNING: No runtime support
444*61046927SAndroid Build Coastguard Worker  STABLEHLO_COSINE = 177, // WARNING: No runtime support
445*61046927SAndroid Build Coastguard Worker  STABLEHLO_EXPONENTIAL = 178, // WARNING: No runtime support
446*61046927SAndroid Build Coastguard Worker  STABLEHLO_FLOOR = 179, // WARNING: No runtime support
447*61046927SAndroid Build Coastguard Worker  STABLEHLO_LOG = 180, // WARNING: No runtime support
448*61046927SAndroid Build Coastguard Worker  STABLEHLO_MINIMUM = 181, // WARNING: No runtime support
449*61046927SAndroid Build Coastguard Worker  STABLEHLO_NEGATE = 182, // WARNING: No runtime support
450*61046927SAndroid Build Coastguard Worker  STABLEHLO_OR = 183, // WARNING: No runtime support
451*61046927SAndroid Build Coastguard Worker  STABLEHLO_POWER = 184, // WARNING: No runtime support
452*61046927SAndroid Build Coastguard Worker  STABLEHLO_REMAINDER = 185, // WARNING: No runtime support
453*61046927SAndroid Build Coastguard Worker  STABLEHLO_RSQRT = 186, // WARNING: No runtime support
454*61046927SAndroid Build Coastguard Worker  STABLEHLO_SELECT = 187, // WARNING: No runtime support
455*61046927SAndroid Build Coastguard Worker  STABLEHLO_SUBTRACT = 188, // WARNING: No runtime support
456*61046927SAndroid Build Coastguard Worker  STABLEHLO_TANH = 189, // WARNING: No runtime support
457*61046927SAndroid Build Coastguard Worker  STABLEHLO_SCATTER = 190,
458*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARE = 191, // WARNING: No runtime support
459*61046927SAndroid Build Coastguard Worker  STABLEHLO_CONVERT = 192, // WARNING: No runtime support
460*61046927SAndroid Build Coastguard Worker  STABLEHLO_DYNAMIC_SLICE = 193, // WARNING: No runtime support
461*61046927SAndroid Build Coastguard Worker  STABLEHLO_DYNAMIC_UPDATE_SLICE = 194, // WARNING: No runtime support
462*61046927SAndroid Build Coastguard Worker  STABLEHLO_PAD = 195, // WARNING: No runtime support
463*61046927SAndroid Build Coastguard Worker  STABLEHLO_IOTA = 196, // WARNING: No runtime support
464*61046927SAndroid Build Coastguard Worker  STABLEHLO_DOT_GENERAL = 197, // WARNING: No runtime support
465*61046927SAndroid Build Coastguard Worker  STABLEHLO_REDUCE_WINDOW = 198, // WARNING: No runtime support
466*61046927SAndroid Build Coastguard Worker  STABLEHLO_SORT = 199, // WARNING: No runtime support
467*61046927SAndroid Build Coastguard Worker  STABLEHLO_WHILE = 200, // WARNING: No runtime support
468*61046927SAndroid Build Coastguard Worker  STABLEHLO_GATHER = 201, // WARNING: No runtime support
469*61046927SAndroid Build Coastguard Worker  STABLEHLO_TRANSPOSE = 202, // WARNING: No runtime support
470*61046927SAndroid Build Coastguard Worker  DILATE = 203,
471*61046927SAndroid Build Coastguard Worker  STABLEHLO_RNG_BIT_GENERATOR = 204,
472*61046927SAndroid Build Coastguard Worker  REDUCE_WINDOW = 205,
473*61046927SAndroid Build Coastguard Worker}
474*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(nnapi_linter/linter.proto)
475*61046927SAndroid Build Coastguard Worker
476*61046927SAndroid Build Coastguard Worker// Options for the builtin operators.
477*61046927SAndroid Build Coastguard Workerunion BuiltinOptions {
478*61046927SAndroid Build Coastguard Worker  Conv2DOptions,
479*61046927SAndroid Build Coastguard Worker  DepthwiseConv2DOptions,
480*61046927SAndroid Build Coastguard Worker  ConcatEmbeddingsOptions,
481*61046927SAndroid Build Coastguard Worker  LSHProjectionOptions,
482*61046927SAndroid Build Coastguard Worker  Pool2DOptions,
483*61046927SAndroid Build Coastguard Worker  SVDFOptions,
484*61046927SAndroid Build Coastguard Worker  RNNOptions,
485*61046927SAndroid Build Coastguard Worker  FullyConnectedOptions,
486*61046927SAndroid Build Coastguard Worker  SoftmaxOptions,
487*61046927SAndroid Build Coastguard Worker  ConcatenationOptions,
488*61046927SAndroid Build Coastguard Worker  AddOptions,
489*61046927SAndroid Build Coastguard Worker  L2NormOptions,
490*61046927SAndroid Build Coastguard Worker  LocalResponseNormalizationOptions,
491*61046927SAndroid Build Coastguard Worker  LSTMOptions,
492*61046927SAndroid Build Coastguard Worker  ResizeBilinearOptions,
493*61046927SAndroid Build Coastguard Worker  CallOptions,
494*61046927SAndroid Build Coastguard Worker  ReshapeOptions,
495*61046927SAndroid Build Coastguard Worker  SkipGramOptions,
496*61046927SAndroid Build Coastguard Worker  SpaceToDepthOptions,
497*61046927SAndroid Build Coastguard Worker  EmbeddingLookupSparseOptions,
498*61046927SAndroid Build Coastguard Worker  MulOptions,
499*61046927SAndroid Build Coastguard Worker  PadOptions,
500*61046927SAndroid Build Coastguard Worker  GatherOptions,
501*61046927SAndroid Build Coastguard Worker  BatchToSpaceNDOptions,
502*61046927SAndroid Build Coastguard Worker  SpaceToBatchNDOptions,
503*61046927SAndroid Build Coastguard Worker  TransposeOptions,
504*61046927SAndroid Build Coastguard Worker  ReducerOptions,
505*61046927SAndroid Build Coastguard Worker  SubOptions,
506*61046927SAndroid Build Coastguard Worker  DivOptions,
507*61046927SAndroid Build Coastguard Worker  SqueezeOptions,
508*61046927SAndroid Build Coastguard Worker  SequenceRNNOptions,
509*61046927SAndroid Build Coastguard Worker  StridedSliceOptions,
510*61046927SAndroid Build Coastguard Worker  ExpOptions,
511*61046927SAndroid Build Coastguard Worker  TopKV2Options,
512*61046927SAndroid Build Coastguard Worker  SplitOptions,
513*61046927SAndroid Build Coastguard Worker  LogSoftmaxOptions,
514*61046927SAndroid Build Coastguard Worker  CastOptions,
515*61046927SAndroid Build Coastguard Worker  DequantizeOptions,
516*61046927SAndroid Build Coastguard Worker  MaximumMinimumOptions,
517*61046927SAndroid Build Coastguard Worker  ArgMaxOptions,
518*61046927SAndroid Build Coastguard Worker  LessOptions,
519*61046927SAndroid Build Coastguard Worker  NegOptions,
520*61046927SAndroid Build Coastguard Worker  PadV2Options,
521*61046927SAndroid Build Coastguard Worker  GreaterOptions,
522*61046927SAndroid Build Coastguard Worker  GreaterEqualOptions,
523*61046927SAndroid Build Coastguard Worker  LessEqualOptions,
524*61046927SAndroid Build Coastguard Worker  SelectOptions,
525*61046927SAndroid Build Coastguard Worker  SliceOptions,
526*61046927SAndroid Build Coastguard Worker  TransposeConvOptions,
527*61046927SAndroid Build Coastguard Worker  SparseToDenseOptions,
528*61046927SAndroid Build Coastguard Worker  TileOptions,
529*61046927SAndroid Build Coastguard Worker  ExpandDimsOptions,
530*61046927SAndroid Build Coastguard Worker  EqualOptions,
531*61046927SAndroid Build Coastguard Worker  NotEqualOptions,
532*61046927SAndroid Build Coastguard Worker  ShapeOptions,
533*61046927SAndroid Build Coastguard Worker  PowOptions,
534*61046927SAndroid Build Coastguard Worker  ArgMinOptions,
535*61046927SAndroid Build Coastguard Worker  FakeQuantOptions,
536*61046927SAndroid Build Coastguard Worker  PackOptions,
537*61046927SAndroid Build Coastguard Worker  LogicalOrOptions,
538*61046927SAndroid Build Coastguard Worker  OneHotOptions,
539*61046927SAndroid Build Coastguard Worker  LogicalAndOptions,
540*61046927SAndroid Build Coastguard Worker  LogicalNotOptions,
541*61046927SAndroid Build Coastguard Worker  UnpackOptions,
542*61046927SAndroid Build Coastguard Worker  FloorDivOptions,
543*61046927SAndroid Build Coastguard Worker  SquareOptions,
544*61046927SAndroid Build Coastguard Worker  ZerosLikeOptions,
545*61046927SAndroid Build Coastguard Worker  FillOptions,
546*61046927SAndroid Build Coastguard Worker  BidirectionalSequenceLSTMOptions,
547*61046927SAndroid Build Coastguard Worker  BidirectionalSequenceRNNOptions,
548*61046927SAndroid Build Coastguard Worker  UnidirectionalSequenceLSTMOptions,
549*61046927SAndroid Build Coastguard Worker  FloorModOptions,
550*61046927SAndroid Build Coastguard Worker  RangeOptions,
551*61046927SAndroid Build Coastguard Worker  ResizeNearestNeighborOptions,
552*61046927SAndroid Build Coastguard Worker  LeakyReluOptions,
553*61046927SAndroid Build Coastguard Worker  SquaredDifferenceOptions,
554*61046927SAndroid Build Coastguard Worker  MirrorPadOptions,
555*61046927SAndroid Build Coastguard Worker  AbsOptions,
556*61046927SAndroid Build Coastguard Worker  SplitVOptions,
557*61046927SAndroid Build Coastguard Worker  UniqueOptions,
558*61046927SAndroid Build Coastguard Worker  ReverseV2Options,
559*61046927SAndroid Build Coastguard Worker  AddNOptions,
560*61046927SAndroid Build Coastguard Worker  GatherNdOptions,
561*61046927SAndroid Build Coastguard Worker  CosOptions,
562*61046927SAndroid Build Coastguard Worker  WhereOptions,
563*61046927SAndroid Build Coastguard Worker  RankOptions,
564*61046927SAndroid Build Coastguard Worker  ReverseSequenceOptions,
565*61046927SAndroid Build Coastguard Worker  MatrixDiagOptions,
566*61046927SAndroid Build Coastguard Worker  QuantizeOptions,
567*61046927SAndroid Build Coastguard Worker  MatrixSetDiagOptions,
568*61046927SAndroid Build Coastguard Worker  HardSwishOptions,
569*61046927SAndroid Build Coastguard Worker  IfOptions,
570*61046927SAndroid Build Coastguard Worker  WhileOptions,
571*61046927SAndroid Build Coastguard Worker  DepthToSpaceOptions,
572*61046927SAndroid Build Coastguard Worker  NonMaxSuppressionV4Options,
573*61046927SAndroid Build Coastguard Worker  NonMaxSuppressionV5Options,
574*61046927SAndroid Build Coastguard Worker  ScatterNdOptions,
575*61046927SAndroid Build Coastguard Worker  SelectV2Options,
576*61046927SAndroid Build Coastguard Worker  DensifyOptions,
577*61046927SAndroid Build Coastguard Worker  SegmentSumOptions,
578*61046927SAndroid Build Coastguard Worker  BatchMatMulOptions,
579*61046927SAndroid Build Coastguard Worker  CumsumOptions,
580*61046927SAndroid Build Coastguard Worker  CallOnceOptions,
581*61046927SAndroid Build Coastguard Worker  BroadcastToOptions,
582*61046927SAndroid Build Coastguard Worker  Rfft2dOptions,
583*61046927SAndroid Build Coastguard Worker  Conv3DOptions,
584*61046927SAndroid Build Coastguard Worker  HashtableOptions,
585*61046927SAndroid Build Coastguard Worker  HashtableFindOptions,
586*61046927SAndroid Build Coastguard Worker  HashtableImportOptions,
587*61046927SAndroid Build Coastguard Worker  HashtableSizeOptions,
588*61046927SAndroid Build Coastguard Worker  VarHandleOptions,
589*61046927SAndroid Build Coastguard Worker  ReadVariableOptions,
590*61046927SAndroid Build Coastguard Worker  AssignVariableOptions,
591*61046927SAndroid Build Coastguard Worker  RandomOptions,
592*61046927SAndroid Build Coastguard Worker  BucketizeOptions,
593*61046927SAndroid Build Coastguard Worker  GeluOptions,
594*61046927SAndroid Build Coastguard Worker  DynamicUpdateSliceOptions,
595*61046927SAndroid Build Coastguard Worker  UnsortedSegmentProdOptions,
596*61046927SAndroid Build Coastguard Worker  UnsortedSegmentMaxOptions,
597*61046927SAndroid Build Coastguard Worker  UnsortedSegmentMinOptions,
598*61046927SAndroid Build Coastguard Worker  UnsortedSegmentSumOptions,
599*61046927SAndroid Build Coastguard Worker  ATan2Options,
600*61046927SAndroid Build Coastguard Worker  SignOptions,
601*61046927SAndroid Build Coastguard Worker  BitcastOptions,
602*61046927SAndroid Build Coastguard Worker  BitwiseXorOptions,
603*61046927SAndroid Build Coastguard Worker  RightShiftOptions,
604*61046927SAndroid Build Coastguard Worker  // DO NOT add new options this union, will cause failure in Java api
605*61046927SAndroid Build Coastguard Worker  // generation otherwise
606*61046927SAndroid Build Coastguard Worker  // Add new builtin options into builtin options 2 instead
607*61046927SAndroid Build Coastguard Worker}
608*61046927SAndroid Build Coastguard Worker
609*61046927SAndroid Build Coastguard Workerunion BuiltinOptions2{
610*61046927SAndroid Build Coastguard Worker  StablehloConcatenateOptions,
611*61046927SAndroid Build Coastguard Worker  StablehloBroadcastInDimOptions,
612*61046927SAndroid Build Coastguard Worker  StablehloSliceOptions,
613*61046927SAndroid Build Coastguard Worker  StablehloConvolutionOptions,
614*61046927SAndroid Build Coastguard Worker  StablehloCustomCallOptions,
615*61046927SAndroid Build Coastguard Worker  StablehloReduceOptions,
616*61046927SAndroid Build Coastguard Worker  StablehloScatterOptions,
617*61046927SAndroid Build Coastguard Worker  StablehloCompareOptions,
618*61046927SAndroid Build Coastguard Worker  StablehloDynamicSliceOptions,
619*61046927SAndroid Build Coastguard Worker  StablehloPadOptions,
620*61046927SAndroid Build Coastguard Worker  StablehloIotaOptions,
621*61046927SAndroid Build Coastguard Worker  StablehloDotGeneralOptions,
622*61046927SAndroid Build Coastguard Worker  StablehloReduceWindowOptions,
623*61046927SAndroid Build Coastguard Worker  StablehloSortOptions,
624*61046927SAndroid Build Coastguard Worker  StablehloWhileOptions,
625*61046927SAndroid Build Coastguard Worker  StablehloGatherOptions,
626*61046927SAndroid Build Coastguard Worker  StablehloTransposeOptions,
627*61046927SAndroid Build Coastguard Worker  DilateOptions,
628*61046927SAndroid Build Coastguard Worker  StablehloRngBitGeneratorOptions,
629*61046927SAndroid Build Coastguard Worker  ReduceWindowOptions,
630*61046927SAndroid Build Coastguard Worker}
631*61046927SAndroid Build Coastguard Worker
632*61046927SAndroid Build Coastguard Workertable StablehloGatherOptions{
633*61046927SAndroid Build Coastguard Worker  offset_dims : [long];
634*61046927SAndroid Build Coastguard Worker  collapsed_slice_dims : [long];
635*61046927SAndroid Build Coastguard Worker  start_index_map : [long];
636*61046927SAndroid Build Coastguard Worker  index_vector_dim : long;
637*61046927SAndroid Build Coastguard Worker  slice_sizes : [long];
638*61046927SAndroid Build Coastguard Worker  indices_are_sorted : bool;
639*61046927SAndroid Build Coastguard Worker}
640*61046927SAndroid Build Coastguard Worker
641*61046927SAndroid Build Coastguard Workertable StablehloTransposeOptions{
642*61046927SAndroid Build Coastguard Worker  permutation : [long];
643*61046927SAndroid Build Coastguard Worker}
644*61046927SAndroid Build Coastguard Worker
645*61046927SAndroid Build Coastguard Workerenum StablehloPrecisionConfig : uint {
646*61046927SAndroid Build Coastguard Worker  DEFAULT,
647*61046927SAndroid Build Coastguard Worker  HIGH,
648*61046927SAndroid Build Coastguard Worker  HIGHEST,
649*61046927SAndroid Build Coastguard Worker}
650*61046927SAndroid Build Coastguard Worker
651*61046927SAndroid Build Coastguard Workertable StablehloDotGeneralOptions{
652*61046927SAndroid Build Coastguard Worker  lhs_batching_dimensions : [long];
653*61046927SAndroid Build Coastguard Worker  rhs_batching_dimensions : [long];
654*61046927SAndroid Build Coastguard Worker  lhs_contracting_dimensions : [long];
655*61046927SAndroid Build Coastguard Worker  rhs_contracting_dimensions : [long];
656*61046927SAndroid Build Coastguard Worker  precision_config : [StablehloPrecisionConfig];
657*61046927SAndroid Build Coastguard Worker}
658*61046927SAndroid Build Coastguard Worker
659*61046927SAndroid Build Coastguard Workertable StablehloReduceWindowOptions{
660*61046927SAndroid Build Coastguard Worker  window_dimensions : [long];
661*61046927SAndroid Build Coastguard Worker  window_strides : [long];
662*61046927SAndroid Build Coastguard Worker  base_dilations : [long];
663*61046927SAndroid Build Coastguard Worker  window_dilations : [long];
664*61046927SAndroid Build Coastguard Worker  padding : [long];
665*61046927SAndroid Build Coastguard Worker  body_subgraph_index : int;
666*61046927SAndroid Build Coastguard Worker}
667*61046927SAndroid Build Coastguard Worker
668*61046927SAndroid Build Coastguard Workertable StablehloWhileOptions{
669*61046927SAndroid Build Coastguard Worker  cond_subgraph_index : int;
670*61046927SAndroid Build Coastguard Worker  body_subgraph_index : int;
671*61046927SAndroid Build Coastguard Worker}
672*61046927SAndroid Build Coastguard Worker
673*61046927SAndroid Build Coastguard Workertable StablehloSortOptions{
674*61046927SAndroid Build Coastguard Worker  dimension : long;
675*61046927SAndroid Build Coastguard Worker  is_stable : bool;
676*61046927SAndroid Build Coastguard Worker  comparator_subgraph_index : int;
677*61046927SAndroid Build Coastguard Worker}
678*61046927SAndroid Build Coastguard Worker
679*61046927SAndroid Build Coastguard Workertable StablehloConcatenateOptions {
680*61046927SAndroid Build Coastguard Worker  dimension : long;
681*61046927SAndroid Build Coastguard Worker}
682*61046927SAndroid Build Coastguard Worker
683*61046927SAndroid Build Coastguard Workertable StablehloBroadcastInDimOptions{
684*61046927SAndroid Build Coastguard Worker  broadcast_dimensions : [long];
685*61046927SAndroid Build Coastguard Worker}
686*61046927SAndroid Build Coastguard Worker
687*61046927SAndroid Build Coastguard Workerenum StablehloComparisonDirection : uint {
688*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_EQ,
689*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_NE,
690*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_GE,
691*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_GT,
692*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_LE,
693*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_DIRECTION_LT,
694*61046927SAndroid Build Coastguard Worker
695*61046927SAndroid Build Coastguard Worker}
696*61046927SAndroid Build Coastguard Worker
697*61046927SAndroid Build Coastguard Workerenum StablehloComparisonType : uint {
698*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_TYPE_NOTYPE,
699*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_TYPE_FLOAT,
700*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_TYPE_FLOAT_TOTAL_ORDER,
701*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_TYPE_SIGNED,
702*61046927SAndroid Build Coastguard Worker  STABLEHLO_COMPARISON_TYPE_UNSIGNED,
703*61046927SAndroid Build Coastguard Worker}
704*61046927SAndroid Build Coastguard Worker
705*61046927SAndroid Build Coastguard Workertable StablehloCompareOptions{
706*61046927SAndroid Build Coastguard Worker  comparison_direction : StablehloComparisonDirection;
707*61046927SAndroid Build Coastguard Worker  compare_type : StablehloComparisonType;
708*61046927SAndroid Build Coastguard Worker}
709*61046927SAndroid Build Coastguard Worker
710*61046927SAndroid Build Coastguard Workertable StablehloDynamicSliceOptions{
711*61046927SAndroid Build Coastguard Worker  slice_sizes : [long];
712*61046927SAndroid Build Coastguard Worker}
713*61046927SAndroid Build Coastguard Worker
714*61046927SAndroid Build Coastguard Workertable StablehloPadOptions{
715*61046927SAndroid Build Coastguard Worker  edge_padding_low : [long];
716*61046927SAndroid Build Coastguard Worker  edge_padding_high : [long];
717*61046927SAndroid Build Coastguard Worker  interior_padding : [long];
718*61046927SAndroid Build Coastguard Worker}
719*61046927SAndroid Build Coastguard Worker
720*61046927SAndroid Build Coastguard Workertable StablehloIotaOptions{
721*61046927SAndroid Build Coastguard Worker  iota_dimension : long;
722*61046927SAndroid Build Coastguard Worker}
723*61046927SAndroid Build Coastguard Worker
724*61046927SAndroid Build Coastguard Workertable StablehloCustomCallOptions {
725*61046927SAndroid Build Coastguard Worker  call_target_name : string;
726*61046927SAndroid Build Coastguard Worker  has_side_effect : bool;
727*61046927SAndroid Build Coastguard Worker  backend_config: string;
728*61046927SAndroid Build Coastguard Worker  api_version : int; // will be decprecated
729*61046927SAndroid Build Coastguard Worker  called_computations: [int]; // should point to subgraphs of the computations
730*61046927SAndroid Build Coastguard Worker  custom_attributes : [ubyte];
731*61046927SAndroid Build Coastguard Worker}
732*61046927SAndroid Build Coastguard Worker
733*61046927SAndroid Build Coastguard Workertable StablehloReduceOptions {
734*61046927SAndroid Build Coastguard Worker  dimensions : [long];
735*61046927SAndroid Build Coastguard Worker  body_subgraph_index : int;
736*61046927SAndroid Build Coastguard Worker}
737*61046927SAndroid Build Coastguard Worker
738*61046927SAndroid Build Coastguard Workertable StablehloSliceOptions{
739*61046927SAndroid Build Coastguard Worker  start_indices : [long];
740*61046927SAndroid Build Coastguard Worker  limit_indices : [long];
741*61046927SAndroid Build Coastguard Worker  strides : [long];
742*61046927SAndroid Build Coastguard Worker}
743*61046927SAndroid Build Coastguard Worker
744*61046927SAndroid Build Coastguard Workertable StablehloConvolutionOptions{
745*61046927SAndroid Build Coastguard Worker  window_strides : [long];
746*61046927SAndroid Build Coastguard Worker  padding : [long];
747*61046927SAndroid Build Coastguard Worker  lhs_dilation : [long];
748*61046927SAndroid Build Coastguard Worker  rhs_dilation : [long];
749*61046927SAndroid Build Coastguard Worker  window_reversal : [bool];
750*61046927SAndroid Build Coastguard Worker  input_batch_dimension : long;
751*61046927SAndroid Build Coastguard Worker  input_feature_dimension : long;
752*61046927SAndroid Build Coastguard Worker  input_spatial_dimensions : [long];
753*61046927SAndroid Build Coastguard Worker  kernel_input_feature_dimension : long;
754*61046927SAndroid Build Coastguard Worker  kernel_output_feature_dimension : long;
755*61046927SAndroid Build Coastguard Worker  kernel_spatial_dimensions : [long];
756*61046927SAndroid Build Coastguard Worker  output_batch_dimension : long;
757*61046927SAndroid Build Coastguard Worker  output_feature_dimension : long;
758*61046927SAndroid Build Coastguard Worker  output_spatial_dimensions	: [long];
759*61046927SAndroid Build Coastguard Worker  feature_group_count : long;
760*61046927SAndroid Build Coastguard Worker  batch_group_count : long;
761*61046927SAndroid Build Coastguard Worker  precision_config : [StablehloPrecisionConfig];
762*61046927SAndroid Build Coastguard Worker}
763*61046927SAndroid Build Coastguard Worker
764*61046927SAndroid Build Coastguard Workertable StablehloScatterOptions {
765*61046927SAndroid Build Coastguard Worker  indices_are_sorted: bool;
766*61046927SAndroid Build Coastguard Worker  update_window_dims: [long];
767*61046927SAndroid Build Coastguard Worker  inserted_window_dims: [long];
768*61046927SAndroid Build Coastguard Worker  scatter_dims_to_operand_dims: [long];
769*61046927SAndroid Build Coastguard Worker  index_vector_dim: long;
770*61046927SAndroid Build Coastguard Worker  unique_indices: bool;
771*61046927SAndroid Build Coastguard Worker  update_computation_subgraph_index: int;
772*61046927SAndroid Build Coastguard Worker}
773*61046927SAndroid Build Coastguard Worker
774*61046927SAndroid Build Coastguard Workerenum RngAlgorithm : byte {
775*61046927SAndroid Build Coastguard Worker  // An algorithm auto-selected by the system according to device type.
776*61046927SAndroid Build Coastguard Worker  DEFAULT = 0,
777*61046927SAndroid Build Coastguard Worker  // The Philox algorithm, as described in paper
778*61046927SAndroid Build Coastguard Worker  // ['Parallel Random Numbers: As Easy as 1, 2, 3']
779*61046927SAndroid Build Coastguard Worker  // (https://www.thesalmons.org/john/random123/papers/random123sc11.pdf)
780*61046927SAndroid Build Coastguard Worker  PHILOX = 1,
781*61046927SAndroid Build Coastguard Worker  // The ThreeFry algorithm, as described in paper
782*61046927SAndroid Build Coastguard Worker  // ['Parallel Random Numbers: As Easy as 1, 2, 3']
783*61046927SAndroid Build Coastguard Worker  // (https://www.thesalmons.org/john/random123/papers/random123sc11.pdf)
784*61046927SAndroid Build Coastguard Worker  THREEFRY = 2,
785*61046927SAndroid Build Coastguard Worker}
786*61046927SAndroid Build Coastguard Worker
787*61046927SAndroid Build Coastguard Workertable StablehloRngBitGeneratorOptions {
788*61046927SAndroid Build Coastguard Worker  algorithm:RngAlgorithm;
789*61046927SAndroid Build Coastguard Worker}
790*61046927SAndroid Build Coastguard Worker
791*61046927SAndroid Build Coastguard Worker// LINT.IfChange
792*61046927SAndroid Build Coastguard Workerenum Padding : byte { SAME, VALID }
793*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(//tensorflow/compiler/mlir/lite/ir/tfl_op_enums.td)
794*61046927SAndroid Build Coastguard Worker
795*61046927SAndroid Build Coastguard Worker// LINT.IfChange
796*61046927SAndroid Build Coastguard Workerenum ActivationFunctionType : byte {
797*61046927SAndroid Build Coastguard Worker  NONE = 0,
798*61046927SAndroid Build Coastguard Worker  RELU = 1,
799*61046927SAndroid Build Coastguard Worker  RELU_N1_TO_1 = 2,
800*61046927SAndroid Build Coastguard Worker  RELU6 = 3,
801*61046927SAndroid Build Coastguard Worker  TANH = 4,
802*61046927SAndroid Build Coastguard Worker  SIGN_BIT = 5,
803*61046927SAndroid Build Coastguard Worker}
804*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(//tensorflow/compiler/mlir/lite/ir/tfl_op_enums.td)
805*61046927SAndroid Build Coastguard Worker
806*61046927SAndroid Build Coastguard Workertable Conv2DOptions {
807*61046927SAndroid Build Coastguard Worker  padding:Padding;
808*61046927SAndroid Build Coastguard Worker  stride_w:int;
809*61046927SAndroid Build Coastguard Worker  stride_h:int;
810*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
811*61046927SAndroid Build Coastguard Worker  dilation_w_factor:int = 1;
812*61046927SAndroid Build Coastguard Worker  dilation_h_factor:int = 1;
813*61046927SAndroid Build Coastguard Worker  // Parameters for Conv2D version 8 or above.
814*61046927SAndroid Build Coastguard Worker  // When set, quantized_bias_type defines the dtype for both bias and accumulator.
815*61046927SAndroid Build Coastguard Worker  quantized_bias_type: TensorType;
816*61046927SAndroid Build Coastguard Worker}
817*61046927SAndroid Build Coastguard Worker
818*61046927SAndroid Build Coastguard Worker// Options for both Conv3D and Conv3DTranspose.
819*61046927SAndroid Build Coastguard Workertable Conv3DOptions {
820*61046927SAndroid Build Coastguard Worker  padding:Padding;
821*61046927SAndroid Build Coastguard Worker  stride_d:int;
822*61046927SAndroid Build Coastguard Worker  stride_w:int;
823*61046927SAndroid Build Coastguard Worker  stride_h:int;
824*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
825*61046927SAndroid Build Coastguard Worker  dilation_d_factor:int = 1;
826*61046927SAndroid Build Coastguard Worker  dilation_w_factor:int = 1;
827*61046927SAndroid Build Coastguard Worker  dilation_h_factor:int = 1;
828*61046927SAndroid Build Coastguard Worker}
829*61046927SAndroid Build Coastguard Worker
830*61046927SAndroid Build Coastguard Workertable Pool2DOptions {
831*61046927SAndroid Build Coastguard Worker  padding:Padding;
832*61046927SAndroid Build Coastguard Worker  stride_w:int;
833*61046927SAndroid Build Coastguard Worker  stride_h:int;
834*61046927SAndroid Build Coastguard Worker  filter_width:int;
835*61046927SAndroid Build Coastguard Worker  filter_height:int;
836*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
837*61046927SAndroid Build Coastguard Worker}
838*61046927SAndroid Build Coastguard Worker
839*61046927SAndroid Build Coastguard Workertable DepthwiseConv2DOptions {
840*61046927SAndroid Build Coastguard Worker  // Parameters for DepthwiseConv version 1 or above.
841*61046927SAndroid Build Coastguard Worker  padding:Padding;
842*61046927SAndroid Build Coastguard Worker  stride_w:int;
843*61046927SAndroid Build Coastguard Worker  stride_h:int;
844*61046927SAndroid Build Coastguard Worker  // `depth_multiplier` is redundant. It's used by CPU kernels in
845*61046927SAndroid Build Coastguard Worker  // TensorFlow 2.0 or below, but ignored in versions above.
846*61046927SAndroid Build Coastguard Worker  // See comments in lite/c/builtin_op_data.h for more details.
847*61046927SAndroid Build Coastguard Worker  depth_multiplier:int;
848*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
849*61046927SAndroid Build Coastguard Worker  // Parameters for DepthwiseConv version 2 or above.
850*61046927SAndroid Build Coastguard Worker  dilation_w_factor:int = 1;
851*61046927SAndroid Build Coastguard Worker  dilation_h_factor:int = 1;
852*61046927SAndroid Build Coastguard Worker}
853*61046927SAndroid Build Coastguard Worker
854*61046927SAndroid Build Coastguard Workertable ConcatEmbeddingsOptions {
855*61046927SAndroid Build Coastguard Worker  num_channels:int;
856*61046927SAndroid Build Coastguard Worker  num_columns_per_channel:[int];
857*61046927SAndroid Build Coastguard Worker  embedding_dim_per_channel:[int]; // This could be inferred from parameters.
858*61046927SAndroid Build Coastguard Worker}
859*61046927SAndroid Build Coastguard Worker
860*61046927SAndroid Build Coastguard Workerenum LSHProjectionType: byte {
861*61046927SAndroid Build Coastguard Worker  UNKNOWN = 0,
862*61046927SAndroid Build Coastguard Worker  SPARSE = 1,
863*61046927SAndroid Build Coastguard Worker  DENSE = 2,
864*61046927SAndroid Build Coastguard Worker}
865*61046927SAndroid Build Coastguard Worker
866*61046927SAndroid Build Coastguard Workertable LSHProjectionOptions {
867*61046927SAndroid Build Coastguard Worker  type: LSHProjectionType;
868*61046927SAndroid Build Coastguard Worker}
869*61046927SAndroid Build Coastguard Worker
870*61046927SAndroid Build Coastguard Workertable SVDFOptions {
871*61046927SAndroid Build Coastguard Worker  rank:int;
872*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
873*61046927SAndroid Build Coastguard Worker  // For weights-only quantization, use asymmetric quantization for non
874*61046927SAndroid Build Coastguard Worker  // constant inputs at evaluation time.
875*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
876*61046927SAndroid Build Coastguard Worker}
877*61046927SAndroid Build Coastguard Worker
878*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow RNNCell.
879*61046927SAndroid Build Coastguard Workertable RNNOptions {
880*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
881*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
882*61046927SAndroid Build Coastguard Worker}
883*61046927SAndroid Build Coastguard Worker
884*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow dynamic_rnn with RNNCell.
885*61046927SAndroid Build Coastguard Workertable SequenceRNNOptions {
886*61046927SAndroid Build Coastguard Worker  time_major:bool;
887*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
888*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
889*61046927SAndroid Build Coastguard Worker}
890*61046927SAndroid Build Coastguard Worker
891*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow bidrectional_dynamic_rnn with RNNCell.
892*61046927SAndroid Build Coastguard Workertable BidirectionalSequenceRNNOptions {
893*61046927SAndroid Build Coastguard Worker  time_major:bool;
894*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
895*61046927SAndroid Build Coastguard Worker  merge_outputs: bool;
896*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
897*61046927SAndroid Build Coastguard Worker}
898*61046927SAndroid Build Coastguard Worker
899*61046927SAndroid Build Coastguard Worker// LINT.IfChange
900*61046927SAndroid Build Coastguard Workerenum FullyConnectedOptionsWeightsFormat: byte {
901*61046927SAndroid Build Coastguard Worker  DEFAULT = 0,
902*61046927SAndroid Build Coastguard Worker  SHUFFLED4x16INT8 = 1,
903*61046927SAndroid Build Coastguard Worker}
904*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(//tensorflow/compiler/mlir/lite/ir/tfl_op_enums.td)
905*61046927SAndroid Build Coastguard Worker
906*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow fully_connected (a.k.a Dense) layer.
907*61046927SAndroid Build Coastguard Workertable FullyConnectedOptions {
908*61046927SAndroid Build Coastguard Worker  // Parameters for FullyConnected version 1 or above.
909*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
910*61046927SAndroid Build Coastguard Worker
911*61046927SAndroid Build Coastguard Worker  // Parameters for FullyConnected version 2 or above.
912*61046927SAndroid Build Coastguard Worker  weights_format:FullyConnectedOptionsWeightsFormat = DEFAULT;
913*61046927SAndroid Build Coastguard Worker
914*61046927SAndroid Build Coastguard Worker  // Parameters for FullyConnected version 5 or above.
915*61046927SAndroid Build Coastguard Worker  // If set to true, then the number of dimension is preserved. Furthermore,
916*61046927SAndroid Build Coastguard Worker  // all but the last dimension of the input and output shapes will be equal.
917*61046927SAndroid Build Coastguard Worker  keep_num_dims: bool;
918*61046927SAndroid Build Coastguard Worker
919*61046927SAndroid Build Coastguard Worker  // Parameters for FullyConnected version 7 or above.
920*61046927SAndroid Build Coastguard Worker  // If set to true, then weights-only op will use asymmetric quantization for
921*61046927SAndroid Build Coastguard Worker  // inputs.
922*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs: bool;
923*61046927SAndroid Build Coastguard Worker
924*61046927SAndroid Build Coastguard Worker  // Parameters for FullyConnected version 11 or above.
925*61046927SAndroid Build Coastguard Worker  // When set, quantized_bias_type defines the dtype for both bias and accumulator.
926*61046927SAndroid Build Coastguard Worker  quantized_bias_type: TensorType;
927*61046927SAndroid Build Coastguard Worker}
928*61046927SAndroid Build Coastguard Worker
929*61046927SAndroid Build Coastguard Workertable SoftmaxOptions {
930*61046927SAndroid Build Coastguard Worker  beta: float;
931*61046927SAndroid Build Coastguard Worker}
932*61046927SAndroid Build Coastguard Worker
933*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow concat.
934*61046927SAndroid Build Coastguard Workertable ConcatenationOptions {
935*61046927SAndroid Build Coastguard Worker  axis:int;
936*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
937*61046927SAndroid Build Coastguard Worker}
938*61046927SAndroid Build Coastguard Worker
939*61046927SAndroid Build Coastguard Workertable AddOptions {
940*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
941*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 3.
942*61046927SAndroid Build Coastguard Worker  pot_scale_int16:bool = true;
943*61046927SAndroid Build Coastguard Worker}
944*61046927SAndroid Build Coastguard Worker
945*61046927SAndroid Build Coastguard Workertable MulOptions {
946*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
947*61046927SAndroid Build Coastguard Worker}
948*61046927SAndroid Build Coastguard Worker
949*61046927SAndroid Build Coastguard Workertable L2NormOptions {
950*61046927SAndroid Build Coastguard Worker  // This field is currently ignored in the L2 Norm Op.
951*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
952*61046927SAndroid Build Coastguard Worker}
953*61046927SAndroid Build Coastguard Worker
954*61046927SAndroid Build Coastguard Workertable LocalResponseNormalizationOptions {
955*61046927SAndroid Build Coastguard Worker  radius:int;
956*61046927SAndroid Build Coastguard Worker  bias:float;
957*61046927SAndroid Build Coastguard Worker  alpha:float;
958*61046927SAndroid Build Coastguard Worker  beta:float;
959*61046927SAndroid Build Coastguard Worker}
960*61046927SAndroid Build Coastguard Worker
961*61046927SAndroid Build Coastguard Worker// LINT.IfChange
962*61046927SAndroid Build Coastguard Workerenum LSTMKernelType : byte {
963*61046927SAndroid Build Coastguard Worker  // Full LSTM kernel which supports peephole and projection.
964*61046927SAndroid Build Coastguard Worker  FULL = 0,
965*61046927SAndroid Build Coastguard Worker  // Basic LSTM kernels. Equivalent to TensorFlow BasicLSTMCell.
966*61046927SAndroid Build Coastguard Worker  BASIC = 1,
967*61046927SAndroid Build Coastguard Worker}
968*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(//tensorflow/compiler/mlir/lite/ir/tfl_op_enums.td)
969*61046927SAndroid Build Coastguard Worker
970*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow LSTMCell and CoupledInputForgetGateLSTMCell
971*61046927SAndroid Build Coastguard Workertable LSTMOptions {
972*61046927SAndroid Build Coastguard Worker  // Parameters for LSTM version 1 or above.
973*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
974*61046927SAndroid Build Coastguard Worker  cell_clip: float; // Optional, 0.0 means no clipping
975*61046927SAndroid Build Coastguard Worker  proj_clip: float; // Optional, 0.0 means no clipping
976*61046927SAndroid Build Coastguard Worker
977*61046927SAndroid Build Coastguard Worker  // Parameters for LSTM version 2 or above.
978*61046927SAndroid Build Coastguard Worker  // Basic kernel is only supported in version 2 or above.
979*61046927SAndroid Build Coastguard Worker  kernel_type: LSTMKernelType = FULL;
980*61046927SAndroid Build Coastguard Worker
981*61046927SAndroid Build Coastguard Worker  // Parameters for LSTM version 4 or above.
982*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs: bool;
983*61046927SAndroid Build Coastguard Worker}
984*61046927SAndroid Build Coastguard Worker
985*61046927SAndroid Build Coastguard Worker// An implementation of TensorFlow dynamic_rnn with LSTMCell.
986*61046927SAndroid Build Coastguard Workertable UnidirectionalSequenceLSTMOptions {
987*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
988*61046927SAndroid Build Coastguard Worker  cell_clip: float; // Optional, 0.0 means no clipping
989*61046927SAndroid Build Coastguard Worker  proj_clip: float; // Optional, 0.0 means no clipping
990*61046927SAndroid Build Coastguard Worker
991*61046927SAndroid Build Coastguard Worker  // If true then first dimension is sequence, otherwise batch.
992*61046927SAndroid Build Coastguard Worker  time_major:bool;
993*61046927SAndroid Build Coastguard Worker
994*61046927SAndroid Build Coastguard Worker  // Parameter for Unidirectional Sequence LSTM version 3.
995*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
996*61046927SAndroid Build Coastguard Worker
997*61046927SAndroid Build Coastguard Worker  // Parameter for unidirectional sequence RNN version 4.
998*61046927SAndroid Build Coastguard Worker  diagonal_recurrent_tensors:bool;
999*61046927SAndroid Build Coastguard Worker}
1000*61046927SAndroid Build Coastguard Worker
1001*61046927SAndroid Build Coastguard Workertable BidirectionalSequenceLSTMOptions {
1002*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 1:
1003*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
1004*61046927SAndroid Build Coastguard Worker  cell_clip: float; // Optional, 0.0 means no clipping
1005*61046927SAndroid Build Coastguard Worker  proj_clip: float; // Optional, 0.0 means no clipping
1006*61046927SAndroid Build Coastguard Worker
1007*61046927SAndroid Build Coastguard Worker  // If true, store the outputs of both directions into the first output.
1008*61046927SAndroid Build Coastguard Worker  merge_outputs: bool;
1009*61046927SAndroid Build Coastguard Worker
1010*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 2:
1011*61046927SAndroid Build Coastguard Worker  // If true then first dimension is sequence, otherwise batch.
1012*61046927SAndroid Build Coastguard Worker  // Version 1 implementations assumed time_major to be true, so this default
1013*61046927SAndroid Build Coastguard Worker  // value should never change.
1014*61046927SAndroid Build Coastguard Worker  time_major: bool = true;
1015*61046927SAndroid Build Coastguard Worker
1016*61046927SAndroid Build Coastguard Worker  // Parameters for version 3 or above.
1017*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs:bool;
1018*61046927SAndroid Build Coastguard Worker}
1019*61046927SAndroid Build Coastguard Worker
1020*61046927SAndroid Build Coastguard Workertable ResizeBilinearOptions {
1021*61046927SAndroid Build Coastguard Worker  new_height: int (deprecated);
1022*61046927SAndroid Build Coastguard Worker  new_width: int (deprecated);
1023*61046927SAndroid Build Coastguard Worker  align_corners: bool;
1024*61046927SAndroid Build Coastguard Worker  half_pixel_centers: bool;
1025*61046927SAndroid Build Coastguard Worker}
1026*61046927SAndroid Build Coastguard Worker
1027*61046927SAndroid Build Coastguard Workertable ResizeNearestNeighborOptions {
1028*61046927SAndroid Build Coastguard Worker  align_corners: bool;
1029*61046927SAndroid Build Coastguard Worker  half_pixel_centers: bool;
1030*61046927SAndroid Build Coastguard Worker}
1031*61046927SAndroid Build Coastguard Worker
1032*61046927SAndroid Build Coastguard Worker// A call operation options
1033*61046927SAndroid Build Coastguard Workertable CallOptions {
1034*61046927SAndroid Build Coastguard Worker  // The subgraph index that needs to be called.
1035*61046927SAndroid Build Coastguard Worker  subgraph:uint;
1036*61046927SAndroid Build Coastguard Worker}
1037*61046927SAndroid Build Coastguard Worker
1038*61046927SAndroid Build Coastguard Workertable PadOptions {
1039*61046927SAndroid Build Coastguard Worker}
1040*61046927SAndroid Build Coastguard Worker
1041*61046927SAndroid Build Coastguard Workertable PadV2Options {
1042*61046927SAndroid Build Coastguard Worker}
1043*61046927SAndroid Build Coastguard Worker
1044*61046927SAndroid Build Coastguard Workertable ReshapeOptions {
1045*61046927SAndroid Build Coastguard Worker  new_shape:[int];
1046*61046927SAndroid Build Coastguard Worker}
1047*61046927SAndroid Build Coastguard Worker
1048*61046927SAndroid Build Coastguard Workertable SpaceToBatchNDOptions {
1049*61046927SAndroid Build Coastguard Worker}
1050*61046927SAndroid Build Coastguard Worker
1051*61046927SAndroid Build Coastguard Workertable BatchToSpaceNDOptions {
1052*61046927SAndroid Build Coastguard Worker}
1053*61046927SAndroid Build Coastguard Worker
1054*61046927SAndroid Build Coastguard Workertable SkipGramOptions {
1055*61046927SAndroid Build Coastguard Worker  ngram_size: int;
1056*61046927SAndroid Build Coastguard Worker  max_skip_size: int;
1057*61046927SAndroid Build Coastguard Worker  include_all_ngrams: bool;
1058*61046927SAndroid Build Coastguard Worker}
1059*61046927SAndroid Build Coastguard Worker
1060*61046927SAndroid Build Coastguard Workertable SpaceToDepthOptions {
1061*61046927SAndroid Build Coastguard Worker  block_size: int;
1062*61046927SAndroid Build Coastguard Worker}
1063*61046927SAndroid Build Coastguard Worker
1064*61046927SAndroid Build Coastguard Workertable DepthToSpaceOptions {
1065*61046927SAndroid Build Coastguard Worker  block_size: int;
1066*61046927SAndroid Build Coastguard Worker}
1067*61046927SAndroid Build Coastguard Worker
1068*61046927SAndroid Build Coastguard Workertable SubOptions {
1069*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
1070*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 5
1071*61046927SAndroid Build Coastguard Worker  pot_scale_int16:bool = true;
1072*61046927SAndroid Build Coastguard Worker}
1073*61046927SAndroid Build Coastguard Worker
1074*61046927SAndroid Build Coastguard Workertable DivOptions {
1075*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType;
1076*61046927SAndroid Build Coastguard Worker}
1077*61046927SAndroid Build Coastguard Worker
1078*61046927SAndroid Build Coastguard Workertable TopKV2Options {
1079*61046927SAndroid Build Coastguard Worker}
1080*61046927SAndroid Build Coastguard Worker
1081*61046927SAndroid Build Coastguard Workerenum CombinerType : byte {
1082*61046927SAndroid Build Coastguard Worker  SUM = 0,
1083*61046927SAndroid Build Coastguard Worker  MEAN = 1,
1084*61046927SAndroid Build Coastguard Worker  SQRTN = 2,
1085*61046927SAndroid Build Coastguard Worker}
1086*61046927SAndroid Build Coastguard Worker
1087*61046927SAndroid Build Coastguard Workertable EmbeddingLookupSparseOptions {
1088*61046927SAndroid Build Coastguard Worker  combiner:CombinerType;
1089*61046927SAndroid Build Coastguard Worker}
1090*61046927SAndroid Build Coastguard Worker
1091*61046927SAndroid Build Coastguard Workertable GatherOptions {
1092*61046927SAndroid Build Coastguard Worker  axis: int;
1093*61046927SAndroid Build Coastguard Worker  // Parameters for Gather version 5 or above.
1094*61046927SAndroid Build Coastguard Worker  batch_dims: int = 0;
1095*61046927SAndroid Build Coastguard Worker}
1096*61046927SAndroid Build Coastguard Worker
1097*61046927SAndroid Build Coastguard Workertable TransposeOptions {
1098*61046927SAndroid Build Coastguard Worker}
1099*61046927SAndroid Build Coastguard Worker
1100*61046927SAndroid Build Coastguard Workertable ExpOptions {
1101*61046927SAndroid Build Coastguard Worker}
1102*61046927SAndroid Build Coastguard Worker
1103*61046927SAndroid Build Coastguard Workertable CosOptions {
1104*61046927SAndroid Build Coastguard Worker}
1105*61046927SAndroid Build Coastguard Worker
1106*61046927SAndroid Build Coastguard Workertable ReducerOptions {
1107*61046927SAndroid Build Coastguard Worker  keep_dims: bool;
1108*61046927SAndroid Build Coastguard Worker}
1109*61046927SAndroid Build Coastguard Worker
1110*61046927SAndroid Build Coastguard Workertable SqueezeOptions {
1111*61046927SAndroid Build Coastguard Worker  squeeze_dims:[int];
1112*61046927SAndroid Build Coastguard Worker}
1113*61046927SAndroid Build Coastguard Worker
1114*61046927SAndroid Build Coastguard Workertable SplitOptions {
1115*61046927SAndroid Build Coastguard Worker  num_splits: int;
1116*61046927SAndroid Build Coastguard Worker}
1117*61046927SAndroid Build Coastguard Worker
1118*61046927SAndroid Build Coastguard Workertable SplitVOptions {
1119*61046927SAndroid Build Coastguard Worker  num_splits: int;
1120*61046927SAndroid Build Coastguard Worker}
1121*61046927SAndroid Build Coastguard Worker
1122*61046927SAndroid Build Coastguard Workertable StridedSliceOptions {
1123*61046927SAndroid Build Coastguard Worker  begin_mask: int;
1124*61046927SAndroid Build Coastguard Worker  end_mask: int;
1125*61046927SAndroid Build Coastguard Worker  ellipsis_mask: int;
1126*61046927SAndroid Build Coastguard Worker  new_axis_mask: int;
1127*61046927SAndroid Build Coastguard Worker  shrink_axis_mask: int;
1128*61046927SAndroid Build Coastguard Worker  // If true, then the end tensor is an offset of the begin tensor.
1129*61046927SAndroid Build Coastguard Worker  offset: bool;
1130*61046927SAndroid Build Coastguard Worker}
1131*61046927SAndroid Build Coastguard Worker
1132*61046927SAndroid Build Coastguard Workertable LogSoftmaxOptions {
1133*61046927SAndroid Build Coastguard Worker}
1134*61046927SAndroid Build Coastguard Worker
1135*61046927SAndroid Build Coastguard Workertable CastOptions {
1136*61046927SAndroid Build Coastguard Worker  in_data_type: TensorType;
1137*61046927SAndroid Build Coastguard Worker  out_data_type: TensorType;
1138*61046927SAndroid Build Coastguard Worker}
1139*61046927SAndroid Build Coastguard Worker
1140*61046927SAndroid Build Coastguard Workertable DequantizeOptions {
1141*61046927SAndroid Build Coastguard Worker}
1142*61046927SAndroid Build Coastguard Worker
1143*61046927SAndroid Build Coastguard Workertable MaximumMinimumOptions {
1144*61046927SAndroid Build Coastguard Worker}
1145*61046927SAndroid Build Coastguard Worker
1146*61046927SAndroid Build Coastguard Workertable TileOptions {
1147*61046927SAndroid Build Coastguard Worker}
1148*61046927SAndroid Build Coastguard Worker
1149*61046927SAndroid Build Coastguard Workertable ArgMaxOptions {
1150*61046927SAndroid Build Coastguard Worker  output_type : TensorType;
1151*61046927SAndroid Build Coastguard Worker}
1152*61046927SAndroid Build Coastguard Worker
1153*61046927SAndroid Build Coastguard Workertable ArgMinOptions {
1154*61046927SAndroid Build Coastguard Worker  output_type : TensorType;
1155*61046927SAndroid Build Coastguard Worker}
1156*61046927SAndroid Build Coastguard Worker
1157*61046927SAndroid Build Coastguard Workertable GreaterOptions {
1158*61046927SAndroid Build Coastguard Worker}
1159*61046927SAndroid Build Coastguard Worker
1160*61046927SAndroid Build Coastguard Workertable GreaterEqualOptions {
1161*61046927SAndroid Build Coastguard Worker}
1162*61046927SAndroid Build Coastguard Worker
1163*61046927SAndroid Build Coastguard Workertable LessOptions {
1164*61046927SAndroid Build Coastguard Worker}
1165*61046927SAndroid Build Coastguard Worker
1166*61046927SAndroid Build Coastguard Workertable LessEqualOptions {
1167*61046927SAndroid Build Coastguard Worker}
1168*61046927SAndroid Build Coastguard Worker
1169*61046927SAndroid Build Coastguard Workertable NegOptions {
1170*61046927SAndroid Build Coastguard Worker}
1171*61046927SAndroid Build Coastguard Worker
1172*61046927SAndroid Build Coastguard Workertable SelectOptions {
1173*61046927SAndroid Build Coastguard Worker}
1174*61046927SAndroid Build Coastguard Worker
1175*61046927SAndroid Build Coastguard Workertable SliceOptions {
1176*61046927SAndroid Build Coastguard Worker}
1177*61046927SAndroid Build Coastguard Worker
1178*61046927SAndroid Build Coastguard Workertable TransposeConvOptions {
1179*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 1, 2, 3:
1180*61046927SAndroid Build Coastguard Worker  padding:Padding;
1181*61046927SAndroid Build Coastguard Worker  stride_w:int;
1182*61046927SAndroid Build Coastguard Worker  stride_h:int;
1183*61046927SAndroid Build Coastguard Worker
1184*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 4:
1185*61046927SAndroid Build Coastguard Worker  fused_activation_function:ActivationFunctionType = NONE;
1186*61046927SAndroid Build Coastguard Worker
1187*61046927SAndroid Build Coastguard Worker  // Parameters for TransposeConv version 5 or above.
1188*61046927SAndroid Build Coastguard Worker  // If set, use this for bias and accumulator.
1189*61046927SAndroid Build Coastguard Worker  // When set, quantized_bias_type defines the dtype for both bias and accumulator.
1190*61046927SAndroid Build Coastguard Worker  quantized_bias_type: TensorType;
1191*61046927SAndroid Build Coastguard Worker}
1192*61046927SAndroid Build Coastguard Worker
1193*61046927SAndroid Build Coastguard Workertable ExpandDimsOptions {
1194*61046927SAndroid Build Coastguard Worker}
1195*61046927SAndroid Build Coastguard Worker
1196*61046927SAndroid Build Coastguard Workertable SparseToDenseOptions {
1197*61046927SAndroid Build Coastguard Worker  validate_indices:bool;
1198*61046927SAndroid Build Coastguard Worker}
1199*61046927SAndroid Build Coastguard Worker
1200*61046927SAndroid Build Coastguard Workertable EqualOptions {
1201*61046927SAndroid Build Coastguard Worker}
1202*61046927SAndroid Build Coastguard Worker
1203*61046927SAndroid Build Coastguard Workertable NotEqualOptions {
1204*61046927SAndroid Build Coastguard Worker}
1205*61046927SAndroid Build Coastguard Worker
1206*61046927SAndroid Build Coastguard Workertable ShapeOptions {
1207*61046927SAndroid Build Coastguard Worker  // Optional output type of the operation (int32 or int64). Defaults to int32.
1208*61046927SAndroid Build Coastguard Worker  out_type : TensorType;
1209*61046927SAndroid Build Coastguard Worker}
1210*61046927SAndroid Build Coastguard Worker
1211*61046927SAndroid Build Coastguard Workertable RankOptions {
1212*61046927SAndroid Build Coastguard Worker}
1213*61046927SAndroid Build Coastguard Worker
1214*61046927SAndroid Build Coastguard Workertable PowOptions {
1215*61046927SAndroid Build Coastguard Worker}
1216*61046927SAndroid Build Coastguard Worker
1217*61046927SAndroid Build Coastguard Workertable FakeQuantOptions {
1218*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 1:
1219*61046927SAndroid Build Coastguard Worker  min:float;
1220*61046927SAndroid Build Coastguard Worker  max:float;
1221*61046927SAndroid Build Coastguard Worker  num_bits:int;
1222*61046927SAndroid Build Coastguard Worker
1223*61046927SAndroid Build Coastguard Worker  // Parameters supported by version 2:
1224*61046927SAndroid Build Coastguard Worker  narrow_range:bool;
1225*61046927SAndroid Build Coastguard Worker}
1226*61046927SAndroid Build Coastguard Worker
1227*61046927SAndroid Build Coastguard Workertable PackOptions {
1228*61046927SAndroid Build Coastguard Worker  values_count:int;
1229*61046927SAndroid Build Coastguard Worker  axis:int;
1230*61046927SAndroid Build Coastguard Worker}
1231*61046927SAndroid Build Coastguard Worker
1232*61046927SAndroid Build Coastguard Workertable LogicalOrOptions {
1233*61046927SAndroid Build Coastguard Worker}
1234*61046927SAndroid Build Coastguard Worker
1235*61046927SAndroid Build Coastguard Workertable OneHotOptions {
1236*61046927SAndroid Build Coastguard Worker  axis:int;
1237*61046927SAndroid Build Coastguard Worker}
1238*61046927SAndroid Build Coastguard Worker
1239*61046927SAndroid Build Coastguard Workertable AbsOptions {
1240*61046927SAndroid Build Coastguard Worker}
1241*61046927SAndroid Build Coastguard Worker
1242*61046927SAndroid Build Coastguard Worker
1243*61046927SAndroid Build Coastguard Workertable HardSwishOptions {
1244*61046927SAndroid Build Coastguard Worker}
1245*61046927SAndroid Build Coastguard Worker
1246*61046927SAndroid Build Coastguard Workertable LogicalAndOptions {
1247*61046927SAndroid Build Coastguard Worker}
1248*61046927SAndroid Build Coastguard Worker
1249*61046927SAndroid Build Coastguard Workertable LogicalNotOptions {
1250*61046927SAndroid Build Coastguard Worker}
1251*61046927SAndroid Build Coastguard Worker
1252*61046927SAndroid Build Coastguard Workertable UnpackOptions {
1253*61046927SAndroid Build Coastguard Worker  num:int;
1254*61046927SAndroid Build Coastguard Worker  axis:int;
1255*61046927SAndroid Build Coastguard Worker}
1256*61046927SAndroid Build Coastguard Worker
1257*61046927SAndroid Build Coastguard Workertable FloorDivOptions {
1258*61046927SAndroid Build Coastguard Worker}
1259*61046927SAndroid Build Coastguard Worker
1260*61046927SAndroid Build Coastguard Workertable SquareOptions {
1261*61046927SAndroid Build Coastguard Worker}
1262*61046927SAndroid Build Coastguard Worker
1263*61046927SAndroid Build Coastguard Workertable ZerosLikeOptions {
1264*61046927SAndroid Build Coastguard Worker}
1265*61046927SAndroid Build Coastguard Worker
1266*61046927SAndroid Build Coastguard Workertable FillOptions {
1267*61046927SAndroid Build Coastguard Worker}
1268*61046927SAndroid Build Coastguard Worker
1269*61046927SAndroid Build Coastguard Workertable FloorModOptions {
1270*61046927SAndroid Build Coastguard Worker}
1271*61046927SAndroid Build Coastguard Worker
1272*61046927SAndroid Build Coastguard Workertable RangeOptions {
1273*61046927SAndroid Build Coastguard Worker}
1274*61046927SAndroid Build Coastguard Worker
1275*61046927SAndroid Build Coastguard Workertable LeakyReluOptions {
1276*61046927SAndroid Build Coastguard Worker  alpha:float;
1277*61046927SAndroid Build Coastguard Worker}
1278*61046927SAndroid Build Coastguard Worker
1279*61046927SAndroid Build Coastguard Workertable SquaredDifferenceOptions {
1280*61046927SAndroid Build Coastguard Worker}
1281*61046927SAndroid Build Coastguard Worker
1282*61046927SAndroid Build Coastguard Worker// LINT.IfChange
1283*61046927SAndroid Build Coastguard Workerenum MirrorPadMode : byte {
1284*61046927SAndroid Build Coastguard Worker  // Doesn't include borders.
1285*61046927SAndroid Build Coastguard Worker  REFLECT = 0,
1286*61046927SAndroid Build Coastguard Worker  // Includes borders.
1287*61046927SAndroid Build Coastguard Worker  SYMMETRIC = 1,
1288*61046927SAndroid Build Coastguard Worker}
1289*61046927SAndroid Build Coastguard Worker// LINT.ThenChange(//tensorflow/compiler/mlir/lite/ir/tfl_op_enums.td)
1290*61046927SAndroid Build Coastguard Worker
1291*61046927SAndroid Build Coastguard Workertable MirrorPadOptions {
1292*61046927SAndroid Build Coastguard Worker  mode:MirrorPadMode;
1293*61046927SAndroid Build Coastguard Worker}
1294*61046927SAndroid Build Coastguard Worker
1295*61046927SAndroid Build Coastguard Workertable UniqueOptions {
1296*61046927SAndroid Build Coastguard Worker  idx_out_type:TensorType = INT32;
1297*61046927SAndroid Build Coastguard Worker}
1298*61046927SAndroid Build Coastguard Worker
1299*61046927SAndroid Build Coastguard Workertable ReverseV2Options {
1300*61046927SAndroid Build Coastguard Worker}
1301*61046927SAndroid Build Coastguard Worker
1302*61046927SAndroid Build Coastguard Workertable AddNOptions {
1303*61046927SAndroid Build Coastguard Worker}
1304*61046927SAndroid Build Coastguard Worker
1305*61046927SAndroid Build Coastguard Workertable GatherNdOptions {
1306*61046927SAndroid Build Coastguard Worker}
1307*61046927SAndroid Build Coastguard Worker
1308*61046927SAndroid Build Coastguard Workertable WhereOptions {
1309*61046927SAndroid Build Coastguard Worker}
1310*61046927SAndroid Build Coastguard Worker
1311*61046927SAndroid Build Coastguard Workertable ReverseSequenceOptions {
1312*61046927SAndroid Build Coastguard Worker  seq_dim:int;
1313*61046927SAndroid Build Coastguard Worker  batch_dim:int = 0;
1314*61046927SAndroid Build Coastguard Worker}
1315*61046927SAndroid Build Coastguard Worker
1316*61046927SAndroid Build Coastguard Workertable MatrixDiagOptions {
1317*61046927SAndroid Build Coastguard Worker}
1318*61046927SAndroid Build Coastguard Worker
1319*61046927SAndroid Build Coastguard Workertable QuantizeOptions {
1320*61046927SAndroid Build Coastguard Worker}
1321*61046927SAndroid Build Coastguard Worker
1322*61046927SAndroid Build Coastguard Workertable MatrixSetDiagOptions {
1323*61046927SAndroid Build Coastguard Worker}
1324*61046927SAndroid Build Coastguard Worker
1325*61046927SAndroid Build Coastguard Workertable IfOptions {
1326*61046927SAndroid Build Coastguard Worker  then_subgraph_index:int;
1327*61046927SAndroid Build Coastguard Worker  else_subgraph_index:int;
1328*61046927SAndroid Build Coastguard Worker}
1329*61046927SAndroid Build Coastguard Worker
1330*61046927SAndroid Build Coastguard Workertable CallOnceOptions {
1331*61046927SAndroid Build Coastguard Worker  init_subgraph_index:int;
1332*61046927SAndroid Build Coastguard Worker}
1333*61046927SAndroid Build Coastguard Worker
1334*61046927SAndroid Build Coastguard Workertable WhileOptions {
1335*61046927SAndroid Build Coastguard Worker  cond_subgraph_index:int;
1336*61046927SAndroid Build Coastguard Worker  body_subgraph_index:int;
1337*61046927SAndroid Build Coastguard Worker}
1338*61046927SAndroid Build Coastguard Worker
1339*61046927SAndroid Build Coastguard Workertable NonMaxSuppressionV4Options {
1340*61046927SAndroid Build Coastguard Worker}
1341*61046927SAndroid Build Coastguard Worker
1342*61046927SAndroid Build Coastguard Workertable NonMaxSuppressionV5Options {
1343*61046927SAndroid Build Coastguard Worker}
1344*61046927SAndroid Build Coastguard Worker
1345*61046927SAndroid Build Coastguard Workertable ScatterNdOptions {
1346*61046927SAndroid Build Coastguard Worker}
1347*61046927SAndroid Build Coastguard Worker
1348*61046927SAndroid Build Coastguard Workertable SelectV2Options {
1349*61046927SAndroid Build Coastguard Worker}
1350*61046927SAndroid Build Coastguard Worker
1351*61046927SAndroid Build Coastguard Workertable DensifyOptions {
1352*61046927SAndroid Build Coastguard Worker}
1353*61046927SAndroid Build Coastguard Worker
1354*61046927SAndroid Build Coastguard Workertable SegmentSumOptions {
1355*61046927SAndroid Build Coastguard Worker}
1356*61046927SAndroid Build Coastguard Worker
1357*61046927SAndroid Build Coastguard Workertable BatchMatMulOptions {
1358*61046927SAndroid Build Coastguard Worker  adj_x:bool;
1359*61046927SAndroid Build Coastguard Worker  adj_y:bool;
1360*61046927SAndroid Build Coastguard Worker  // Parameters for BatchMatMul version 4 or above.
1361*61046927SAndroid Build Coastguard Worker  // If set to true, then weights-only op will use asymmetric quantization for
1362*61046927SAndroid Build Coastguard Worker  // inputs.
1363*61046927SAndroid Build Coastguard Worker  asymmetric_quantize_inputs: bool;
1364*61046927SAndroid Build Coastguard Worker}
1365*61046927SAndroid Build Coastguard Worker
1366*61046927SAndroid Build Coastguard Workertable CumsumOptions {
1367*61046927SAndroid Build Coastguard Worker  exclusive:bool;
1368*61046927SAndroid Build Coastguard Worker  reverse:bool;
1369*61046927SAndroid Build Coastguard Worker}
1370*61046927SAndroid Build Coastguard Worker
1371*61046927SAndroid Build Coastguard Workertable BroadcastToOptions {
1372*61046927SAndroid Build Coastguard Worker}
1373*61046927SAndroid Build Coastguard Worker
1374*61046927SAndroid Build Coastguard Workertable Rfft2dOptions {
1375*61046927SAndroid Build Coastguard Worker}
1376*61046927SAndroid Build Coastguard Worker
1377*61046927SAndroid Build Coastguard Workertable HashtableOptions {
1378*61046927SAndroid Build Coastguard Worker  // The identity of hash tables. This identity will be used across different
1379*61046927SAndroid Build Coastguard Worker  // subgraphs in the same interpreter instance.
1380*61046927SAndroid Build Coastguard Worker  table_id:int;
1381*61046927SAndroid Build Coastguard Worker  key_dtype:TensorType;
1382*61046927SAndroid Build Coastguard Worker  value_dtype:TensorType;
1383*61046927SAndroid Build Coastguard Worker}
1384*61046927SAndroid Build Coastguard Worker
1385*61046927SAndroid Build Coastguard Workertable HashtableFindOptions {
1386*61046927SAndroid Build Coastguard Worker}
1387*61046927SAndroid Build Coastguard Worker
1388*61046927SAndroid Build Coastguard Workertable HashtableImportOptions {
1389*61046927SAndroid Build Coastguard Worker}
1390*61046927SAndroid Build Coastguard Worker
1391*61046927SAndroid Build Coastguard Workertable HashtableSizeOptions {
1392*61046927SAndroid Build Coastguard Worker}
1393*61046927SAndroid Build Coastguard Worker
1394*61046927SAndroid Build Coastguard Workertable VarHandleOptions {
1395*61046927SAndroid Build Coastguard Worker  container:string;
1396*61046927SAndroid Build Coastguard Worker  shared_name:string;
1397*61046927SAndroid Build Coastguard Worker}
1398*61046927SAndroid Build Coastguard Worker
1399*61046927SAndroid Build Coastguard Workertable ReadVariableOptions {
1400*61046927SAndroid Build Coastguard Worker}
1401*61046927SAndroid Build Coastguard Worker
1402*61046927SAndroid Build Coastguard Workertable AssignVariableOptions {
1403*61046927SAndroid Build Coastguard Worker}
1404*61046927SAndroid Build Coastguard Worker
1405*61046927SAndroid Build Coastguard Workertable RandomOptions {
1406*61046927SAndroid Build Coastguard Worker  seed: long;
1407*61046927SAndroid Build Coastguard Worker  seed2: long;
1408*61046927SAndroid Build Coastguard Worker}
1409*61046927SAndroid Build Coastguard Worker
1410*61046927SAndroid Build Coastguard Workertable BucketizeOptions {
1411*61046927SAndroid Build Coastguard Worker  boundaries: [float];  // The bucket boundaries.
1412*61046927SAndroid Build Coastguard Worker}
1413*61046927SAndroid Build Coastguard Worker
1414*61046927SAndroid Build Coastguard Workertable GeluOptions {
1415*61046927SAndroid Build Coastguard Worker  approximate: bool;
1416*61046927SAndroid Build Coastguard Worker}
1417*61046927SAndroid Build Coastguard Worker
1418*61046927SAndroid Build Coastguard Workertable DynamicUpdateSliceOptions {
1419*61046927SAndroid Build Coastguard Worker}
1420*61046927SAndroid Build Coastguard Worker
1421*61046927SAndroid Build Coastguard Workertable UnsortedSegmentProdOptions {
1422*61046927SAndroid Build Coastguard Worker}
1423*61046927SAndroid Build Coastguard Worker
1424*61046927SAndroid Build Coastguard Workertable UnsortedSegmentMaxOptions {
1425*61046927SAndroid Build Coastguard Worker}
1426*61046927SAndroid Build Coastguard Worker
1427*61046927SAndroid Build Coastguard Workertable UnsortedSegmentSumOptions {
1428*61046927SAndroid Build Coastguard Worker}
1429*61046927SAndroid Build Coastguard Worker
1430*61046927SAndroid Build Coastguard Workertable ATan2Options {
1431*61046927SAndroid Build Coastguard Worker}
1432*61046927SAndroid Build Coastguard Worker
1433*61046927SAndroid Build Coastguard Workertable UnsortedSegmentMinOptions{
1434*61046927SAndroid Build Coastguard Worker}
1435*61046927SAndroid Build Coastguard Worker
1436*61046927SAndroid Build Coastguard Workertable SignOptions {
1437*61046927SAndroid Build Coastguard Worker}
1438*61046927SAndroid Build Coastguard Worker
1439*61046927SAndroid Build Coastguard Workertable BitcastOptions {
1440*61046927SAndroid Build Coastguard Worker}
1441*61046927SAndroid Build Coastguard Worker
1442*61046927SAndroid Build Coastguard Workertable BitwiseXorOptions {
1443*61046927SAndroid Build Coastguard Worker}
1444*61046927SAndroid Build Coastguard Worker
1445*61046927SAndroid Build Coastguard Workertable RightShiftOptions {
1446*61046927SAndroid Build Coastguard Worker}
1447*61046927SAndroid Build Coastguard Worker
1448*61046927SAndroid Build Coastguard Workertable DilateOptions {
1449*61046927SAndroid Build Coastguard Worker}
1450*61046927SAndroid Build Coastguard Worker
1451*61046927SAndroid Build Coastguard Workerenum ReduceWindowFunction : int {
1452*61046927SAndroid Build Coastguard Worker  UNSUPPORTED,
1453*61046927SAndroid Build Coastguard Worker  ADD,
1454*61046927SAndroid Build Coastguard Worker  MUL,
1455*61046927SAndroid Build Coastguard Worker  MINIMUM,
1456*61046927SAndroid Build Coastguard Worker  MAXIMUM,
1457*61046927SAndroid Build Coastguard Worker  ALL,
1458*61046927SAndroid Build Coastguard Worker  ANY,
1459*61046927SAndroid Build Coastguard Worker}
1460*61046927SAndroid Build Coastguard Worker
1461*61046927SAndroid Build Coastguard Workertable ReduceWindowOptions{
1462*61046927SAndroid Build Coastguard Worker  reduce_function: ReduceWindowFunction;
1463*61046927SAndroid Build Coastguard Worker}
1464*61046927SAndroid Build Coastguard Worker
1465*61046927SAndroid Build Coastguard Worker// An OperatorCode can be an enum value (BuiltinOperator) if the operator is a
1466*61046927SAndroid Build Coastguard Worker// builtin, or a string if the operator is custom.
1467*61046927SAndroid Build Coastguard Workertable OperatorCode {
1468*61046927SAndroid Build Coastguard Worker  // This field is for backward compatibility. This field will be used when
1469*61046927SAndroid Build Coastguard Worker  // the value of the extended builtin_code field has less than
1470*61046927SAndroid Build Coastguard Worker  // BulitinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES.
1471*61046927SAndroid Build Coastguard Worker  deprecated_builtin_code:byte;
1472*61046927SAndroid Build Coastguard Worker  custom_code:string;
1473*61046927SAndroid Build Coastguard Worker
1474*61046927SAndroid Build Coastguard Worker  // The version of the operator. The version need to be bumped whenever new
1475*61046927SAndroid Build Coastguard Worker  // parameters are introduced into an op.
1476*61046927SAndroid Build Coastguard Worker  version:int = 1;
1477*61046927SAndroid Build Coastguard Worker
1478*61046927SAndroid Build Coastguard Worker  // This field is introduced for resolving op builtin code shortage problem
1479*61046927SAndroid Build Coastguard Worker  // (the original BuiltinOperator enum field was represented as a byte).
1480*61046927SAndroid Build Coastguard Worker  // This field will be used when the value of the extended builtin_code field
1481*61046927SAndroid Build Coastguard Worker  // has greater than BulitinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES.
1482*61046927SAndroid Build Coastguard Worker  builtin_code:BuiltinOperator;
1483*61046927SAndroid Build Coastguard Worker}
1484*61046927SAndroid Build Coastguard Worker
1485*61046927SAndroid Build Coastguard Workerenum CustomOptionsFormat : byte {
1486*61046927SAndroid Build Coastguard Worker  FLEXBUFFERS = 0,
1487*61046927SAndroid Build Coastguard Worker}
1488*61046927SAndroid Build Coastguard Worker
1489*61046927SAndroid Build Coastguard Worker// An operator takes tensors as inputs and outputs. The type of operation being
1490*61046927SAndroid Build Coastguard Worker// performed is determined by an index into the list of valid OperatorCodes,
1491*61046927SAndroid Build Coastguard Worker// while the specifics of each operations is configured using builtin_options
1492*61046927SAndroid Build Coastguard Worker// or custom_options.
1493*61046927SAndroid Build Coastguard Workertable Operator {
1494*61046927SAndroid Build Coastguard Worker  // Index into the operator_codes array. Using an integer here avoids
1495*61046927SAndroid Build Coastguard Worker  // complicate map lookups.
1496*61046927SAndroid Build Coastguard Worker  opcode_index:uint;
1497*61046927SAndroid Build Coastguard Worker
1498*61046927SAndroid Build Coastguard Worker  // Optional input are indicated by -1.
1499*61046927SAndroid Build Coastguard Worker  inputs:[int];
1500*61046927SAndroid Build Coastguard Worker  outputs:[int];
1501*61046927SAndroid Build Coastguard Worker
1502*61046927SAndroid Build Coastguard Worker  builtin_options:BuiltinOptions;
1503*61046927SAndroid Build Coastguard Worker  custom_options:[ubyte];
1504*61046927SAndroid Build Coastguard Worker  custom_options_format:CustomOptionsFormat;
1505*61046927SAndroid Build Coastguard Worker
1506*61046927SAndroid Build Coastguard Worker  // A list of booleans indicating the input tensors which are being mutated by
1507*61046927SAndroid Build Coastguard Worker  // this operator.(e.g. used by RNN and LSTM).
1508*61046927SAndroid Build Coastguard Worker  // For example, if the "inputs" array refers to 5 tensors and the second and
1509*61046927SAndroid Build Coastguard Worker  // fifth are mutable variables, then this list will contain
1510*61046927SAndroid Build Coastguard Worker  // [false, true, false, false, true].
1511*61046927SAndroid Build Coastguard Worker  //
1512*61046927SAndroid Build Coastguard Worker  // If the list is empty, no variable is mutated in this operator.
1513*61046927SAndroid Build Coastguard Worker  // The list either has the same length as `inputs`, or is empty.
1514*61046927SAndroid Build Coastguard Worker  mutating_variable_inputs:[bool];
1515*61046927SAndroid Build Coastguard Worker
1516*61046927SAndroid Build Coastguard Worker  // A list of indices to the subgraph's "tensors" that are internal to an Op.
1517*61046927SAndroid Build Coastguard Worker  // Internal tensors are those that do not flow in or out of the operation,
1518*61046927SAndroid Build Coastguard Worker  // but instead are part of internal computation. As such, the operation's
1519*61046927SAndroid Build Coastguard Worker  // implementation may manage its memory more efficiently. They are needed
1520*61046927SAndroid Build Coastguard Worker  // however (i.e. not just an implementation detail) since they are part of the
1521*61046927SAndroid Build Coastguard Worker  // computation, which may require relevant metadata such as quantization
1522*61046927SAndroid Build Coastguard Worker  // parameters.
1523*61046927SAndroid Build Coastguard Worker  intermediates:[int];
1524*61046927SAndroid Build Coastguard Worker
1525*61046927SAndroid Build Coastguard Worker  // When an op is using custom_options in a model that is larger than 2GB, then
1526*61046927SAndroid Build Coastguard Worker  // we instead use the following attributes to find the buffer location which
1527*61046927SAndroid Build Coastguard Worker  // is stored outside of flatbuffers, the offset is calculated relative to the
1528*61046927SAndroid Build Coastguard Worker  // beginning of the file and is only valid if > 1
1529*61046927SAndroid Build Coastguard Worker  large_custom_options_offset: ulong;
1530*61046927SAndroid Build Coastguard Worker  large_custom_options_size: ulong;
1531*61046927SAndroid Build Coastguard Worker
1532*61046927SAndroid Build Coastguard Worker  // Flatbuffers union struct has a 128 elements limit in JAVA, so a second
1533*61046927SAndroid Build Coastguard Worker  // union is added, in the case of where BuitlinOptions2 runs out, a third
1534*61046927SAndroid Build Coastguard Worker  // one can be added
1535*61046927SAndroid Build Coastguard Worker  builtin_options_2 : BuiltinOptions2;
1536*61046927SAndroid Build Coastguard Worker}
1537*61046927SAndroid Build Coastguard Worker
1538*61046927SAndroid Build Coastguard Worker// The root type, defining a subgraph, which typically represents an entire
1539*61046927SAndroid Build Coastguard Worker// model.
1540*61046927SAndroid Build Coastguard Workertable SubGraph {
1541*61046927SAndroid Build Coastguard Worker  // A list of all tensors used in this subgraph.
1542*61046927SAndroid Build Coastguard Worker  tensors:[Tensor];
1543*61046927SAndroid Build Coastguard Worker
1544*61046927SAndroid Build Coastguard Worker  // Indices of the tensors that are inputs into this subgraph. Note this is
1545*61046927SAndroid Build Coastguard Worker  // the list of non-static tensors that feed into the subgraph for inference.
1546*61046927SAndroid Build Coastguard Worker  inputs:[int];
1547*61046927SAndroid Build Coastguard Worker
1548*61046927SAndroid Build Coastguard Worker  // Indices of the tensors that are outputs out of this subgraph. Note this is
1549*61046927SAndroid Build Coastguard Worker  // the list of output tensors that are considered the product of the
1550*61046927SAndroid Build Coastguard Worker  // subgraph's inference.
1551*61046927SAndroid Build Coastguard Worker  outputs:[int];
1552*61046927SAndroid Build Coastguard Worker
1553*61046927SAndroid Build Coastguard Worker  // All operators, in execution order.
1554*61046927SAndroid Build Coastguard Worker  operators:[Operator];
1555*61046927SAndroid Build Coastguard Worker
1556*61046927SAndroid Build Coastguard Worker  // Name of this subgraph (used for debugging).
1557*61046927SAndroid Build Coastguard Worker  name:string;
1558*61046927SAndroid Build Coastguard Worker}
1559*61046927SAndroid Build Coastguard Worker
1560*61046927SAndroid Build Coastguard Worker// Table of raw data buffers (used for constant tensors). Referenced by tensors
1561*61046927SAndroid Build Coastguard Worker// by index. The generous alignment accommodates mmap-friendly data structures.
1562*61046927SAndroid Build Coastguard Workertable Buffer {
1563*61046927SAndroid Build Coastguard Worker  data:[ubyte] (force_align: 16);
1564*61046927SAndroid Build Coastguard Worker
1565*61046927SAndroid Build Coastguard Worker  // In a model that is larger than 2GB, then buffers instead uses the following
1566*61046927SAndroid Build Coastguard Worker  // attributes to find stored data, which is outside of flatbuffers
1567*61046927SAndroid Build Coastguard Worker  // the offset is calculated relative to the beginning of the file and is only
1568*61046927SAndroid Build Coastguard Worker  // valid if > 1.
1569*61046927SAndroid Build Coastguard Worker  offset: ulong;
1570*61046927SAndroid Build Coastguard Worker  size: ulong;
1571*61046927SAndroid Build Coastguard Worker}
1572*61046927SAndroid Build Coastguard Worker
1573*61046927SAndroid Build Coastguard Workertable Metadata {
1574*61046927SAndroid Build Coastguard Worker  // A human readable string to uniquely identify a Metadata.
1575*61046927SAndroid Build Coastguard Worker  name:string;
1576*61046927SAndroid Build Coastguard Worker  // An index to the buffers table.
1577*61046927SAndroid Build Coastguard Worker  buffer:uint;
1578*61046927SAndroid Build Coastguard Worker}
1579*61046927SAndroid Build Coastguard Worker
1580*61046927SAndroid Build Coastguard Worker// Map from an alias name of tensor to tensor index in the graph.
1581*61046927SAndroid Build Coastguard Worker// This is used in Signature def.
1582*61046927SAndroid Build Coastguard Workertable TensorMap {
1583*61046927SAndroid Build Coastguard Worker  // Represents the alias to use for this tensor.
1584*61046927SAndroid Build Coastguard Worker  name:string;
1585*61046927SAndroid Build Coastguard Worker
1586*61046927SAndroid Build Coastguard Worker  // The actual tensor index in the primary graph, that 'name' corresponds to.
1587*61046927SAndroid Build Coastguard Worker  tensor_index:uint;
1588*61046927SAndroid Build Coastguard Worker}
1589*61046927SAndroid Build Coastguard Worker
1590*61046927SAndroid Build Coastguard Worker// This corresponds to SignatureDef in Tensorflow SavedModel.
1591*61046927SAndroid Build Coastguard Worker// The SignatureDef will be part of the SavedModel provided for conversion.
1592*61046927SAndroid Build Coastguard Workertable SignatureDef {
1593*61046927SAndroid Build Coastguard Worker  // Named inputs for this signature.
1594*61046927SAndroid Build Coastguard Worker  inputs:[TensorMap];
1595*61046927SAndroid Build Coastguard Worker
1596*61046927SAndroid Build Coastguard Worker  // Named outputs for this signature.
1597*61046927SAndroid Build Coastguard Worker  outputs:[TensorMap];
1598*61046927SAndroid Build Coastguard Worker
1599*61046927SAndroid Build Coastguard Worker  // Key value which was in the Tensorflow SavedModel SignatureDef map.
1600*61046927SAndroid Build Coastguard Worker  signature_key:string;
1601*61046927SAndroid Build Coastguard Worker
1602*61046927SAndroid Build Coastguard Worker  // Model tag, deprecated.
1603*61046927SAndroid Build Coastguard Worker  deprecated_tag:string (deprecated);
1604*61046927SAndroid Build Coastguard Worker
1605*61046927SAndroid Build Coastguard Worker  // Index of subgraphs that corresponds to the exported method.
1606*61046927SAndroid Build Coastguard Worker  subgraph_index:uint;
1607*61046927SAndroid Build Coastguard Worker}
1608*61046927SAndroid Build Coastguard Worker
1609*61046927SAndroid Build Coastguard Workertable Model {
1610*61046927SAndroid Build Coastguard Worker  // Version of the schema.
1611*61046927SAndroid Build Coastguard Worker  version:uint;
1612*61046927SAndroid Build Coastguard Worker
1613*61046927SAndroid Build Coastguard Worker  // A list of all operator codes used in this model. This is
1614*61046927SAndroid Build Coastguard Worker  // kept in order because operators carry an index into this
1615*61046927SAndroid Build Coastguard Worker  // vector.
1616*61046927SAndroid Build Coastguard Worker  operator_codes:[OperatorCode];
1617*61046927SAndroid Build Coastguard Worker
1618*61046927SAndroid Build Coastguard Worker  // All the subgraphs of the model. The 0th is assumed to be the main
1619*61046927SAndroid Build Coastguard Worker  // model.
1620*61046927SAndroid Build Coastguard Worker  subgraphs:[SubGraph];
1621*61046927SAndroid Build Coastguard Worker
1622*61046927SAndroid Build Coastguard Worker  // A description of the model.
1623*61046927SAndroid Build Coastguard Worker  description:string;
1624*61046927SAndroid Build Coastguard Worker
1625*61046927SAndroid Build Coastguard Worker  // Buffers of the model.
1626*61046927SAndroid Build Coastguard Worker  // Note the 0th entry of this array must be an empty buffer (sentinel).
1627*61046927SAndroid Build Coastguard Worker  // This is a convention so that tensors without a buffer can provide 0 as
1628*61046927SAndroid Build Coastguard Worker  // their buffer.
1629*61046927SAndroid Build Coastguard Worker  buffers:[Buffer];
1630*61046927SAndroid Build Coastguard Worker
1631*61046927SAndroid Build Coastguard Worker  // Metadata about the model. Indirects into the existings buffers list.
1632*61046927SAndroid Build Coastguard Worker  // Deprecated, prefer to use metadata field.
1633*61046927SAndroid Build Coastguard Worker  metadata_buffer:[int];
1634*61046927SAndroid Build Coastguard Worker
1635*61046927SAndroid Build Coastguard Worker  // Metadata about the model.
1636*61046927SAndroid Build Coastguard Worker  metadata:[Metadata];
1637*61046927SAndroid Build Coastguard Worker
1638*61046927SAndroid Build Coastguard Worker  // Optional SignatureDefs for the model.
1639*61046927SAndroid Build Coastguard Worker  signature_defs:[SignatureDef];
1640*61046927SAndroid Build Coastguard Worker}
1641*61046927SAndroid Build Coastguard Worker
1642*61046927SAndroid Build Coastguard Workerroot_type Model;
1643