2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
7 #include <armnn/DescriptorsFwd.hpp>
8 #include <armnn/Types.hpp>
9 #include <armnn/Tensor.hpp>
14 template<typename Float16Func, typename Float32Func, typename Uint8Func, typename ... Params>
15 bool IsSupportedForDataTypeGeneric(std::string* reasonIfUnsupported,
17 Float16Func float16FuncPtr,
18 Float32Func float32FuncPtr,
19 Uint8Func uint8FuncPtr,
24 case DataType::Float16:
25 return float16FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
26 case DataType::Float32:
27 return float32FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
28 case DataType::QuantisedAsymm8:
29 return uint8FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
35 template<typename ... Params>
36 bool TrueFunc(std::string* reasonIfUnsupported, Params&&... params)
41 template<typename ... Params>
42 bool FalseFunc(std::string* reasonIfUnsupported, Params&&... params)
47 template<typename ... Params>
48 bool FalseFuncF16(std::string* reasonIfUnsupported, Params&&... params)
50 if (reasonIfUnsupported)
52 *reasonIfUnsupported = "Layer is not supported with float16 data type";
57 template<typename ... Params>
58 bool FalseFuncF32(std::string* reasonIfUnsupported, Params&&... params)
60 if (reasonIfUnsupported)
62 *reasonIfUnsupported = "Layer is not supported with float32 data type";
67 template<typename ... Params>
68 bool FalseFuncU8(std::string* reasonIfUnsupported, Params&&... params)
70 if (reasonIfUnsupported)
72 *reasonIfUnsupported = "Layer is not supported with 8-bit data type";
77 template<typename ... Params>
78 bool FalseInputFuncF32(std::string* reasonIfUnsupported, Params&&... params)
80 if (reasonIfUnsupported)
82 *reasonIfUnsupported = "Layer is not supported with float32 data type input";
87 template<typename ... Params>
88 bool FalseInputFuncF16(std::string* reasonIfUnsupported, Params&&... params)
90 if (reasonIfUnsupported)
92 *reasonIfUnsupported = "Layer is not supported with float16 data type input";
97 template<typename ... Params>
98 bool FalseOutputFuncF32(std::string* reasonIfUnsupported, Params&&... params)
100 if (reasonIfUnsupported)
102 *reasonIfUnsupported = "Layer is not supported with float32 data type output";
107 template<typename ... Params>
108 bool FalseOutputFuncF16(std::string* reasonIfUnsupported, Params&&... params)
110 if (reasonIfUnsupported)
112 *reasonIfUnsupported = "Layer is not supported with float16 data type output";