1 // 2 // Copyright © 2020 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "NeonExpWorkload.hpp" 7 8 #include "NeonWorkloadUtils.hpp" 9 10 #include <aclCommon/ArmComputeTensorHandle.hpp> 11 #include <aclCommon/ArmComputeTensorUtils.hpp> 12 #include <armnn/utility/PolymorphicDowncast.hpp> 13 14 namespace armnn 15 { 16 NeonExpWorkloadValidate(const TensorInfo & input,const TensorInfo & output)17arm_compute::Status NeonExpWorkloadValidate(const TensorInfo& input, const TensorInfo& output) 18 { 19 const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input); 20 const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output); 21 22 return arm_compute::NEExpLayer::validate(&aclInput, &aclOutput); 23 } 24 NeonExpWorkload(const ElementwiseUnaryQueueDescriptor & descriptor,const WorkloadInfo & info)25NeonExpWorkload::NeonExpWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info) 26 : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info) 27 { 28 m_Data.ValidateInputsOutputs("NeonExpWorkload", 1, 1); 29 30 arm_compute::ITensor& input = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor(); 31 arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); 32 33 m_ExpLayer.configure(&input, &output); 34 } 35 Execute() const36void NeonExpWorkload::Execute() const 37 { 38 ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonExpWorkload_Execute"); 39 m_ExpLayer.run(); 40 } 41 42 } // namespace armnn 43