aboutsummaryrefslogtreecommitdiff
path: root/ConversionUtils.hpp
diff options
context:
space:
mode:
authorTeresa Charlin <teresa.charlinreyes@arm.com>2019-10-01 13:10:15 +0100
committerKevin May <kevin.may@arm.com>2019-10-04 14:00:21 +0000
commit8f6429de4c278d79f076ddcea3fe1495e28fb75e (patch)
treed30ab52c04630578e74e1705ddc8fb775d191165 /ConversionUtils.hpp
parent572fdd498415c2287bbffbedeafd08e527ce7717 (diff)
downloadandroid-nn-driver-8f6429de4c278d79f076ddcea3fe1495e28fb75e.tar.gz
IVGCVSW-3818 Support Group convolution from Android
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com> Change-Id: Ie98688175203563ae08019c0c3c876d9c5eae24c
Diffstat (limited to 'ConversionUtils.hpp')
-rw-r--r--ConversionUtils.hpp55
1 files changed, 29 insertions, 26 deletions
diff --git a/ConversionUtils.hpp b/ConversionUtils.hpp
index 2e4cadd7..de255803 100644
--- a/ConversionUtils.hpp
+++ b/ConversionUtils.hpp
@@ -125,43 +125,46 @@ static bool Fail(const char* formatStr, Args&&... args)
// Convenience macro to call an Is*Supported function and log caller name together with reason for lack of support.
// Called as: FORWARD_LAYER_SUPPORT_FUNC(__func__, Is*Supported, backends, a, b, c, d, e)
#define FORWARD_LAYER_SUPPORT_FUNC(funcName, func, backends, supported, ...) \
- std::string reasonIfUnsupported; \
- try { \
- for (auto&& backendId : backends) \
+try \
+{ \
+ for (auto&& backendId : backends) \
+ { \
+ auto layerSupportObject = armnn::GetILayerSupportByBackendId(backendId); \
+ if (layerSupportObject) \
{ \
- auto layerSupportObject = armnn::GetILayerSupportByBackendId(backendId); \
- if (layerSupportObject) \
+ std::string reasonIfUnsupported; \
+ supported = \
+ layerSupportObject->func(__VA_ARGS__, armnn::Optional<std::string&>(reasonIfUnsupported)); \
+ if (supported) \
{ \
- supported = \
- layerSupportObject->func(__VA_ARGS__, armnn::Optional<std::string&>(reasonIfUnsupported)); \
- if (supported) \
+ break; \
+ } \
+ else \
+ { \
+ if (reasonIfUnsupported.size() > 0) \
{ \
- break; \
+ ALOGD("%s: not supported by armnn: %s", funcName, reasonIfUnsupported.c_str()); \
} \
else \
{ \
- if (reasonIfUnsupported.size() > 0) \
- { \
- ALOGD("%s: not supported by armnn: %s", funcName, reasonIfUnsupported.c_str()); \
- } \
- else \
- { \
- ALOGD("%s: not supported by armnn", funcName); \
- } \
+ ALOGD("%s: not supported by armnn", funcName); \
} \
} \
- else \
- { \
- ALOGD("%s: backend not registered: %s", funcName, backendId.Get().c_str()); \
- } \
} \
- if (!supported) \
+ else \
{ \
- ALOGD("%s: not supported by any specified backend", funcName); \
+ ALOGD("%s: backend not registered: %s", funcName, backendId.Get().c_str()); \
} \
- } catch (const armnn::InvalidArgumentException &e) { \
- throw armnn::InvalidArgumentException(e, "Failed to check layer support", CHECK_LOCATION()); \
- }
+ } \
+ if (!supported) \
+ { \
+ ALOGD("%s: not supported by any specified backend", funcName); \
+ } \
+} \
+catch (const armnn::InvalidArgumentException &e) \
+{ \
+ throw armnn::InvalidArgumentException(e, "Failed to check layer support", CHECK_LOCATION()); \
+}
template<typename Operand>
armnn::TensorShape GetTensorShapeForOperand(const Operand& operand)