// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include "Maximum.hpp" #include "Minimum.hpp" #include "StringMapping.hpp" namespace armnn { template class RefElementwiseWorkload { // Needs specialization. The default is empty on purpose. }; template class BaseFloat32ElementwiseWorkload : public Float32Workload { public: using Float32Workload::Float32Workload; void ExecuteImpl(const char * debugString) const; }; template class RefElementwiseWorkload : public BaseFloat32ElementwiseWorkload { public: using BaseFloat32ElementwiseWorkload::BaseFloat32ElementwiseWorkload; virtual void Execute() const override { using Parent = BaseFloat32ElementwiseWorkload; Parent::ExecuteImpl(StringMapping::Instance().Get(DebugString)); } }; template class BaseUint8ElementwiseWorkload : public Uint8Workload { public: using Uint8Workload::Uint8Workload; void ExecuteImpl(const char * debugString) const; }; template class RefElementwiseWorkload : public BaseUint8ElementwiseWorkload { public: using BaseUint8ElementwiseWorkload::BaseUint8ElementwiseWorkload; virtual void Execute() const override { using Parent = BaseUint8ElementwiseWorkload; Parent::ExecuteImpl(StringMapping::Instance().Get(DebugString)); } }; using RefAdditionFloat32Workload = RefElementwiseWorkload, DataType::Float32, AdditionQueueDescriptor, StringMapping::RefAdditionWorkload_Execute>; using RefAdditionUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, AdditionQueueDescriptor, StringMapping::RefAdditionWorkload_Execute>; using RefSubtractionFloat32Workload = RefElementwiseWorkload, DataType::Float32, SubtractionQueueDescriptor, StringMapping::RefSubtractionWorkload_Execute>; using RefSubtractionUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, SubtractionQueueDescriptor, StringMapping::RefSubtractionWorkload_Execute>; using RefMultiplicationFloat32Workload = RefElementwiseWorkload, DataType::Float32, MultiplicationQueueDescriptor, StringMapping::RefMultiplicationWorkload_Execute>; using RefMultiplicationUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, MultiplicationQueueDescriptor, StringMapping::RefMultiplicationWorkload_Execute>; using RefDivisionFloat32Workload = RefElementwiseWorkload, DataType::Float32, DivisionQueueDescriptor, StringMapping::RefDivisionWorkload_Execute>; using RefDivisionUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, DivisionQueueDescriptor, StringMapping::RefDivisionWorkload_Execute>; using RefMaximumFloat32Workload = RefElementwiseWorkload, DataType::Float32, MaximumQueueDescriptor, StringMapping::RefMaximumWorkload_Execute>; using RefMaximumUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, MaximumQueueDescriptor, StringMapping::RefMaximumWorkload_Execute>; using RefMinimumFloat32Workload = RefElementwiseWorkload, DataType::Float32, MinimumQueueDescriptor, StringMapping::RefMinimumWorkload_Execute>; using RefMinimumUint8Workload = RefElementwiseWorkload, DataType::QuantisedAsymm8, MinimumQueueDescriptor, StringMapping::RefMinimumWorkload_Execute>; } // armnn