aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonWorkloadFactory.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/NeonWorkloadFactory.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/NeonWorkloadFactory.cpp')
-rw-r--r--src/backends/neon/NeonWorkloadFactory.cpp42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp
index b7609ee765..237808c26e 100644
--- a/src/backends/neon/NeonWorkloadFactory.cpp
+++ b/src/backends/neon/NeonWorkloadFactory.cpp
@@ -227,27 +227,31 @@ std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateDivision(
std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateElementwiseUnary(
const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info) const
{
- if (descriptor.m_Parameters.m_Operation == UnaryOperation::Abs)
+ switch(descriptor.m_Parameters.m_Operation)
{
- AbsQueueDescriptor absQueueDescriptor;
- absQueueDescriptor.m_Inputs = descriptor.m_Inputs;
- absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
- return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info);
- }
- else if (descriptor.m_Parameters.m_Operation == UnaryOperation::Rsqrt)
- {
- RsqrtQueueDescriptor rsqrtQueueDescriptor;
- rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs;
- rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
- return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info);
+ case UnaryOperation::Abs:
+ {
+ AbsQueueDescriptor absQueueDescriptor;
+ absQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+ absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
+
+ return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info);
+ }
+ case UnaryOperation::Rsqrt:
+ {
+ RsqrtQueueDescriptor rsqrtQueueDescriptor;
+ rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+ rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
+
+ return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info);
+ }
+ case UnaryOperation::Neg:
+ return std::make_unique<NeonNegWorkload>(descriptor, info);
+ case UnaryOperation::Exp:
+ return std::make_unique<NeonExpWorkload>(descriptor, info);
+ default:
+ return nullptr;
}
- else if (descriptor.m_Parameters.m_Operation == UnaryOperation::Neg)
- {
- return std::make_unique<NeonNegWorkload>(descriptor, info);
- }
- return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
}
std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateEqual(const EqualQueueDescriptor& descriptor,