blob: e911c00f95c30e19d404cd41550fad975b6606d6 [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
Francis Murtaghfaf29662022-01-24 17:45:37 +000024 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000030 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000036 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000042 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000052 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000058 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000063 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000069 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000076 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
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
Francis Murtaghfaf29662022-01-24 17:45:37 +000082 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000083 bool IsConstantSupported(const TensorInfo& output,
84 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
85
Narumol Prangnawarat7ddbbae2020-03-13 10:26:05 +000086 bool IsConvertBf16ToFp32Supported(const TensorInfo& input,
87 const TensorInfo& output,
88 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
89
Francis Murtaghfaf29662022-01-24 17:45:37 +000090 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000091 bool IsConvertFp16ToFp32Supported(const TensorInfo& input,
92 const TensorInfo& output,
93 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
94
Narumol Prangnawaratea54a012020-03-16 16:36:10 +000095 bool IsConvertFp32ToBf16Supported(const TensorInfo& input,
96 const TensorInfo& output,
97 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
98
Francis Murtaghfaf29662022-01-24 17:45:37 +000099 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh3d6898c2019-01-15 16:11:44 +0000100 bool IsConvertFp32ToFp16Supported(
101 const TensorInfo& input,
102 const TensorInfo& output,
103 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000104
Francis Murtaghfaf29662022-01-24 17:45:37 +0000105 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000106 bool IsConvolution2dSupported(const TensorInfo& input,
107 const TensorInfo& output,
108 const Convolution2dDescriptor& descriptor,
109 const TensorInfo& weights,
110 const Optional<TensorInfo>& biases,
111 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
112
Francis Murtaghfaf29662022-01-24 17:45:37 +0000113 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matthew Sloyanb63a3112021-09-08 13:05:51 +0100114 bool IsConvolution3dSupported(const TensorInfo& input,
115 const TensorInfo& output,
116 const Convolution3dDescriptor& descriptor,
117 const TensorInfo& weights,
118 const Optional<TensorInfo>& biases,
119 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
120
Francis Murtaghfaf29662022-01-24 17:45:37 +0000121 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000122 bool IsDebugSupported(const TensorInfo& input,
123 const TensorInfo& output,
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000124 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
125
Francis Murtaghfaf29662022-01-24 17:45:37 +0000126 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Aron Virginas-Tardd6247f2019-09-19 14:31:17 +0100127 bool IsDepthToSpaceSupported(const TensorInfo& input,
128 const TensorInfo& output,
129 const DepthToSpaceDescriptor& descriptor,
130 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
131
Francis Murtaghfaf29662022-01-24 17:45:37 +0000132 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000133 bool IsDepthwiseConvolutionSupported(const TensorInfo& input,
134 const TensorInfo& output,
135 const DepthwiseConvolution2dDescriptor& descriptor,
136 const TensorInfo& weights,
137 const Optional<TensorInfo>& biases,
138 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
139
Francis Murtaghfaf29662022-01-24 17:45:37 +0000140 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Nattapat Chaimanowonge4294fd2019-03-28 09:56:53 +0000141 bool IsDequantizeSupported(const TensorInfo& input,
142 const TensorInfo& output,
143 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
144
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000145 bool IsDetectionPostProcessSupported(const TensorInfo& boxEncodings,
146 const TensorInfo& scores,
147 const TensorInfo& anchors,
148 const TensorInfo& detectionBoxes,
149 const TensorInfo& detectionClasses,
150 const TensorInfo& detectionScores,
151 const TensorInfo& numDetections,
Narumol Prangnawarat94dd5d82019-01-23 18:06:26 +0000152 const DetectionPostProcessDescriptor& descriptor,
153 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
154
Francis Murtaghfaf29662022-01-24 17:45:37 +0000155 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigheac246d2019-05-14 09:11:03 +0100156 bool IsDilatedDepthwiseConvolutionSupported(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 =
162 EmptyOptional()) const override;
163
Francis Murtaghfaf29662022-01-24 17:45:37 +0000164 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000165 bool IsDivisionSupported(const TensorInfo& input0,
166 const TensorInfo& input1,
167 const TensorInfo& output,
168 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
169
Francis Murtaghfaf29662022-01-24 17:45:37 +0000170 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
josh minor4a3c6102020-01-06 16:40:46 -0600171 bool IsElementwiseUnarySupported(const TensorInfo& input,
172 const TensorInfo& output,
173 const ElementwiseUnaryDescriptor& descriptor,
174 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
175
Francis Murtaghfaf29662022-01-24 17:45:37 +0000176 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000177 bool IsFakeQuantizationSupported(const TensorInfo& input,
178 const FakeQuantizationDescriptor& descriptor,
179 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
180
Francis Murtaghfaf29662022-01-24 17:45:37 +0000181 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Ryan OSheaec6c6802020-06-05 17:17:06 +0100182 virtual bool IsFillSupported(const TensorInfo& input,
183 const TensorInfo& output,
184 const FillDescriptor& descriptor,
185 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
186
Francis Murtaghfaf29662022-01-24 17:45:37 +0000187 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000188 bool IsFloorSupported(const TensorInfo& input,
189 const TensorInfo& output,
190 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
191
Francis Murtaghfaf29662022-01-24 17:45:37 +0000192 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000193 bool IsFullyConnectedSupported(const TensorInfo& input,
194 const TensorInfo& output,
195 const TensorInfo& weights,
196 const TensorInfo& biases,
197 const FullyConnectedDescriptor& descriptor,
198 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
199
Francis Murtaghfaf29662022-01-24 17:45:37 +0000200 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Teresa Charlin52664732020-06-29 16:27:03 +0100201 bool IsGatherSupported(const TensorInfo& input0,
202 const TensorInfo& input1,
203 const TensorInfo& output,
204 const GatherDescriptor& descriptor,
205 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
206
Francis Murtaghfaf29662022-01-24 17:45:37 +0000207 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000208 bool IsInputSupported(const TensorInfo& input,
209 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
210
Francis Murtaghfaf29662022-01-24 17:45:37 +0000211 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Kevin Mayce5045a2019-10-02 14:07:47 +0100212 bool IsInstanceNormalizationSupported(
213 const TensorInfo& input,
214 const TensorInfo& output,
215 const InstanceNormalizationDescriptor& descriptor,
216 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
217
Francis Murtaghfaf29662022-01-24 17:45:37 +0000218 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000219 bool IsL2NormalizationSupported(const TensorInfo& input,
220 const TensorInfo& output,
221 const L2NormalizationDescriptor& descriptor,
222 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
223
Francis Murtaghfaf29662022-01-24 17:45:37 +0000224 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
James Conroyaba90cd2020-11-06 16:28:18 +0000225 bool IsLogicalBinarySupported(const TensorInfo& input0,
226 const TensorInfo& input1,
227 const TensorInfo& output,
228 const LogicalBinaryDescriptor& descriptor,
229 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
230
Francis Murtaghfaf29662022-01-24 17:45:37 +0000231 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
James Conroyaba90cd2020-11-06 16:28:18 +0000232 bool IsLogicalUnarySupported(const TensorInfo& input,
233 const TensorInfo& output,
234 const ElementwiseUnaryDescriptor& descriptor,
235 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
236
Francis Murtaghfaf29662022-01-24 17:45:37 +0000237 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Aron Virginas-Tarf982dea2019-10-11 14:07:53 +0100238 bool IsLogSoftmaxSupported(const TensorInfo& input,
239 const TensorInfo& output,
240 const LogSoftmaxDescriptor& descriptor,
241 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
242
Francis Murtaghfaf29662022-01-24 17:45:37 +0000243 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000244 bool IsLstmSupported(const TensorInfo& input,
245 const TensorInfo& outputStateIn,
246 const TensorInfo& cellStateIn,
247 const TensorInfo& scratchBuffer,
248 const TensorInfo& outputStateOut,
249 const TensorInfo& cellStateOut,
250 const TensorInfo& output,
251 const LstmDescriptor& descriptor,
Jan Eilersd01a83c2019-07-03 18:20:40 +0100252 const LstmInputParamsInfo& paramsInfo,
253 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000254
Francis Murtaghfaf29662022-01-24 17:45:37 +0000255 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000256 bool IsMaximumSupported(const TensorInfo& input0,
257 const TensorInfo& input1,
258 const TensorInfo& output,
259 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
260
Francis Murtaghfaf29662022-01-24 17:45:37 +0000261 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000262 bool IsMeanSupported(const TensorInfo& input,
263 const TensorInfo& output,
264 const MeanDescriptor& descriptor,
265 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
266
267 bool IsMemCopySupported(const TensorInfo& input,
268 const TensorInfo& output,
269 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
270
Derek Lambertif674aa02019-08-01 15:56:25 +0100271 bool IsMemImportSupported(const TensorInfo& input,
272 const TensorInfo& output,
273 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
274
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +0100275 bool IsMergeSupported(const TensorInfo& input0,
276 const TensorInfo& input1,
277 const TensorInfo& output,
278 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
279
Francis Murtaghfaf29662022-01-24 17:45:37 +0000280 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000281 bool IsMinimumSupported(const TensorInfo& input0,
282 const TensorInfo& input1,
283 const TensorInfo& output,
284 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
285
Francis Murtaghfaf29662022-01-24 17:45:37 +0000286 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000287 bool IsMultiplicationSupported(const TensorInfo& input0,
288 const TensorInfo& input1,
289 const TensorInfo& output,
290 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
291
Francis Murtaghfaf29662022-01-24 17:45:37 +0000292 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000293 bool IsNormalizationSupported(const TensorInfo& input,
294 const TensorInfo& output,
295 const NormalizationDescriptor& descriptor,
296 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
297
Francis Murtaghfaf29662022-01-24 17:45:37 +0000298 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000299 bool IsOutputSupported(const TensorInfo& output,
300 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
301
Francis Murtaghfaf29662022-01-24 17:45:37 +0000302 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000303 bool IsPadSupported(const TensorInfo& input,
304 const TensorInfo& output,
305 const PadDescriptor& descriptor,
306 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
307
Francis Murtaghfaf29662022-01-24 17:45:37 +0000308 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000309 bool IsPermuteSupported(const TensorInfo& input,
310 const TensorInfo& output,
311 const PermuteDescriptor& descriptor,
312 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
313
Francis Murtaghfaf29662022-01-24 17:45:37 +0000314 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000315 bool IsPooling2dSupported(const TensorInfo& input,
316 const TensorInfo& output,
317 const Pooling2dDescriptor& descriptor,
318 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
319
Francis Murtaghfaf29662022-01-24 17:45:37 +0000320 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Tamás Nyíri7b885b32021-10-26 14:47:57 +0100321 bool IsPooling3dSupported(const TensorInfo& input,
322 const TensorInfo& output,
323 const Pooling3dDescriptor& descriptor,
324 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
325
Francis Murtaghfaf29662022-01-24 17:45:37 +0000326 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh49124022019-01-11 13:25:59 +0000327 bool IsPreCompiledSupported(const TensorInfo& input,
328 const PreCompiledDescriptor& descriptor,
329 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
330
Francis Murtaghfaf29662022-01-24 17:45:37 +0000331 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh0e406ee2019-06-12 15:42:18 +0100332 bool IsPreluSupported(const TensorInfo& input,
333 const TensorInfo& alpha,
334 const TensorInfo& output,
335 Optional<std::string &> reasonIfUnsupported) const override;
336
Francis Murtaghfaf29662022-01-24 17:45:37 +0000337 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Derek Lambertia9cca6a2019-03-25 15:41:58 +0000338 bool IsQuantizeSupported(const TensorInfo& input,
339 const TensorInfo& output,
340 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
341
Francis Murtaghfaf29662022-01-24 17:45:37 +0000342 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
James Conroy586a9aa2020-03-20 08:49:33 +0000343 bool IsQLstmSupported(const TensorInfo& input,
344 const TensorInfo& previousOutputIn,
345 const TensorInfo& previousCellStateIn,
346 const TensorInfo& outputStateOut,
347 const TensorInfo& cellStateOut,
348 const TensorInfo& output,
349 const QLstmDescriptor& descriptor,
350 const LstmInputParamsInfo& paramsInfo,
351 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
352
James Conroyee18dc82019-07-17 11:27:46 +0100353 bool IsQuantizedLstmSupported(const TensorInfo& input,
354 const TensorInfo& previousCellStateIn,
355 const TensorInfo& previousOutputIn,
356 const TensorInfo& cellStateOut,
357 const TensorInfo& output,
358 const QuantizedLstmInputParamsInfo& paramsInfo,
359 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
360
Francis Murtaghfaf29662022-01-24 17:45:37 +0000361 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Finn Williams2605b232020-06-10 15:53:46 +0100362 bool IsRankSupported(const TensorInfo& input,
363 const TensorInfo& output,
364 Optional<std::string&> reasonIfUnsupported) const override;
365
Francis Murtaghfaf29662022-01-24 17:45:37 +0000366 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +0000367 bool IsReduceSupported(const TensorInfo& input,
368 const TensorInfo& output,
369 const ReduceDescriptor& descriptor,
370 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
371
Francis Murtaghfaf29662022-01-24 17:45:37 +0000372 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000373 bool IsReshapeSupported(const TensorInfo& input,
Kevin Maya023c402019-12-12 17:28:05 +0000374 const TensorInfo& output,
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000375 const ReshapeDescriptor& descriptor,
376 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
377
Francis Murtaghfaf29662022-01-24 17:45:37 +0000378 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Teresa Charlina9075df2019-06-27 15:41:57 +0100379 bool IsResizeSupported(const TensorInfo& input,
380 const TensorInfo& output,
381 const ResizeDescriptor& descriptor,
382 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
383
Keith Davis3ae3f972021-05-21 16:33:48 +0100384 bool IsShapeSupported(const TensorInfo& input,
385 const TensorInfo& output,
386 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
387
Francis Murtaghfaf29662022-01-24 17:45:37 +0000388 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Aron Virginas-Tar636ab402019-09-16 14:27:45 +0100389 bool IsSliceSupported(const TensorInfo& input,
390 const TensorInfo& output,
391 const SliceDescriptor& descriptor,
392 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
393
Francis Murtaghfaf29662022-01-24 17:45:37 +0000394 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000395 bool IsSoftmaxSupported(const TensorInfo& input,
396 const TensorInfo& output,
397 const SoftmaxDescriptor& descriptor,
398 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
399
Francis Murtaghfaf29662022-01-24 17:45:37 +0000400 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000401 bool IsSpaceToBatchNdSupported(const TensorInfo& input,
402 const TensorInfo& output,
403 const SpaceToBatchNdDescriptor& descriptor,
404 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
405
Francis Murtaghfaf29662022-01-24 17:45:37 +0000406 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Aron Virginas-Tar972af152019-06-11 14:14:03 +0100407 bool IsSpaceToDepthSupported(const TensorInfo& input,
408 const TensorInfo& output,
409 const SpaceToDepthDescriptor& descriptor,
410 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
411
Francis Murtaghfaf29662022-01-24 17:45:37 +0000412 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Narumol Prangnawarat15eb5832019-05-20 15:31:05 +0100413 bool IsSplitterSupported(const TensorInfo& input,
414 const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
415 const ViewsDescriptor& descriptor,
416 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
417
Francis Murtaghfaf29662022-01-24 17:45:37 +0000418 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matthew Jackson81e601c2019-07-11 12:07:09 +0100419 bool IsStackSupported(const std::vector<const TensorInfo*>& inputs,
Matthew Jackson2b8c1da2019-07-04 14:59:16 +0100420 const TensorInfo& output,
421 const StackDescriptor& descriptor,
422 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
423
Derek Lamberti013c3902019-10-21 10:46:16 +0100424 bool IsStandInSupported(const std::vector<const TensorInfo*>& inputs,
425 const std::vector<const TensorInfo*>& outputs,
426 const StandInDescriptor& descriptor,
427 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
428
Francis Murtaghfaf29662022-01-24 17:45:37 +0000429 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000430 bool IsStridedSliceSupported(const TensorInfo& input,
431 const TensorInfo& output,
432 const StridedSliceDescriptor& descriptor,
433 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
434
Francis Murtaghfaf29662022-01-24 17:45:37 +0000435 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000436 bool IsSubtractionSupported(const TensorInfo& input0,
437 const TensorInfo& input1,
438 const TensorInfo& output,
439 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Sadik Armaganeff363d2019-04-05 15:25:46 +0100440
Francis Murtaghfaf29662022-01-24 17:45:37 +0000441 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Sadik Armaganeff363d2019-04-05 15:25:46 +0100442 bool IsSwitchSupported(const TensorInfo& input0,
443 const TensorInfo& input1,
444 const TensorInfo& output0,
445 const TensorInfo& output1,
446 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Aron Virginas-Tar639fb042019-06-20 14:28:19 +0100447
Francis Murtaghfaf29662022-01-24 17:45:37 +0000448 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Aron Virginas-Tar639fb042019-06-20 14:28:19 +0100449 bool IsTransposeConvolution2dSupported(
450 const TensorInfo& input,
451 const TensorInfo& output,
452 const TransposeConvolution2dDescriptor& descriptor,
453 const TensorInfo& weights,
454 const Optional<TensorInfo>& biases,
455 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
Mike Kellyc9ea45a2020-02-28 18:11:58 +0000456
Francis Murtaghfaf29662022-01-24 17:45:37 +0000457 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Mike Kellyc9ea45a2020-02-28 18:11:58 +0000458 bool IsTransposeSupported(const TensorInfo& input,
459 const TensorInfo& output,
460 const TransposeDescriptor& descriptor,
461 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
462
Francis Murtaghfaf29662022-01-24 17:45:37 +0000463 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This method is deprecated. Use IsLayerSupported instead.", "22.11")
Narumol Prangnawarat8ed39ae2021-07-15 16:16:25 +0100464 bool IsUnidirectionalSequenceLstmSupported(
465 const TensorInfo& input,
466 const TensorInfo& outputStateIn,
467 const TensorInfo& cellStateIn,
468 const TensorInfo& output,
469 const Optional<TensorInfo>& hiddenStateOutput,
470 const Optional<TensorInfo>& cellStateOutput,
471 const LstmDescriptor& descriptor,
472 const LstmInputParamsInfo& paramsInfo,
473 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
474
Matteo Martincigh992d6dc2019-01-10 17:34:20 +0000475};
476
477} // namespace armnn