aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonLayerSupport.cpp
diff options
context:
space:
mode:
authorDerek Lamberti <derek.lamberti@arm.com>2020-04-28 13:34:56 +0100
committerDerek Lamberti <derek.lamberti@arm.com>2020-04-29 10:18:19 +0100
commitc77874a487da081c365fc1a3baeb5745e7a08be9 (patch)
tree79e6fc218afbc65dbfc8024c7568377d29f18dff /src/backends/neon/NeonLayerSupport.cpp
parentd0fedaee5c8488533e52e15590c1db07296c7ad6 (diff)
downloadarmnn-c77874a487da081c365fc1a3baeb5745e7a08be9.tar.gz
IVGCVSW-4203 Add Exp support to Neon backend
Change-Id: Ief6b79297b66a57643b7c5d6c7d820c35024dd08 Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
Diffstat (limited to 'src/backends/neon/NeonLayerSupport.cpp')
-rw-r--r--src/backends/neon/NeonLayerSupport.cpp46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
index 5d59ab83aa..f47601a1c2 100644
--- a/src/backends/neon/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -7,6 +7,7 @@
#include "NeonBackendId.hpp"
#include <armnn/Descriptors.hpp>
+#include <armnn/Exceptions.hpp>
#include <armnn/Tensor.hpp>
#include <armnn/Types.hpp>
#include <armnn/BackendRegistry.hpp>
@@ -24,6 +25,7 @@
#include "workloads/NeonArgMinMaxWorkload.hpp"
#include "workloads/NeonBatchNormalizationWorkload.hpp"
#include "workloads/NeonBatchToSpaceNdWorkload.hpp"
+#include "workloads/NeonExpWorkload.hpp"
#include "workloads/NeonComparisonWorkload.hpp"
#include "workloads/NeonConstantWorkload.hpp"
#include "workloads/NeonConvolution2dWorkload.hpp"
@@ -374,29 +376,31 @@ bool NeonLayerSupport::IsElementwiseUnarySupported(const TensorInfo& input,
const ElementwiseUnaryDescriptor& descriptor,
Optional<std::string&> reasonIfUnsupported) const
{
- if (descriptor.m_Operation == UnaryOperation::Abs)
+ switch(descriptor.m_Operation)
{
- FORWARD_WORKLOAD_VALIDATE_FUNC(NeonAbsWorkloadValidate,
- reasonIfUnsupported,
- input,
- output);
- }
- else if (descriptor.m_Operation == UnaryOperation::Rsqrt)
- {
- FORWARD_WORKLOAD_VALIDATE_FUNC(NeonRsqrtWorkloadValidate,
- reasonIfUnsupported,
- input,
- output);
- }
- else if (descriptor.m_Operation == UnaryOperation::Neg)
- {
- FORWARD_WORKLOAD_VALIDATE_FUNC(NeonNegWorkloadValidate,
- reasonIfUnsupported,
- input,
- output);
+ case UnaryOperation::Abs:
+ FORWARD_WORKLOAD_VALIDATE_FUNC(NeonAbsWorkloadValidate,
+ reasonIfUnsupported,
+ input,
+ output);
+ case UnaryOperation::Exp:
+ FORWARD_WORKLOAD_VALIDATE_FUNC(NeonExpWorkloadValidate,
+ reasonIfUnsupported,
+ input,
+ output);
+ case UnaryOperation::Neg:
+ FORWARD_WORKLOAD_VALIDATE_FUNC(NeonNegWorkloadValidate,
+ reasonIfUnsupported,
+ input,
+ output);
+ case UnaryOperation::Rsqrt:
+ FORWARD_WORKLOAD_VALIDATE_FUNC(NeonRsqrtWorkloadValidate,
+ reasonIfUnsupported,
+ input,
+ output);
+ default:
+ return false;
}
-
- return false;
}
bool NeonLayerSupport::IsFloorSupported(const TensorInfo& input,