diff options
author | Derek Lamberti <derek.lamberti@arm.com> | 2020-04-28 13:34:56 +0100 |
---|---|---|
committer | Derek Lamberti <derek.lamberti@arm.com> | 2020-04-29 10:18:19 +0100 |
commit | c77874a487da081c365fc1a3baeb5745e7a08be9 (patch) | |
tree | 79e6fc218afbc65dbfc8024c7568377d29f18dff /src/backends/neon/NeonWorkloadFactory.cpp | |
parent | d0fedaee5c8488533e52e15590c1db07296c7ad6 (diff) | |
download | armnn-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.cpp | 42 |
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, |