blob: 083632cfd26e95f41c09cf76570e51d762f0a96d [file] [log] [blame]
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +01001//
Mike Kelly3ec30772023-03-08 13:47:17 +00002// Copyright © 2020-2021,2023 Arm Ltd and Contributors. All rights reserved.
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +01003// SPDX-License-Identifier: MIT
4//
5#pragma once
6
7#include <armnn/utility/IgnoreUnused.hpp>
8
9#include <backendsCommon/LayerSupportBase.hpp>
10
11namespace armnn
12{
13
14class MockImportLayerSupport : public LayerSupportBase
15{
16public:
Cathal Corbett34b429c2021-12-24 12:24:40 +000017 bool IsLayerSupported(const LayerType& type,
18 const std::vector<TensorInfo>& infos,
Mike Kelly3ec30772023-03-08 13:47:17 +000019 const BaseDescriptor& descriptor,
Cathal Corbett34b429c2021-12-24 12:24:40 +000020 const Optional<LstmInputParamsInfo>& /*lstmParamsInfo*/,
21 const Optional<QuantizedLstmInputParamsInfo>& /*quantizedLstmParamsInfo*/,
22 Optional<std::string&> reasonIfUnsupported) const override
23 {
24 switch(type)
25 {
26 case LayerType::Addition:
27 return IsAdditionSupported(infos[0], infos[1], infos[2], reasonIfUnsupported);
Mike Kelly3ec30772023-03-08 13:47:17 +000028 case LayerType::ElementwiseBinary:
29 {
30 auto elementwiseDesc = *(PolymorphicDowncast<const ElementwiseBinaryDescriptor*>(&descriptor));
31 return (elementwiseDesc.m_Operation == BinaryOperation::Add);
32 }
Cathal Corbett34b429c2021-12-24 12:24:40 +000033 case LayerType::Input:
34 return IsInputSupported(infos[0], reasonIfUnsupported);
35 case LayerType::Output:
36 return IsOutputSupported(infos[0], reasonIfUnsupported);
37 case LayerType::MemCopy:
38 return LayerSupportBase::IsMemCopySupported(infos[0], infos[1], reasonIfUnsupported);
39 case LayerType::MemImport:
40 return LayerSupportBase::IsMemImportSupported(infos[0], infos[1], reasonIfUnsupported);
41 default:
42 return false;
43 }
44 }
45
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +010046 bool IsAdditionSupported(const TensorInfo& input0,
47 const TensorInfo& input1,
48 const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010049 Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +010050 {
51 IgnoreUnused(input0);
52 IgnoreUnused(input1);
53 IgnoreUnused(output);
54 IgnoreUnused(reasonIfUnsupported);
55 return true;
56 }
57
58 bool IsInputSupported(const TensorInfo& input,
Francis Murtagh66277032023-07-28 13:01:32 +010059 Optional<std::string&> reasonIfUnsupported) const
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +010060 {
61 IgnoreUnused(input);
62 IgnoreUnused(reasonIfUnsupported);
63 return true;
64 }
65
66 bool IsOutputSupported(const TensorInfo& output,
Francis Murtagh66277032023-07-28 13:01:32 +010067 Optional<std::string&> reasonIfUnsupported) const
Narumol Prangnawaratb8d771a2020-08-14 11:51:12 +010068 {
69 IgnoreUnused(output);
70 IgnoreUnused(reasonIfUnsupported);
71 return true;
72 }
73};
74
75} // namespace armnn