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)20arm_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)31ClLogicalNotWorkload::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() const43void ClLogicalNotWorkload::Execute() const 44 { 45 ARMNN_SCOPED_PROFILING_EVENT_CL("ClLogicalNotWorkload_Execute"); 46 m_LogicalNotLayer.run(); 47 } 48 49 } // namespace armnn 50