blob: acf24a2d3a6feb512eb17a2d5a5d90b2f885fb4d [file] [log] [blame]
Matteo Martincigh992d6dc2019-01-10 17:34:20 +00001//
Teresa Charlin52664732020-06-29 16:27:03 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Matteo Martincigh992d6dc2019-01-10 17:34:20 +00003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Francis Murtaghcae45682021-04-26 10:07:49 +01008#include <armnn/backends/ILayerSupport.hpp>
Matteo Martincigh992d6dc2019-01-10 17:34:20 +00009
10namespace armnn
11{
12
13class LayerSupportBase : public ILayerSupport
14{
15public:
Cathal Corbett34b429c2021-12-24 12:24:40 +000016
17 bool IsLayerSupported(const LayerType& type,
18 const std::vector<TensorInfo>& infos,
19 const BaseDescriptor& descriptor,
20 const Optional<LstmInputParamsInfo>& lstmParamsInfo = EmptyOptional(),
21 const Optional<QuantizedLstmInputParamsInfo>& quantizedLstmParamsInfo = EmptyOptional(),
22 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
23
Jim Flynn5a3d2002022-07-31 18:00:31 +010024 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000025 bool IsActivationSupported(const TensorInfo& input,
26 const TensorInfo& output,
27 const ActivationDescriptor& descriptor,
28 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
29
Jim Flynn5a3d2002022-07-31 18:00:31 +010030 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000031 bool IsAdditionSupported(const TensorInfo& input0,
32 const TensorInfo& input1,
33 const TensorInfo& output,
34 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
35
Jim Flynn5a3d2002022-07-31 18:00:31 +010036 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Nikhil Rajee391d52019-09-05 17:50:44 +010037 bool IsArgMinMaxSupported(const TensorInfo& input,
38 const TensorInfo& output,
39 const ArgMinMaxDescriptor& descriptor,
40 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
41
Jim Flynn5a3d2002022-07-31 18:00:31 +010042 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000043 bool IsBatchNormalizationSupported(const TensorInfo& input,
44 const TensorInfo& output,
45 const TensorInfo& mean,
46 const TensorInfo& var,
47 const TensorInfo& beta,
48 const TensorInfo& gamma,
49 const BatchNormalizationDescriptor& descriptor,
50 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
51
Jim Flynn5a3d2002022-07-31 18:00:31 +010052 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000053 bool IsBatchToSpaceNdSupported(const TensorInfo& input,
54 const TensorInfo& output,
55 const BatchToSpaceNdDescriptor& descriptor,
56 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
57
Jim Flynn5a3d2002022-07-31 18:00:31 +010058 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
mathad01b392e982021-04-07 12:07:30 +010059 bool IsCastSupported(const TensorInfo& input,
60 const TensorInfo& output,
61 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
62
Jim Flynn5a3d2002022-07-31 18:00:31 +010063 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Simon Obute51f67772021-09-03 15:50:13 +010064 bool IsChannelShuffleSupported(const TensorInfo& input,
65 const TensorInfo& output,
66 const ChannelShuffleDescriptor& descriptor,
67 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
68
Jim Flynn5a3d2002022-07-31 18:00:31 +010069 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010070 bool IsComparisonSupported(const TensorInfo& input0,
71 const TensorInfo& input1,
72 const TensorInfo& output,
73 const ComparisonDescriptor& descriptor,
74 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
75
Jim Flynn5a3d2002022-07-31 18:00:31 +010076 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Jim Flynn906f9462019-05-10 13:55:21 +010077 bool IsConcatSupported(const std::vector<const TensorInfo*> inputs,
78 const TensorInfo& output,
79 const OriginsDescriptor& descriptor,
80 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
81
Jim Flynn5a3d2002022-07-31 18:00:31 +010082 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000083 bool IsConstantSupported(const TensorInfo& output,
84 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
85
Jim Flynn5a3d2002022-07-31 18:00:31 +010086 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000087 bool IsConvertFp16ToFp32Supported(const TensorInfo& input,
88 const TensorInfo& output,
89 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
90
Jim Flynn5a3d2002022-07-31 18:00:31 +010091 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh3d6898c2019-01-15 16:11:44 +000092 bool IsConvertFp32ToFp16Supported(
93 const TensorInfo& input,
94 const TensorInfo& output,
95 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000096
Jim Flynn5a3d2002022-07-31 18:00:31 +010097 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000098 bool IsConvolution2dSupported(const TensorInfo& input,
99 const TensorInfo& output,
100 const Convolution2dDescriptor& descriptor,
101 const TensorInfo& weights,
102 const Optional<TensorInfo>& biases,
103 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
104
Jim Flynn5a3d2002022-07-31 18:00:31 +0100105 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matthew Sloyanb63a3112021-09-08 13:05:51 +0100106 bool IsConvolution3dSupported(const TensorInfo& input,
107 const TensorInfo& output,
108 const Convolution3dDescriptor& descriptor,
109 const TensorInfo& weights,
110 const Optional<TensorInfo>& biases,
111 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
112
Jim Flynn5a3d2002022-07-31 18:00:31 +0100113 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000114 bool IsDebugSupported(const TensorInfo& input,
115 const TensorInfo& output,
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000116 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
117
Jim Flynn5a3d2002022-07-31 18:00:31 +0100118 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tardd6247f2019-09-19 14:31:17 +0100119 bool IsDepthToSpaceSupported(const TensorInfo& input,
120 const TensorInfo& output,
121 const DepthToSpaceDescriptor& descriptor,
122 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
123
Jim Flynn5a3d2002022-07-31 18:00:31 +0100124 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000125 bool IsDepthwiseConvolutionSupported(const TensorInfo& input,
126 const TensorInfo& output,
127 const DepthwiseConvolution2dDescriptor& descriptor,
128 const TensorInfo& weights,
129 const Optional<TensorInfo>& biases,
130 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
131
Jim Flynn5a3d2002022-07-31 18:00:31 +0100132 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Nattapat Chaimanowonge4294fd2019-03-28 09:56:53 +0000133 bool IsDequantizeSupported(const TensorInfo& input,
134 const TensorInfo& output,
135 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
136
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000137 bool IsDetectionPostProcessSupported(const TensorInfo& boxEncodings,
138 const TensorInfo& scores,
139 const TensorInfo& anchors,
140 const TensorInfo& detectionBoxes,
141 const TensorInfo& detectionClasses,
142 const TensorInfo& detectionScores,
143 const TensorInfo& numDetections,
Narumol Prangnawarat94dd5d82019-01-23 18:06:26 +0000144 const DetectionPostProcessDescriptor& descriptor,
145 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
146
Jim Flynn5a3d2002022-07-31 18:00:31 +0100147 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigheac246d2019-05-14 09:11:03 +0100148 bool IsDilatedDepthwiseConvolutionSupported(const TensorInfo& input,
149 const TensorInfo& output,
150 const DepthwiseConvolution2dDescriptor& descriptor,
151 const TensorInfo& weights,
152 const Optional<TensorInfo>& biases,
153 Optional<std::string&> reasonIfUnsupported =
154 EmptyOptional()) const override;
155
Jim Flynn5a3d2002022-07-31 18:00:31 +0100156 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000157 bool IsDivisionSupported(const TensorInfo& input0,
158 const TensorInfo& input1,
159 const TensorInfo& output,
160 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
161
Jim Flynn5a3d2002022-07-31 18:00:31 +0100162 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
josh minor4a3c6102020-01-06 16:40:46 -0600163 bool IsElementwiseUnarySupported(const TensorInfo& input,
164 const TensorInfo& output,
165 const ElementwiseUnaryDescriptor& descriptor,
166 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
167
Jim Flynn5a3d2002022-07-31 18:00:31 +0100168 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000169 bool IsFakeQuantizationSupported(const TensorInfo& input,
170 const FakeQuantizationDescriptor& descriptor,
171 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
172
Jim Flynn5a3d2002022-07-31 18:00:31 +0100173 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Ryan OSheaec6c6802020-06-05 17:17:06 +0100174 virtual bool IsFillSupported(const TensorInfo& input,
175 const TensorInfo& output,
176 const FillDescriptor& descriptor,
177 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
178
Jim Flynn5a3d2002022-07-31 18:00:31 +0100179 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000180 bool IsFloorSupported(const TensorInfo& input,
181 const TensorInfo& output,
182 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
183
Jim Flynn5a3d2002022-07-31 18:00:31 +0100184 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000185 bool IsFullyConnectedSupported(const TensorInfo& input,
186 const TensorInfo& output,
187 const TensorInfo& weights,
188 const TensorInfo& biases,
189 const FullyConnectedDescriptor& descriptor,
190 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
191
Jim Flynn5a3d2002022-07-31 18:00:31 +0100192 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Teresa Charlin52664732020-06-29 16:27:03 +0100193 bool IsGatherSupported(const TensorInfo& input0,
194 const TensorInfo& input1,
195 const TensorInfo& output,
196 const GatherDescriptor& descriptor,
197 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
198
Jim Flynn5a3d2002022-07-31 18:00:31 +0100199 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000200 bool IsInputSupported(const TensorInfo& input,
201 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
202
Jim Flynn5a3d2002022-07-31 18:00:31 +0100203 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Kevin Mayce5045a2019-10-02 14:07:47 +0100204 bool IsInstanceNormalizationSupported(
205 const TensorInfo& input,
206 const TensorInfo& output,
207 const InstanceNormalizationDescriptor& descriptor,
208 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
209
Jim Flynn5a3d2002022-07-31 18:00:31 +0100210 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000211 bool IsL2NormalizationSupported(const TensorInfo& input,
212 const TensorInfo& output,
213 const L2NormalizationDescriptor& descriptor,
214 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
215
Jim Flynn5a3d2002022-07-31 18:00:31 +0100216 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
James Conroyaba90cd2020-11-06 16:28:18 +0000217 bool IsLogicalBinarySupported(const TensorInfo& input0,
218 const TensorInfo& input1,
219 const TensorInfo& output,
220 const LogicalBinaryDescriptor& descriptor,
221 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
222
Jim Flynn5a3d2002022-07-31 18:00:31 +0100223 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
James Conroyaba90cd2020-11-06 16:28:18 +0000224 bool IsLogicalUnarySupported(const TensorInfo& input,
225 const TensorInfo& output,
226 const ElementwiseUnaryDescriptor& descriptor,
227 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
228
Jim Flynn5a3d2002022-07-31 18:00:31 +0100229 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tarf982dea2019-10-11 14:07:53 +0100230 bool IsLogSoftmaxSupported(const TensorInfo& input,
231 const TensorInfo& output,
232 const LogSoftmaxDescriptor& descriptor,
233 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
234
Jim Flynn5a3d2002022-07-31 18:00:31 +0100235 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000236 bool IsLstmSupported(const TensorInfo& input,
237 const TensorInfo& outputStateIn,
238 const TensorInfo& cellStateIn,
239 const TensorInfo& scratchBuffer,
240 const TensorInfo& outputStateOut,
241 const TensorInfo& cellStateOut,
242 const TensorInfo& output,
243 const LstmDescriptor& descriptor,
Jan Eilersd01a83c2019-07-03 18:20:40 +0100244 const LstmInputParamsInfo& paramsInfo,
245 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000246
Jim Flynn5a3d2002022-07-31 18:00:31 +0100247 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000248 bool IsMaximumSupported(const TensorInfo& input0,
249 const TensorInfo& input1,
250 const TensorInfo& output,
251 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
252
Jim Flynn5a3d2002022-07-31 18:00:31 +0100253 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000254 bool IsMeanSupported(const TensorInfo& input,
255 const TensorInfo& output,
256 const MeanDescriptor& descriptor,
257 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
258
259 bool IsMemCopySupported(const TensorInfo& input,
260 const TensorInfo& output,
261 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
262
Derek Lambertif674aa02019-08-01 15:56:25 +0100263 bool IsMemImportSupported(const TensorInfo& input,
264 const TensorInfo& output,
265 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
266
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +0100267 bool IsMergeSupported(const TensorInfo& input0,
268 const TensorInfo& input1,
269 const TensorInfo& output,
270 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
271
Jim Flynn5a3d2002022-07-31 18:00:31 +0100272 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000273 bool IsMinimumSupported(const TensorInfo& input0,
274 const TensorInfo& input1,
275 const TensorInfo& output,
276 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
277
Jim Flynn5a3d2002022-07-31 18:00:31 +0100278 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000279 bool IsMultiplicationSupported(const TensorInfo& input0,
280 const TensorInfo& input1,
281 const TensorInfo& output,
282 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
283
Jim Flynn5a3d2002022-07-31 18:00:31 +0100284 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000285 bool IsNormalizationSupported(const TensorInfo& input,
286 const TensorInfo& output,
287 const NormalizationDescriptor& descriptor,
288 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
289
Jim Flynn5a3d2002022-07-31 18:00:31 +0100290 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000291 bool IsOutputSupported(const TensorInfo& output,
292 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
293
Jim Flynn5a3d2002022-07-31 18:00:31 +0100294 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000295 bool IsPadSupported(const TensorInfo& input,
296 const TensorInfo& output,
297 const PadDescriptor& descriptor,
298 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
299
Jim Flynn5a3d2002022-07-31 18:00:31 +0100300 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000301 bool IsPermuteSupported(const TensorInfo& input,
302 const TensorInfo& output,
303 const PermuteDescriptor& descriptor,
304 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
305
Jim Flynn5a3d2002022-07-31 18:00:31 +0100306 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000307 bool IsPooling2dSupported(const TensorInfo& input,
308 const TensorInfo& output,
309 const Pooling2dDescriptor& descriptor,
310 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
311
Jim Flynn5a3d2002022-07-31 18:00:31 +0100312 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Tamás Nyíri7b885b32021-10-26 14:47:57 +0100313 bool IsPooling3dSupported(const TensorInfo& input,
314 const TensorInfo& output,
315 const Pooling3dDescriptor& descriptor,
316 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
317
Jim Flynn5a3d2002022-07-31 18:00:31 +0100318 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh49124022019-01-11 13:25:59 +0000319 bool IsPreCompiledSupported(const TensorInfo& input,
320 const PreCompiledDescriptor& descriptor,
321 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
322
Jim Flynn5a3d2002022-07-31 18:00:31 +0100323 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh0e406ee2019-06-12 15:42:18 +0100324 bool IsPreluSupported(const TensorInfo& input,
325 const TensorInfo& alpha,
326 const TensorInfo& output,
327 Optional<std::string &> reasonIfUnsupported) const override;
328
Jim Flynn5a3d2002022-07-31 18:00:31 +0100329 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Derek Lambertia9cca6a2019-03-25 15:41:58 +0000330 bool IsQuantizeSupported(const TensorInfo& input,
331 const TensorInfo& output,
332 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
333
Jim Flynn5a3d2002022-07-31 18:00:31 +0100334 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
James Conroy586a9aa2020-03-20 08:49:33 +0000335 bool IsQLstmSupported(const TensorInfo& input,
336 const TensorInfo& previousOutputIn,
337 const TensorInfo& previousCellStateIn,
338 const TensorInfo& outputStateOut,
339 const TensorInfo& cellStateOut,
340 const TensorInfo& output,
341 const QLstmDescriptor& descriptor,
342 const LstmInputParamsInfo& paramsInfo,
343 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
344
James Conroyee18dc82019-07-17 11:27:46 +0100345 bool IsQuantizedLstmSupported(const TensorInfo& input,
346 const TensorInfo& previousCellStateIn,
347 const TensorInfo& previousOutputIn,
348 const TensorInfo& cellStateOut,
349 const TensorInfo& output,
350 const QuantizedLstmInputParamsInfo& paramsInfo,
351 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
352
Jim Flynn5a3d2002022-07-31 18:00:31 +0100353 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Finn Williams2605b232020-06-10 15:53:46 +0100354 bool IsRankSupported(const TensorInfo& input,
355 const TensorInfo& output,
356 Optional<std::string&> reasonIfUnsupported) const override;
357
Jim Flynn5a3d2002022-07-31 18:00:31 +0100358 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +0000359 bool IsReduceSupported(const TensorInfo& input,
360 const TensorInfo& output,
361 const ReduceDescriptor& descriptor,
362 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
363
Jim Flynn5a3d2002022-07-31 18:00:31 +0100364 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000365 bool IsReshapeSupported(const TensorInfo& input,
Kevin Maya023c402019-12-12 17:28:05 +0000366 const TensorInfo& output,
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000367 const ReshapeDescriptor& descriptor,
368 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
369
Jim Flynn5a3d2002022-07-31 18:00:31 +0100370 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Teresa Charlina9075df2019-06-27 15:41:57 +0100371 bool IsResizeSupported(const TensorInfo& input,
372 const TensorInfo& output,
373 const ResizeDescriptor& descriptor,
374 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
375
Keith Davis3ae3f972021-05-21 16:33:48 +0100376 bool IsShapeSupported(const TensorInfo& input,
377 const TensorInfo& output,
378 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
379
Jim Flynn5a3d2002022-07-31 18:00:31 +0100380 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tar636ab402019-09-16 14:27:45 +0100381 bool IsSliceSupported(const TensorInfo& input,
382 const TensorInfo& output,
383 const SliceDescriptor& descriptor,
384 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
385
Jim Flynn5a3d2002022-07-31 18:00:31 +0100386 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000387 bool IsSoftmaxSupported(const TensorInfo& input,
388 const TensorInfo& output,
389 const SoftmaxDescriptor& descriptor,
390 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
391
Jim Flynn5a3d2002022-07-31 18:00:31 +0100392 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000393 bool IsSpaceToBatchNdSupported(const TensorInfo& input,
394 const TensorInfo& output,
395 const SpaceToBatchNdDescriptor& descriptor,
396 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
397
Jim Flynn5a3d2002022-07-31 18:00:31 +0100398 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tar972af152019-06-11 14:14:03 +0100399 bool IsSpaceToDepthSupported(const TensorInfo& input,
400 const TensorInfo& output,
401 const SpaceToDepthDescriptor& descriptor,
402 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
403
Jim Flynn5a3d2002022-07-31 18:00:31 +0100404 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Narumol Prangnawarat15eb5832019-05-20 15:31:05 +0100405 bool IsSplitterSupported(const TensorInfo& input,
406 const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
407 const ViewsDescriptor& descriptor,
408 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
409
Jim Flynn5a3d2002022-07-31 18:00:31 +0100410 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matthew Jackson81e601c2019-07-11 12:07:09 +0100411 bool IsStackSupported(const std::vector<const TensorInfo*>& inputs,
Matthew Jackson2b8c1da2019-07-04 14:59:16 +0100412 const TensorInfo& output,
413 const StackDescriptor& descriptor,
414 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
415
Derek Lamberti013c3902019-10-21 10:46:16 +0100416 bool IsStandInSupported(const std::vector<const TensorInfo*>& inputs,
417 const std::vector<const TensorInfo*>& outputs,
418 const StandInDescriptor& descriptor,
419 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
420
Jim Flynn5a3d2002022-07-31 18:00:31 +0100421 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000422 bool IsStridedSliceSupported(const TensorInfo& input,
423 const TensorInfo& output,
424 const StridedSliceDescriptor& descriptor,
425 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
426
Jim Flynn5a3d2002022-07-31 18:00:31 +0100427 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000428 bool IsSubtractionSupported(const TensorInfo& input0,
429 const TensorInfo& input1,
430 const TensorInfo& output,
431 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Sadik Armaganeff363d2019-04-05 15:25:46 +0100432
Jim Flynn5a3d2002022-07-31 18:00:31 +0100433 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Sadik Armaganeff363d2019-04-05 15:25:46 +0100434 bool IsSwitchSupported(const TensorInfo& input0,
435 const TensorInfo& input1,
436 const TensorInfo& output0,
437 const TensorInfo& output1,
438 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Aron Virginas-Tar639fb042019-06-20 14:28:19 +0100439
Jim Flynn5a3d2002022-07-31 18:00:31 +0100440 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Aron Virginas-Tar639fb042019-06-20 14:28:19 +0100441 bool IsTransposeConvolution2dSupported(
442 const TensorInfo& input,
443 const TensorInfo& output,
444 const TransposeConvolution2dDescriptor& descriptor,
445 const TensorInfo& weights,
446 const Optional<TensorInfo>& biases,
447 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Mike Kellyc9ea45a2020-02-28 18:11:58 +0000448
Jim Flynn5a3d2002022-07-31 18:00:31 +0100449 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Mike Kellyc9ea45a2020-02-28 18:11:58 +0000450 bool IsTransposeSupported(const TensorInfo& input,
451 const TensorInfo& output,
452 const TransposeDescriptor& descriptor,
453 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
454
Jim Flynn5a3d2002022-07-31 18:00:31 +0100455 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "23.08")
Narumol Prangnawarat8ed39ae2021-07-15 16:16:25 +0100456 bool IsUnidirectionalSequenceLstmSupported(
457 const TensorInfo& input,
458 const TensorInfo& outputStateIn,
459 const TensorInfo& cellStateIn,
Mike Kelly12994962022-04-21 11:57:09 +0100460 const TensorInfo& outputStateOut,
461 const TensorInfo& cellStateOut,
Narumol Prangnawarat8ed39ae2021-07-15 16:16:25 +0100462 const TensorInfo& output,
Narumol Prangnawarat8ed39ae2021-07-15 16:16:25 +0100463 const LstmDescriptor& descriptor,
464 const LstmInputParamsInfo& paramsInfo,
465 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
466
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000467};
468
469} // namespace armnn