• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ClLogicalNotWorkload.hpp"
7 
8 #include "ClWorkloadUtils.hpp"
9 
10 #include <armnn/utility/PolymorphicDowncast.hpp>
11 
12 #include <aclCommon/ArmComputeTensorUtils.hpp>
13 
14 #include <cl/ClTensorHandle.hpp>
15 
16 namespace armnn
17 {
18 using namespace armcomputetensorutils;
19 
ClLogicalNotWorkloadValidate(const TensorInfo & input,const TensorInfo & output)20 arm_compute::Status ClLogicalNotWorkloadValidate(const TensorInfo& input,
21                                                  const TensorInfo& output)
22 {
23     const arm_compute::TensorInfo aclInputInfo  = BuildArmComputeTensorInfo(input);
24     const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);
25 
26     const arm_compute::Status aclStatus = arm_compute::CLLogicalNot::validate(&aclInputInfo,
27                                                                               &aclOutputInfo);
28     return aclStatus;
29 }
30 
ClLogicalNotWorkload(const ElementwiseUnaryQueueDescriptor & descriptor,const WorkloadInfo & info)31 ClLogicalNotWorkload::ClLogicalNotWorkload(const ElementwiseUnaryQueueDescriptor& descriptor,
32                                            const WorkloadInfo& info)
33     : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
34 {
35     m_Data.ValidateInputsOutputs("ClLogicalNotWorkload", 1, 1);
36 
37     arm_compute::ICLTensor& input  = PolymorphicDowncast<ClTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
38     arm_compute::ICLTensor& output = PolymorphicDowncast<ClTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
39 
40     m_LogicalNotLayer.configure(&input, &output);
41 }
42 
Execute() const43 void ClLogicalNotWorkload::Execute() const
44 {
45     ARMNN_SCOPED_PROFILING_EVENT_CL("ClLogicalNotWorkload_Execute");
46     m_LogicalNotLayer.run();
47 }
48 
49 } // namespace armnn
50