• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: flatbuffer_translate -mlir-to-tflite-flatbuffer %s -o - | flatbuffer_to_string - | FileCheck %s
2
3func.func @main(tensor<1x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<1x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>) -> tensor<1x4xf32> {
4// CHECK: {
5// CHECK-NEXT:   version: 3,
6// CHECK-NEXT:   operator_codes: [ {
7// CHECK-NEXT:     deprecated_builtin_code: 16,
8// CHECK-NEXT:     version: 1,
9// CHECK-NEXT:     builtin_code: LSTM
10// CHECK-NEXT:   } ],
11// CHECK-NEXT:   subgraphs: [ {
12// CHECK-NEXT:     tensors: [ {
13// CHECK-NEXT:       shape: [ 1, 4 ],
14// CHECK-NEXT:       buffer: 1,
15// CHECK-NEXT:       name: "arg0",
16// CHECK-NEXT:       quantization: {
17// CHECK-EMPTY:
18// CHECK-NEXT:       },
19// CHECK-NEXT:       has_rank: true
20// CHECK-NEXT:     }, {
21// CHECK-NEXT:       shape: [ 4, 4 ],
22// CHECK-NEXT:       buffer: 2,
23// CHECK-NEXT:       name: "arg1",
24// CHECK-NEXT:       quantization: {
25// CHECK-EMPTY:
26// CHECK-NEXT:       },
27// CHECK-NEXT:       has_rank: true
28// CHECK-NEXT:     }, {
29// CHECK-NEXT:       shape: [ 4, 4 ],
30// CHECK-NEXT:       buffer: 3,
31// CHECK-NEXT:       name: "arg2",
32// CHECK-NEXT:       quantization: {
33// CHECK-EMPTY:
34// CHECK-NEXT:       },
35// CHECK-NEXT:       has_rank: true
36// CHECK-NEXT:     }, {
37// CHECK-NEXT:       shape: [ 4, 4 ],
38// CHECK-NEXT:       buffer: 4,
39// CHECK-NEXT:       name: "arg3",
40// CHECK-NEXT:       quantization: {
41// CHECK-EMPTY:
42// CHECK-NEXT:       },
43// CHECK-NEXT:       has_rank: true
44// CHECK-NEXT:     }, {
45// CHECK-NEXT:       shape: [ 4, 4 ],
46// CHECK-NEXT:       buffer: 5,
47// CHECK-NEXT:       name: "arg4",
48// CHECK-NEXT:       quantization: {
49// CHECK-EMPTY:
50// CHECK-NEXT:       },
51// CHECK-NEXT:       has_rank: true
52// CHECK-NEXT:     }, {
53// CHECK-NEXT:       shape: [ 4, 4 ],
54// CHECK-NEXT:       buffer: 6,
55// CHECK-NEXT:       name: "arg5",
56// CHECK-NEXT:       quantization: {
57// CHECK-EMPTY:
58// CHECK-NEXT:       },
59// CHECK-NEXT:       has_rank: true
60// CHECK-NEXT:     }, {
61// CHECK-NEXT:       shape: [ 4, 4 ],
62// CHECK-NEXT:       buffer: 7,
63// CHECK-NEXT:       name: "arg6",
64// CHECK-NEXT:       quantization: {
65// CHECK-EMPTY:
66// CHECK-NEXT:       },
67// CHECK-NEXT:       has_rank: true
68// CHECK-NEXT:     }, {
69// CHECK-NEXT:       shape: [ 4, 4 ],
70// CHECK-NEXT:       buffer: 8,
71// CHECK-NEXT:       name: "arg7",
72// CHECK-NEXT:       quantization: {
73// CHECK-EMPTY:
74// CHECK-NEXT:       },
75// CHECK-NEXT:       has_rank: true
76// CHECK-NEXT:     }, {
77// CHECK-NEXT:       shape: [ 4, 4 ],
78// CHECK-NEXT:       buffer: 9,
79// CHECK-NEXT:       name: "arg8",
80// CHECK-NEXT:       quantization: {
81// CHECK-EMPTY:
82// CHECK-NEXT:       },
83// CHECK-NEXT:       has_rank: true
84// CHECK-NEXT:     }, {
85// CHECK-NEXT:       shape: [ 4 ],
86// CHECK-NEXT:       buffer: 10,
87// CHECK-NEXT:       name: "arg9",
88// CHECK-NEXT:       quantization: {
89// CHECK-EMPTY:
90// CHECK-NEXT:       },
91// CHECK-NEXT:       has_rank: true
92// CHECK-NEXT:     }, {
93// CHECK-NEXT:       shape: [ 4 ],
94// CHECK-NEXT:       buffer: 11,
95// CHECK-NEXT:       name: "arg10",
96// CHECK-NEXT:       quantization: {
97// CHECK-EMPTY:
98// CHECK-NEXT:       },
99// CHECK-NEXT:       has_rank: true
100// CHECK-NEXT:     }, {
101// CHECK-NEXT:       shape: [ 4 ],
102// CHECK-NEXT:       buffer: 12,
103// CHECK-NEXT:       name: "arg11",
104// CHECK-NEXT:       quantization: {
105// CHECK-EMPTY:
106// CHECK-NEXT:       },
107// CHECK-NEXT:       has_rank: true
108// CHECK-NEXT:     }, {
109// CHECK-NEXT:       shape: [ 1, 4 ],
110// CHECK-NEXT:       buffer: 13,
111// CHECK-NEXT:       name: "arg12",
112// CHECK-NEXT:       quantization: {
113// CHECK-EMPTY:
114// CHECK-NEXT:       },
115// CHECK-NEXT:       has_rank: true
116// CHECK-NEXT:     }, {
117// CHECK-NEXT:       shape: [ 4 ],
118// CHECK-NEXT:       buffer: 14,
119// CHECK-NEXT:       name: "arg13",
120// CHECK-NEXT:       quantization: {
121// CHECK-EMPTY:
122// CHECK-NEXT:       },
123// CHECK-NEXT:       has_rank: true
124// CHECK-NEXT:     }, {
125// CHECK-NEXT:       shape: [ 4 ],
126// CHECK-NEXT:       buffer: 15,
127// CHECK-NEXT:       name: "arg14",
128// CHECK-NEXT:       quantization: {
129// CHECK-EMPTY:
130// CHECK-NEXT:       },
131// CHECK-NEXT:       has_rank: true
132// CHECK-NEXT:     }, {
133// CHECK-NEXT:       shape: [ 4 ],
134// CHECK-NEXT:       buffer: 16,
135// CHECK-NEXT:       name: "arg15",
136// CHECK-NEXT:       quantization: {
137// CHECK-EMPTY:
138// CHECK-NEXT:       },
139// CHECK-NEXT:       has_rank: true
140// CHECK-NEXT:     }, {
141// CHECK-NEXT:       shape: [ 4, 4 ],
142// CHECK-NEXT:       buffer: 17,
143// CHECK-NEXT:       name: "arg16",
144// CHECK-NEXT:       quantization: {
145// CHECK-EMPTY:
146// CHECK-NEXT:       },
147// CHECK-NEXT:       has_rank: true
148// CHECK-NEXT:     }, {
149// CHECK-NEXT:       shape: [ 4 ],
150// CHECK-NEXT:       buffer: 18,
151// CHECK-NEXT:       name: "arg17",
152// CHECK-NEXT:       quantization: {
153// CHECK-EMPTY:
154// CHECK-NEXT:       },
155// CHECK-NEXT:       has_rank: true
156// CHECK-NEXT:     }, {
157// CHECK-NEXT:       shape: [ 4 ],
158// CHECK-NEXT:       buffer: 19,
159// CHECK-NEXT:       name: "arg18",
160// CHECK-NEXT:       quantization: {
161// CHECK-EMPTY:
162// CHECK-NEXT:       },
163// CHECK-NEXT:       has_rank: true
164// CHECK-NEXT:     }, {
165// CHECK-NEXT:       shape: [ 4 ],
166// CHECK-NEXT:       buffer: 20,
167// CHECK-NEXT:       name: "arg19",
168// CHECK-NEXT:       quantization: {
169// CHECK-EMPTY:
170// CHECK-NEXT:       },
171// CHECK-NEXT:       has_rank: true
172// CHECK-NEXT:     }, {
173// CHECK-NEXT:       shape: [ 4 ],
174// CHECK-NEXT:       buffer: 21,
175// CHECK-NEXT:       name: "arg20",
176// CHECK-NEXT:       quantization: {
177// CHECK-EMPTY:
178// CHECK-NEXT:       },
179// CHECK-NEXT:       has_rank: true
180// CHECK-NEXT:     }, {
181// CHECK-NEXT:       shape: [ 4 ],
182// CHECK-NEXT:       buffer: 22,
183// CHECK-NEXT:       name: "arg21",
184// CHECK-NEXT:       quantization: {
185// CHECK-EMPTY:
186// CHECK-NEXT:       },
187// CHECK-NEXT:       has_rank: true
188// CHECK-NEXT:     }, {
189// CHECK-NEXT:       shape: [ 1, 4 ],
190// CHECK-NEXT:       name: "Const",
191// CHECK-NEXT:       quantization: {
192// CHECK-EMPTY:
193// CHECK-NEXT:       },
194// CHECK-NEXT:       is_variable: true,
195// CHECK-NEXT:       has_rank: true
196// CHECK-NEXT:     }, {
197// CHECK-NEXT:       shape: [ 1, 4 ],
198// CHECK-NEXT:       name: "Const1",
199// CHECK-NEXT:       quantization: {
200// CHECK-EMPTY:
201// CHECK-NEXT:       },
202// CHECK-NEXT:       is_variable: true,
203// CHECK-NEXT:       has_rank: true
204// CHECK-NEXT:     }, {
205// CHECK-NEXT:       shape: [ 1, 4 ],
206// CHECK-NEXT:       buffer: 25,
207// CHECK-NEXT:       name: "tfl.lstm",
208// CHECK-NEXT:       quantization: {
209// CHECK-EMPTY:
210// CHECK-NEXT:       },
211// CHECK-NEXT:       has_rank: true
212// CHECK-NEXT:     } ],
213// CHECK-NEXT:     inputs: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ],
214// CHECK-NEXT:     outputs: [ 24 ],
215// CHECK-NEXT:     operators: [ {
216// CHECK-NEXT:       inputs: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 22, 23, 18, 19, 20, 21 ],
217// CHECK-NEXT:       outputs: [ 24 ],
218// CHECK-NEXT:       builtin_options_type: LSTMOptions,
219// CHECK-NEXT:       builtin_options: {
220// CHECK-EMPTY:
221// CHECK-NEXT:       },
222// CHECK-NEXT:       intermediates: [ ]
223// CHECK-NEXT:     } ],
224// CHECK-NEXT:     name: "main"
225// CHECK-NEXT:   } ],
226// CHECK-NEXT:   description: "MLIR Converted.",
227// CHECK-NEXT:   buffers: [ {
228// CHECK-EMPTY:
229// CHECK-NEXT:   }, {
230// CHECK-EMPTY:
231// CHECK-NEXT:   }, {
232// CHECK-EMPTY:
233// CHECK-NEXT:   }, {
234// CHECK-EMPTY:
235// CHECK-NEXT:   }, {
236// CHECK-EMPTY:
237// CHECK-NEXT:   }, {
238// CHECK-EMPTY:
239// CHECK-NEXT:   }, {
240// CHECK-EMPTY:
241// CHECK-NEXT:   }, {
242// CHECK-EMPTY:
243// CHECK-NEXT:   }, {
244// CHECK-EMPTY:
245// CHECK-NEXT:   }, {
246// CHECK-EMPTY:
247// CHECK-NEXT:   }, {
248// CHECK-EMPTY:
249// CHECK-NEXT:   }, {
250// CHECK-EMPTY:
251// CHECK-NEXT:   }, {
252// CHECK-EMPTY:
253// CHECK-NEXT:   }, {
254// CHECK-EMPTY:
255// CHECK-NEXT:   }, {
256// CHECK-EMPTY:
257// CHECK-NEXT:   }, {
258// CHECK-EMPTY:
259// CHECK-NEXT:   }, {
260// CHECK-EMPTY:
261// CHECK-NEXT:   }, {
262// CHECK-EMPTY:
263// CHECK-NEXT:   }, {
264// CHECK-EMPTY:
265// CHECK-NEXT:   }, {
266// CHECK-EMPTY:
267// CHECK-NEXT:   }, {
268// CHECK-EMPTY:
269// CHECK-NEXT:   }, {
270// CHECK-EMPTY:
271// CHECK-NEXT:   }, {
272// CHECK-EMPTY:
273// CHECK-NEXT:   }, {
274// CHECK-NEXT:     data: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
275// CHECK-NEXT:   }, {
276// CHECK-NEXT:     data: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
277// CHECK-NEXT:   }, {
278// CHECK-EMPTY:
279// CHECK-NEXT:   }, {
280// CHECK-NEXT:     data: [ 49, 46, 55, 46, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
281// CHECK-NEXT:   } ],
282// CHECK-NEXT:   metadata: [ {
283// CHECK-NEXT:   name: "min_runtime_version",
284// CHECK-NEXT:   buffer: 26
285// CHECK-NEXT:   } ]
286// CHECK-NEXT:   signature_defs: [ ]
287// CHECK-NEXT: }
288// CHECK-EMPTY:
289
290
291^bb0(%arg0: tensor<1x4xf32>, %arg1: tensor<4x4xf32>, %arg2: tensor<4x4xf32>, %arg3: tensor<4x4xf32>, %arg4: tensor<4x4xf32>, %arg5: tensor<4x4xf32>, %arg6: tensor<4x4xf32>, %arg7: tensor<4x4xf32>, %arg8: tensor<4x4xf32>, %arg9: tensor<4xf32>, %arg10: tensor<4xf32>, %arg11: tensor<4xf32>, %arg12: tensor<1x4xf32>, %arg13: tensor<4xf32>, %arg14: tensor<4xf32>, %arg15: tensor<4xf32>, %arg16: tensor<4x4xf32>, %arg17: tensor<4xf32>, %arg18: tensor<4xf32>, %arg19: tensor<4xf32>, %arg20: tensor<4xf32>, %arg21: tensor<4xf32>):
292  %cst0 = "tfl.pseudo_const" () {value = dense<0.0> : tensor<1x4xf32>} : () -> tensor<1x4xf32> loc("Const")
293  %cst1 = "tfl.pseudo_const" () {value = dense<0.0> : tensor<1x4xf32>} : () -> tensor<1x4xf32> loc("Const")
294  %24 = "tfl.lstm"(%arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10, %arg11, %arg12, %arg13, %arg14, %arg15, %arg16, %arg17, %cst0, %cst1, %arg18, %arg19, %arg20, %arg21) ({}) {cell_clip = 0.000000e+00 : f32, fused_activation_function = "NONE", kernel_type = #tfl<lstm_kernel_type_attr FULL>, proj_clip = 0.000000e+00 : f32} : (tensor<1x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<1x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4x4xf32>, tensor<4xf32>, tensor<1x4xf32>, tensor<1x4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>, tensor<4xf32>) -> tensor<1x4xf32>
295  func.return %24 : tensor<1x4xf32>
296}
297