xref: /aosp_15_r20/external/armnn/src/dynamic/sample/SampleDynamicLayerSupport.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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