ArmNN
 25.11
Loading...
Searching...
No Matches
LayerSupportCommon.hpp
Go to the documentation of this file.
1//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
9#include <armnn/Types.hpp>
10#include <armnn/Tensor.hpp>
11#include <armnn/Optional.hpp>
12
13namespace armnn
14{
15
16template<typename T, typename V>
17void SetValueChecked(Optional<T&> optionalRef, V&& val)
18{
19 if (optionalRef)
20 {
21 optionalRef.value() = val;
22 }
23}
24
25template<typename Float16Func, typename Float32Func, typename Uint8Func, typename Int32Func, typename BooleanFunc,
26 typename ... Params>
28 DataType dataType,
29 Float16Func float16FuncPtr,
30 Float32Func float32FuncPtr,
31 Uint8Func uint8FuncPtr,
32 Int32Func int32FuncPtr,
33 BooleanFunc booleanFuncPtr,
34 Params&&... params)
35{
36 switch(dataType)
37 {
39 return float16FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
41 return float32FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
43 return uint8FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
45 return int32FuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
47 return booleanFuncPtr(reasonIfUnsupported, std::forward<Params>(params)...);
48 default:
49 return false;
50 }
51}
52
53template<typename ... Params>
54bool TrueFunc(Optional<std::string&> reasonIfUnsupported, Params&&... params)
55{
56 IgnoreUnused(reasonIfUnsupported);
57 IgnoreUnused(params...);
58 return true;
59}
60
61template<typename ... Params>
62bool FalseFunc(Optional<std::string&> reasonIfUnsupported, Params&&... params)
63{
64 IgnoreUnused(reasonIfUnsupported);
65 IgnoreUnused(params...);
66 return false;
67}
68
69template<typename ... Params>
70bool FalseFuncF16(Optional<std::string&> reasonIfUnsupported, Params&&... params)
71{
72 IgnoreUnused(params...);
73 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float16 data type");
74 return false;
75}
76
77template<typename ... Params>
78bool FalseFuncF32(Optional<std::string&> reasonIfUnsupported, Params&&... params)
79{
80 IgnoreUnused(params...);
81 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float32 data type");
82 return false;
83}
84
85template<typename ... Params>
86bool FalseFuncU8(Optional<std::string&> reasonIfUnsupported, Params&&... params)
87{
88 IgnoreUnused(params...);
89 SetValueChecked(reasonIfUnsupported, "Layer is not supported with 8-bit data type");
90 return false;
91}
92
93template<typename ... Params>
94bool FalseFuncI32(Optional<std::string&> reasonIfUnsupported, Params&&... params)
95{
96 IgnoreUnused(params...);
97 SetValueChecked(reasonIfUnsupported, "Layer is not supported with int32 data type");
98 return false;
99}
100
101template<typename ... Params>
102bool FalseInputFuncF32(Optional<std::string&> reasonIfUnsupported, Params&&... params)
103{
104 IgnoreUnused(params...);
105 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float32 data type input");
106 return false;
107}
108
109template<typename ... Params>
110bool FalseInputFuncF16(Optional<std::string&> reasonIfUnsupported, Params&&... params)
111{
112 IgnoreUnused(params...);
113 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float16 data type input");
114 return false;
115}
116
117template<typename ... Params>
118bool FalseOutputFuncF32(Optional<std::string&> reasonIfUnsupported, Params&&... params)
119{
120 IgnoreUnused(params...);
121 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float32 data type output");
122 return false;
123}
124
125template<typename ... Params>
126bool FalseOutputFuncF16(Optional<std::string&> reasonIfUnsupported, Params&&... params)
127{
128 IgnoreUnused(params...);
129 SetValueChecked(reasonIfUnsupported, "Layer is not supported with float16 data type output");
130 return false;
131}
132
133}
Copyright (c) 2021 ARM Limited and Contributors.
bool FalseFuncI32(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseOutputFuncF32(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseFuncU8(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool TrueFunc(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseFuncF32(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseFuncF16(Optional< std::string & > reasonIfUnsupported, Params &&... params)
void SetValueChecked(Optional< T & > optionalRef, V &&val)
bool FalseInputFuncF32(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseInputFuncF16(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseFunc(Optional< std::string & > reasonIfUnsupported, Params &&... params)
bool FalseOutputFuncF16(Optional< std::string & > reasonIfUnsupported, Params &&... params)
DataType
Definition Types.hpp:49
bool IsSupportedForDataTypeGeneric(Optional< std::string & > reasonIfUnsupported, DataType dataType, Float16Func float16FuncPtr, Float32Func float32FuncPtr, Uint8Func uint8FuncPtr, Int32Func int32FuncPtr, BooleanFunc booleanFuncPtr, Params &&... params)
void IgnoreUnused(Ts &&...)