// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include "BaseIterator.hpp" #include "ElementwiseFunction.hpp" #include "Maximum.hpp" #include "Minimum.hpp" #include "StringMapping.hpp" namespace armnn { template class RefElementwiseWorkload : public BaseWorkload { public: using InType = typename ElementwiseBinaryFunction::InType; using OutType = typename ElementwiseBinaryFunction::OutType; using BaseWorkload::m_Data; RefElementwiseWorkload(const ParentDescriptor& descriptor, const WorkloadInfo& info); void PostAllocationConfigure() override; void Execute() const override; private: std::unique_ptr> m_Input0; std::unique_ptr> m_Input1; std::unique_ptr> m_Output; }; using RefAdditionWorkload = RefElementwiseWorkload, AdditionQueueDescriptor, StringMapping::RefAdditionWorkload_Execute>; using RefSubtractionWorkload = RefElementwiseWorkload, SubtractionQueueDescriptor, StringMapping::RefSubtractionWorkload_Execute>; using RefMultiplicationWorkload = RefElementwiseWorkload, MultiplicationQueueDescriptor, StringMapping::RefMultiplicationWorkload_Execute>; using RefDivisionWorkload = RefElementwiseWorkload, DivisionQueueDescriptor, StringMapping::RefDivisionWorkload_Execute>; using RefMaximumWorkload = RefElementwiseWorkload, MaximumQueueDescriptor, StringMapping::RefMaximumWorkload_Execute>; using RefMinimumWorkload = RefElementwiseWorkload, MinimumQueueDescriptor, StringMapping::RefMinimumWorkload_Execute>; } // armnn