1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "SampleDynamicLayerSupport.hpp"
7
8 #include <InternalTypes.hpp>
9 #include <LayerSupportCommon.hpp>
10 #include <armnn/Types.hpp>
11
12 namespace sdb // sample dynamic backend
13 {
14
IsLayerSupported(const armnn::LayerType & type,const std::vector<armnn::TensorInfo> & infos,const armnn::BaseDescriptor &,const armnn::Optional<armnn::LstmInputParamsInfo> &,const armnn::Optional<armnn::QuantizedLstmInputParamsInfo> &,armnn::Optional<std::string &> reasonIfUnsupported) const15 bool SampleDynamicLayerSupport::IsLayerSupported(const armnn::LayerType& type,
16 const std::vector<armnn::TensorInfo>& infos,
17 const armnn::BaseDescriptor& /*descriptor*/,
18 const armnn::Optional<armnn::LstmInputParamsInfo>&
19 /*lstmParamsInfo*/,
20 const armnn::Optional<armnn::QuantizedLstmInputParamsInfo>&
21 /*quantizedLstmParamsInfo*/,
22 armnn::Optional<std::string&> reasonIfUnsupported) const
23 {
24 switch (type)
25 {
26 case armnn::LayerType::Input:
27 return IsInputSupported(infos[0], reasonIfUnsupported);
28 case armnn::LayerType::Output:
29 return IsOutputSupported(infos[0], reasonIfUnsupported);
30 case armnn::LayerType::Addition:
31 return IsAdditionSupported(infos[0],
32 infos[1],
33 infos[2],
34 reasonIfUnsupported);
35 default:
36 return false;
37 }
38 }
39
IsInputSupported(const armnn::TensorInfo & input,armnn::Optional<std::string &> reasonIfUnsupported) const40 bool SampleDynamicLayerSupport::IsInputSupported(const armnn::TensorInfo& input,
41 armnn::Optional<std::string&> reasonIfUnsupported) const
42 {
43 return true;
44 }
45
IsOutputSupported(const armnn::TensorInfo & output,armnn::Optional<std::string &> reasonIfUnsupported) const46 bool SampleDynamicLayerSupport::IsOutputSupported(const armnn::TensorInfo& output,
47 armnn::Optional<std::string&> reasonIfUnsupported) const
48 {
49 return true;
50 }
51
IsAdditionSupported(const armnn::TensorInfo & input0,const armnn::TensorInfo & input1,const armnn::TensorInfo & output,armnn::Optional<std::string &> reasonIfUnsupported) const52 bool SampleDynamicLayerSupport::IsAdditionSupported(const armnn::TensorInfo& input0,
53 const armnn::TensorInfo& input1,
54 const armnn::TensorInfo& output,
55 armnn::Optional<std::string&> reasonIfUnsupported) const
56 {
57
58 if (input0.GetDataType() != armnn::DataType::Float32)
59 {
60 return false;
61 }
62
63 if (input0.GetDataType() != input1.GetDataType())
64 {
65 return false;
66 }
67
68 if (input0.GetDataType() != output.GetDataType())
69 {
70 return false;
71 }
72
73 return true;
74 }
75
76 } // namespace sdb
77