diff options
Diffstat (limited to 'src/backends/reference/workloads')
5 files changed, 43 insertions, 0 deletions
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt index 86c5f908b9..b9c150f6d4 100644 --- a/src/backends/reference/workloads/CMakeLists.txt +++ b/src/backends/reference/workloads/CMakeLists.txt @@ -17,6 +17,7 @@ list(APPEND armnnRefBackendWorkloads_sources ElementwiseFunction.hpp FullyConnected.cpp FullyConnected.hpp + Maximum.hpp Merger.hpp Pad.cpp Pad.hpp diff --git a/src/backends/reference/workloads/ElementwiseFunction.cpp b/src/backends/reference/workloads/ElementwiseFunction.cpp index bea3d2fb89..bb15049faa 100644 --- a/src/backends/reference/workloads/ElementwiseFunction.cpp +++ b/src/backends/reference/workloads/ElementwiseFunction.cpp @@ -7,6 +7,8 @@ #include "Broadcast.hpp" #include <functional> +#include "Maximum.hpp" + namespace armnn { @@ -27,3 +29,4 @@ template struct armnn::ElementwiseFunction<std::plus<float>>; template struct armnn::ElementwiseFunction<std::minus<float>>; template struct armnn::ElementwiseFunction<std::multiplies<float>>; template struct armnn::ElementwiseFunction<std::divides<float>>; +template struct armnn::ElementwiseFunction<armnn::maximum<float>>;
\ No newline at end of file diff --git a/src/backends/reference/workloads/Maximum.hpp b/src/backends/reference/workloads/Maximum.hpp new file mode 100644 index 0000000000..524afffc44 --- /dev/null +++ b/src/backends/reference/workloads/Maximum.hpp @@ -0,0 +1,22 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <iostream> + +namespace armnn +{ + template<typename T> + struct maximum + { + T + operator () (const T& inputData0, const T& inputData1) const + { + return std::max(inputData0, inputData1); + } + }; + +} //namespace armnn diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.cpp b/src/backends/reference/workloads/RefElementwiseWorkload.cpp index 8e312a7dd1..60a1b990f7 100644 --- a/src/backends/reference/workloads/RefElementwiseWorkload.cpp +++ b/src/backends/reference/workloads/RefElementwiseWorkload.cpp @@ -67,3 +67,6 @@ template class armnn::BaseUint8ElementwiseWorkload<armnn::MultiplicationQueueDes template class armnn::BaseFloat32ElementwiseWorkload<armnn::DivisionQueueDescriptor, std::divides<float>>; template class armnn::BaseUint8ElementwiseWorkload<armnn::DivisionQueueDescriptor, std::divides<float>>; + +template class armnn::BaseFloat32ElementwiseWorkload<armnn::MaximumQueueDescriptor, armnn::maximum<float>>; +template class armnn::BaseUint8ElementwiseWorkload<armnn::MaximumQueueDescriptor, armnn::maximum<float>>; diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.hpp b/src/backends/reference/workloads/RefElementwiseWorkload.hpp index 156613a49f..2772b77631 100644 --- a/src/backends/reference/workloads/RefElementwiseWorkload.hpp +++ b/src/backends/reference/workloads/RefElementwiseWorkload.hpp @@ -9,6 +9,7 @@ #include <backendsCommon/StringMapping.hpp> #include <backendsCommon/Workload.hpp> #include <backendsCommon/WorkloadData.hpp> +#include "Maximum.hpp" namespace armnn { @@ -119,4 +120,17 @@ using RefDivisionUint8Workload = DivisionQueueDescriptor, StringMapping::RefDivisionWorkload_Execute>; + +using RefMaximumFloat32Workload = + RefElementwiseWorkload<armnn::maximum<float>, + DataType::Float32, + MaximumQueueDescriptor, + StringMapping::RefMaximumWorkload_Execute>; + +using RefMaximumUint8Workload = + RefElementwiseWorkload<armnn::maximum<float>, + DataType::QuantisedAsymm8, + MaximumQueueDescriptor, + StringMapping::RefMaximumWorkload_Execute>; + } // armnn |