xref: /aosp_15_r20/external/armnn/include/armnn/backends/ILayerSupport.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <armnn/Deprecated.hpp>
8 #include <armnn/Descriptors.hpp>
9 #include <armnn/LstmParams.hpp>
10 #include <armnn/Optional.hpp>
11 #include <armnn/QuantizedLstmParams.hpp>
12 
13 #include <cctype>
14 #include <functional>
15 #include <memory>
16 #include <vector>
17 
18 namespace armnn
19 {
20 
21 class TensorInfo;
22 
23 class ILayerSupport
24 {
25 protected:
ILayerSupport()26     ILayerSupport() {}
~ILayerSupport()27     virtual ~ILayerSupport() {}
28 
29 public:
30     virtual bool IsLayerSupported(const LayerType& type,
31                                   const std::vector<TensorInfo>& infos,
32                                   const BaseDescriptor& descriptor,
33                                   const Optional<LstmInputParamsInfo>& lstmParamsInfo = EmptyOptional(),
34                                   const Optional<QuantizedLstmInputParamsInfo>& quantizedLstmParamsInfo =
35                                       EmptyOptional(),
36                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
37 
38     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
39                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
40     virtual bool IsActivationSupported(const TensorInfo& input,
41                                        const TensorInfo& output,
42                                        const ActivationDescriptor& descriptor,
43                                        Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
44 
45     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
46                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
47     virtual bool IsAdditionSupported(const TensorInfo& input0,
48                                      const TensorInfo& input1,
49                                      const TensorInfo& output,
50                                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
51 
52     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
53                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
54     virtual bool IsArgMinMaxSupported(const TensorInfo& input,
55                                       const TensorInfo& output,
56                                       const ArgMinMaxDescriptor& descriptor,
57                                       Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
58 
59     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
60                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
61     virtual bool IsBatchNormalizationSupported(const TensorInfo& input,
62                                                const TensorInfo& output,
63                                                const TensorInfo& mean,
64                                                const TensorInfo& var,
65                                                const TensorInfo& beta,
66                                                const TensorInfo& gamma,
67                                                const BatchNormalizationDescriptor& descriptor,
68                                                Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
69 
70     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
71                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
72     virtual bool IsBatchToSpaceNdSupported(const TensorInfo& input,
73                                            const TensorInfo& output,
74                                            const BatchToSpaceNdDescriptor& descriptor,
75                                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
76 
77     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
78                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
79     virtual bool IsCastSupported(const TensorInfo& input,
80                                  const TensorInfo& output,
81                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
82 
83     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
84                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
85     virtual bool IsChannelShuffleSupported(const TensorInfo& input,
86                                            const TensorInfo& output,
87                                            const ChannelShuffleDescriptor& descriptor,
88                                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
89 
90     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
91                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
92     virtual bool IsComparisonSupported(const TensorInfo& input0,
93                                        const TensorInfo& input1,
94                                        const TensorInfo& output,
95                                        const ComparisonDescriptor& descriptor,
96                                        Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
97 
98     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
99                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
100     virtual bool IsConcatSupported(const std::vector<const TensorInfo*> inputs,
101                                    const TensorInfo& output,
102                                    const OriginsDescriptor& descriptor,
103                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
104 
105     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
106                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
107     virtual bool IsConstantSupported(const TensorInfo& output,
108                                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
109 
110     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
111                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
112     virtual bool IsConvertFp16ToFp32Supported(const TensorInfo& input,
113                                               const TensorInfo& output,
114                                               Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
115 
116     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
117                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
118     virtual bool IsConvertFp32ToFp16Supported(const TensorInfo& input,
119                                               const TensorInfo& output,
120                                               Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
121 
122     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
123                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
124     virtual bool IsConvolution2dSupported(const TensorInfo& input,
125                                           const TensorInfo& output,
126                                           const Convolution2dDescriptor& descriptor,
127                                           const TensorInfo& weights,
128                                           const Optional<TensorInfo>& biases,
129                                           Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
130 
131     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
132                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
133     virtual bool IsConvolution3dSupported(const TensorInfo& input,
134                                           const TensorInfo& output,
135                                           const Convolution3dDescriptor& descriptor,
136                                           const TensorInfo& weights,
137                                           const Optional<TensorInfo>& biases,
138                                           Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
139 
140     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
141                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
142     virtual bool IsDebugSupported(const TensorInfo& input,
143                                   const TensorInfo& output,
144                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
145 
146     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
147                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
148     virtual bool IsDepthToSpaceSupported(const TensorInfo& input,
149                                          const TensorInfo& output,
150                                          const DepthToSpaceDescriptor& descriptor,
151                                          Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
152 
153     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
154                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
155     virtual bool IsDepthwiseConvolutionSupported(
156                      const TensorInfo& input,
157                      const TensorInfo& output,
158                      const DepthwiseConvolution2dDescriptor& descriptor,
159                      const TensorInfo& weights,
160                      const Optional<TensorInfo>& biases,
161                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
162 
163     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
164                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
165     virtual bool IsDequantizeSupported(const TensorInfo& input,
166                                        const TensorInfo& output,
167                                        Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
168 
169     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
170                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
171     virtual bool IsDetectionPostProcessSupported(const TensorInfo& boxEncodings,
172                                                  const TensorInfo& scores,
173                                                  const TensorInfo& anchors,
174                                                  const TensorInfo& detectionBoxes,
175                                                  const TensorInfo& detectionClasses,
176                                                  const TensorInfo& detectionScores,
177                                                  const TensorInfo& numDetections,
178                                                  const DetectionPostProcessDescriptor& descriptor,
179                                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
180 
181     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
182                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
183     virtual bool IsDilatedDepthwiseConvolutionSupported(
184                     const TensorInfo& input,
185                     const TensorInfo& output,
186                     const DepthwiseConvolution2dDescriptor& descriptor,
187                     const TensorInfo& weights,
188                     const Optional<TensorInfo>& biases,
189                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
190 
191     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
192                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
193     virtual bool IsDivisionSupported(const TensorInfo& input0,
194                                      const TensorInfo& input1,
195                                      const TensorInfo& output,
196                                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
197 
198     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
199                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
200     virtual bool IsElementwiseUnarySupported(const TensorInfo& input,
201                                              const TensorInfo& output,
202                                              const ElementwiseUnaryDescriptor& descriptor,
203                                              Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
204 
205     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
206                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
207     virtual bool IsFakeQuantizationSupported(const TensorInfo& input,
208                                              const FakeQuantizationDescriptor& descriptor,
209                                              Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
210 
211     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
212                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
213     virtual bool IsFillSupported(const TensorInfo& input,
214                                  const TensorInfo& output,
215                                  const FillDescriptor& descriptor,
216                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
217 
218     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
219                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
220     virtual bool IsFloorSupported(const TensorInfo& input,
221                                   const TensorInfo& output,
222                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
223 
224     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
225                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
226     virtual bool IsFullyConnectedSupported(const TensorInfo& input,
227                                            const TensorInfo& output,
228                                            const TensorInfo& weights,
229                                            const TensorInfo& biases,
230                                            const FullyConnectedDescriptor& descriptor,
231                                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
232 
233     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
234                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
235     virtual bool IsGatherSupported(const TensorInfo& input0,
236                                    const TensorInfo& input1,
237                                    const TensorInfo& output,
238                                    const GatherDescriptor& descriptor,
239                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
240 
241     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
242                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
243     virtual bool IsInputSupported(const TensorInfo& input,
244                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
245 
246     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
247                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
248     virtual bool IsInstanceNormalizationSupported(
249         const TensorInfo& input,
250         const TensorInfo& output,
251         const InstanceNormalizationDescriptor& descriptor,
252         Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
253 
254     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
255                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
256     virtual bool IsL2NormalizationSupported(const TensorInfo& input,
257                                             const TensorInfo& output,
258                                             const L2NormalizationDescriptor& descriptor,
259                                             Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
260 
261     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
262                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
263     virtual bool IsLogicalBinarySupported(const TensorInfo& input0,
264                                           const TensorInfo& input1,
265                                           const TensorInfo& output,
266                                           const LogicalBinaryDescriptor& descriptor,
267                                           Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
268 
269     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
270                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
271     virtual bool IsLogicalUnarySupported(const TensorInfo& input,
272                                          const TensorInfo& output,
273                                          const ElementwiseUnaryDescriptor& descriptor,
274                                          Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
275 
276     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
277                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
278     virtual bool IsLogSoftmaxSupported(const TensorInfo& input,
279                                        const TensorInfo& output,
280                                        const LogSoftmaxDescriptor& descriptor,
281                                        Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
282 
283     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
284                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
285     virtual bool IsLstmSupported(const TensorInfo& input,
286                                  const TensorInfo& outputStateIn,
287                                  const TensorInfo& cellStateIn,
288                                  const TensorInfo& scratchBuffer,
289                                  const TensorInfo& outputStateOut,
290                                  const TensorInfo& cellStateOut,
291                                  const TensorInfo& output,
292                                  const LstmDescriptor& descriptor,
293                                  const LstmInputParamsInfo& paramsInfo,
294                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
295 
296     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
297                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
298     virtual bool IsMaximumSupported(const TensorInfo& input0,
299                                     const TensorInfo& input1,
300                                     const TensorInfo& output,
301                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
302 
303     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
304                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
305     virtual bool IsMeanSupported(const TensorInfo& input,
306                                  const TensorInfo& output,
307                                  const MeanDescriptor& descriptor,
308                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
309 
310     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
311                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
312     virtual bool IsMemCopySupported(const TensorInfo& input,
313                                     const TensorInfo& output,
314                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
315 
316     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
317                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
318     virtual bool IsMemImportSupported(const TensorInfo& input,
319                                       const TensorInfo& output,
320                                       Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
321 
322     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
323                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
324     virtual bool IsMergeSupported(const TensorInfo& input0,
325                                   const TensorInfo& input1,
326                                   const TensorInfo& output,
327                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
328 
329     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
330                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
331     virtual bool IsMinimumSupported(const TensorInfo& input0,
332                                     const TensorInfo& input1,
333                                     const TensorInfo& ouput,
334                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
335 
336     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
337                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
338     virtual bool IsMultiplicationSupported(const TensorInfo& input0,
339                                            const TensorInfo& input1,
340                                            const TensorInfo& output,
341                                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
342 
343     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
344                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
345     virtual bool IsNormalizationSupported(const TensorInfo& input,
346                                           const TensorInfo& output,
347                                           const NormalizationDescriptor& descriptor,
348                                           Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
349 
350     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
351                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
352     virtual bool IsOutputSupported(const TensorInfo& output,
353                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
354 
355     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
356                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
357     virtual bool IsPadSupported(const TensorInfo& input,
358                                 const TensorInfo& output,
359                                 const PadDescriptor& descriptor,
360                                 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
361 
362     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
363                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
364     virtual bool IsPermuteSupported(const TensorInfo& input,
365                                     const TensorInfo& output,
366                                     const PermuteDescriptor& descriptor,
367                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
368 
369     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
370                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
371     virtual bool IsPooling2dSupported(const TensorInfo& input,
372                                       const TensorInfo& output,
373                                       const Pooling2dDescriptor& descriptor,
374                                       Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
375 
376     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
377                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
378     virtual bool IsPooling3dSupported(const TensorInfo& input,
379                                       const TensorInfo& output,
380                                       const Pooling3dDescriptor& descriptor,
381                                       Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
382 
383     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
384                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
385     virtual bool IsPreCompiledSupported(const TensorInfo& input,
386                                         const PreCompiledDescriptor& descriptor,
387                                         Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
388 
389     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
390                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
391     virtual bool IsPreluSupported(const TensorInfo& input,
392                                   const TensorInfo& alpha,
393                                   const TensorInfo& output,
394                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
395 
396     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
397                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
398     virtual bool IsQuantizeSupported(const TensorInfo& input,
399                                      const TensorInfo& output,
400                                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
401 
402     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
403                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
404     virtual bool IsQLstmSupported(const TensorInfo& input,
405                                   const TensorInfo& previousOutputIn,
406                                   const TensorInfo& previousCellStateIn,
407                                   const TensorInfo& outputStateOut,
408                                   const TensorInfo& cellStateOut,
409                                   const TensorInfo& output,
410                                   const QLstmDescriptor& descriptor,
411                                   const LstmInputParamsInfo& paramsInfo,
412                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
413 
414     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
415                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
416     virtual bool IsQuantizedLstmSupported(const TensorInfo& input,
417                                           const TensorInfo& previousCellStateIn,
418                                           const TensorInfo& previousOutputIn,
419                                           const TensorInfo& cellStateOut,
420                                           const TensorInfo& output,
421                                           const QuantizedLstmInputParamsInfo& paramsInfo,
422                                           Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
423 
424     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
425                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
426     virtual bool IsRankSupported(const TensorInfo& input,
427                                  const TensorInfo& output,
428                                  Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
429 
430     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
431                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
432     virtual bool IsReduceSupported(const TensorInfo& input,
433                                    const TensorInfo& output,
434                                    const ReduceDescriptor& descriptor,
435                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
436 
437     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
438                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
439     virtual bool IsReshapeSupported(const TensorInfo& input,
440                                     const TensorInfo& output,
441                                     const ReshapeDescriptor& descriptor,
442                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
443 
444     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
445                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
446     virtual bool IsResizeSupported(const TensorInfo& input,
447                                    const TensorInfo& output,
448                                    const ResizeDescriptor& descriptor,
449                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
450 
451     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
452                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
453     virtual bool IsShapeSupported(const TensorInfo& input,
454                                   const TensorInfo& output,
455                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
456 
457     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
458                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
459     virtual bool IsSliceSupported(const TensorInfo& input,
460                                   const TensorInfo& output,
461                                   const SliceDescriptor& descriptor,
462                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
463 
464     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
465                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
466     virtual bool IsSoftmaxSupported(const TensorInfo& input,
467                                     const TensorInfo& output,
468                                     const SoftmaxDescriptor& descriptor,
469                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
470 
471     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
472                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
473     virtual bool IsSpaceToBatchNdSupported(const TensorInfo& input,
474                                            const TensorInfo& output,
475                                            const SpaceToBatchNdDescriptor& descriptor,
476                                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
477 
478     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
479                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
480     virtual bool IsSpaceToDepthSupported(const TensorInfo& input,
481                                          const TensorInfo& output,
482                                          const SpaceToDepthDescriptor& descriptor,
483                                          Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
484 
485     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
486                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
487     virtual bool IsSplitterSupported(const TensorInfo& input,
488                                      const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
489                                      const ViewsDescriptor& descriptor,
490                                      Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
491 
492     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
493                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
494     virtual bool IsStackSupported(const std::vector<const TensorInfo*>& inputs,
495                                   const TensorInfo& output,
496                                   const StackDescriptor& descriptor,
497                                   Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
498 
499     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
500                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
501     virtual bool IsStandInSupported(const std::vector<const TensorInfo*>& inputs,
502                                     const std::vector<const TensorInfo*>& outputs,
503                                     const StandInDescriptor& descriptor,
504                                     Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
505 
506     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
507                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
508     virtual bool IsStridedSliceSupported(const TensorInfo& input,
509                                          const TensorInfo& output,
510                                          const StridedSliceDescriptor& descriptor,
511                                          Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
512 
513     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
514                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
515     virtual bool IsSubtractionSupported(const TensorInfo& input0,
516                                         const TensorInfo& input1,
517                                         const TensorInfo& output,
518                                         Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
519 
520     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
521                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
522     virtual bool IsSwitchSupported(const TensorInfo& input0,
523                                    const TensorInfo& input1,
524                                    const TensorInfo& output0,
525                                    const TensorInfo& output1,
526                                    Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
527 
528     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
529                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
530     virtual bool IsTransposeConvolution2dSupported(
531         const TensorInfo& input,
532         const TensorInfo& output,
533         const TransposeConvolution2dDescriptor& descriptor,
534         const TensorInfo& weights,
535         const Optional<TensorInfo>& biases,
536         Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
537 
538     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
539                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
540     virtual bool IsTransposeSupported(const TensorInfo& input,
541                                       const TensorInfo& output,
542                                       const TransposeDescriptor& descriptor,
543                                       Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
544 
545     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. "
546                                       "Use ABI Stable IsLayerSupported accepting LayerType argument instead.", "23.08")
547     virtual bool IsUnidirectionalSequenceLstmSupported(
548         const TensorInfo& input,
549         const TensorInfo& outputStateIn,
550         const TensorInfo& cellStateIn,
551         const TensorInfo& outputStateOut,
552         const TensorInfo& cellStateOut,
553         const TensorInfo& output,
554         const LstmDescriptor& descriptor,
555         const LstmInputParamsInfo& paramsInfo,
556         Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
557 
558 }; // class ILayerSupport
559 
560 using ILayerSupportSharedPtr = std::shared_ptr<ILayerSupport>;
561 
562 } // namespace armnn
563