diff options
author | James Conroy <james.conroy@arm.com> | 2020-11-18 14:20:53 +0000 |
---|---|---|
committer | Francis Murtagh <francis.murtagh@arm.com> | 2020-11-18 21:38:19 +0000 |
commit | fe3ec944c2573c54585f40b58ae6a36f8c19b009 (patch) | |
tree | 7abe3d7255c2ea595ca6ebd60dd18bcf242000fc /src/backends/cl/ClWorkloadFactory.cpp | |
parent | b8307527963240e1594a12636462fd0577b3c6f4 (diff) | |
download | armnn-fe3ec944c2573c54585f40b58ae6a36f8c19b009.tar.gz |
IVGCVSW-5092 Add CL Logical workload
* Add CL Logical workloads for NOT,
AND and OR.
* Enable Layer and IsSupported tests on CL.
Signed-off-by: James Conroy <james.conroy@arm.com>
Change-Id: I8b7227b2487fdbbb55a4baf6e61f290313947de1
Diffstat (limited to 'src/backends/cl/ClWorkloadFactory.cpp')
-rw-r--r-- | src/backends/cl/ClWorkloadFactory.cpp | 52 |
1 files changed, 40 insertions, 12 deletions
diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp index cb4aa923d0..65121dcae8 100644 --- a/src/backends/cl/ClWorkloadFactory.cpp +++ b/src/backends/cl/ClWorkloadFactory.cpp @@ -281,25 +281,27 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateElementwiseUnary(const Eleme switch(descriptor.m_Parameters.m_Operation) { case UnaryOperation::Abs: - { - AbsQueueDescriptor absQueueDescriptor; - absQueueDescriptor.m_Inputs = descriptor.m_Inputs; - absQueueDescriptor.m_Outputs = descriptor.m_Outputs; + { + AbsQueueDescriptor absQueueDescriptor; + absQueueDescriptor.m_Inputs = descriptor.m_Inputs; + absQueueDescriptor.m_Outputs = descriptor.m_Outputs; - return std::make_unique<ClAbsWorkload>(absQueueDescriptor, info); - } + return std::make_unique<ClAbsWorkload>(absQueueDescriptor, info); + } case UnaryOperation::Exp: return std::make_unique<ClExpWorkload>(descriptor, info); case UnaryOperation::Neg: return std::make_unique<ClNegWorkload>(descriptor, info); case UnaryOperation::Rsqrt: - { - RsqrtQueueDescriptor rsqrtQueueDescriptor; - rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs; - rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs; + { + RsqrtQueueDescriptor rsqrtQueueDescriptor; + rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs; + rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs; - return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info); - } + return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info); + } + case UnaryOperation::LogicalNot: + return std::make_unique<ClLogicalNotWorkload>(descriptor, info); default: return nullptr; } @@ -370,6 +372,32 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateL2Normalization(const L2Norm return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(descriptor, info); } +std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + switch(descriptor.m_Parameters.m_Operation) + { + case LogicalBinaryOperation::LogicalAnd: + return std::make_unique<ClLogicalAndWorkload>(descriptor, info); + case LogicalBinaryOperation::LogicalOr: + return std::make_unique<ClLogicalOrWorkload>(descriptor, info); + default: + return nullptr; + } +} + +std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + switch(descriptor.m_Parameters.m_Operation) + { + case UnaryOperation::LogicalNot: + return std::make_unique<ClLogicalNotWorkload>(descriptor, info); + default: + return nullptr; + } +} + std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, const WorkloadInfo& info) const { |