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