blob: 6b024e347ba6b3505e79a5e2500926cdc2ac382e [file] [log] [blame]
David Becke97c6e02018-10-03 13:09:28 +01001//
Teresa Charlin52664732020-06-29 16:27:03 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
David Becke97c6e02018-10-03 13:09:28 +01003// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Jim Flynn906f9462019-05-10 13:55:21 +01007#include <armnn/Deprecated.hpp>
Cathal Corbett34b429c2021-12-24 12:24:40 +00008#include <armnn/Descriptors.hpp>
Jan Eilersd01a83c2019-07-03 18:20:40 +01009#include <armnn/LstmParams.hpp>
James Conroyee18dc82019-07-17 11:27:46 +010010#include <armnn/Optional.hpp>
11#include <armnn/QuantizedLstmParams.hpp>
Matthew Bentham313e1c82019-03-25 17:37:47 +000012
David Beck5eec11d2018-10-04 15:43:17 +010013#include <cctype>
Narumol Prangnawarat15eb5832019-05-20 15:31:05 +010014#include <functional>
David Beck3e9e1152018-10-17 14:17:50 +010015#include <memory>
Matthew Bentham313e1c82019-03-25 17:37:47 +000016#include <vector>
David Becke97c6e02018-10-03 13:09:28 +010017
18namespace armnn
19{
20
21class TensorInfo;
22
23class ILayerSupport
24{
25protected:
26 ILayerSupport() {}
27 virtual ~ILayerSupport() {}
28
29public:
Cathal Corbett34b429c2021-12-24 12:24:40 +000030 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
David Becke97c6e02018-10-03 13:09:28 +010038}; // class ILayerSupport
39
David Beck3e9e1152018-10-17 14:17:50 +010040using ILayerSupportSharedPtr = std::shared_ptr<ILayerSupport>;
41
David Becke97c6e02018-10-03 13:09:28 +010042} // namespace armnn