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