// // 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 Execute() const override; void ExecuteAsync(WorkingMemDescriptor& workingMemDescriptor) override; private: void Execute(std::vector inputs, std::vector outputs) const; }; template using RefAdditionWorkload = RefElementwiseWorkload, AdditionQueueDescriptor, StringMapping::RefAdditionWorkload_Execute>; template using RefSubtractionWorkload = RefElementwiseWorkload, SubtractionQueueDescriptor, StringMapping::RefSubtractionWorkload_Execute>; template using RefMultiplicationWorkload = RefElementwiseWorkload, MultiplicationQueueDescriptor, StringMapping::RefMultiplicationWorkload_Execute>; template using RefDivisionWorkload = RefElementwiseWorkload, DivisionQueueDescriptor, StringMapping::RefDivisionWorkload_Execute>; template using RefMaximumWorkload = RefElementwiseWorkload, MaximumQueueDescriptor, StringMapping::RefMaximumWorkload_Execute>; template using RefMinimumWorkload = RefElementwiseWorkload, MinimumQueueDescriptor, StringMapping::RefMinimumWorkload_Execute>; } // armnn