blob: 9dea90e071969fd6f074201fe8a59e6883c9d561 [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
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000024 bool IsDetectionPostProcessSupported(const TensorInfo& boxEncodings,
25 const TensorInfo& scores,
26 const TensorInfo& anchors,
27 const TensorInfo& detectionBoxes,
28 const TensorInfo& detectionClasses,
29 const TensorInfo& detectionScores,
30 const TensorInfo& numDetections,
Narumol Prangnawarat94dd5d82019-01-23 18:06:26 +000031 const DetectionPostProcessDescriptor& descriptor,
Francis Murtagh66277032023-07-28 13:01:32 +010032 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000033
34 bool IsMemCopySupported(const TensorInfo& input,
35 const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010036 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000037
Derek Lambertif674aa02019-08-01 15:56:25 +010038 bool IsMemImportSupported(const TensorInfo& input,
39 const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010040 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Derek Lambertif674aa02019-08-01 15:56:25 +010041
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +010042 bool IsMergeSupported(const TensorInfo& input0,
43 const TensorInfo& input1,
44 const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010045 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
James Conroy586a9aa2020-03-20 08:49:33 +000046
James Conroyee18dc82019-07-17 11:27:46 +010047 bool IsQuantizedLstmSupported(const TensorInfo& input,
48 const TensorInfo& previousCellStateIn,
49 const TensorInfo& previousOutputIn,
50 const TensorInfo& cellStateOut,
51 const TensorInfo& output,
52 const QuantizedLstmInputParamsInfo& paramsInfo,
Francis Murtagh66277032023-07-28 13:01:32 +010053 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Teresa Charlina9075df2019-06-27 15:41:57 +010054
Keith Davis3ae3f972021-05-21 16:33:48 +010055 bool IsShapeSupported(const TensorInfo& input,
56 const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010057 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Matthew Jackson2b8c1da2019-07-04 14:59:16 +010058
Derek Lamberti013c3902019-10-21 10:46:16 +010059 bool IsStandInSupported(const std::vector<const TensorInfo*>& inputs,
60 const std::vector<const TensorInfo*>& outputs,
61 const StandInDescriptor& descriptor,
Francis Murtagh66277032023-07-28 13:01:32 +010062 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const;
Narumol Prangnawarat8ed39ae2021-07-15 16:16:25 +010063
Matteo Martincigh992d6dc2019-01-10 17:34:20 +000064};
65
66} // namespace armnn