diff options
author | Éanna Ó Catháin <eanna.ocathain@arm.com> | 2018-12-04 10:29:06 +0000 |
---|---|---|
committer | Les Bell <les.bell@arm.com> | 2018-12-04 11:59:51 +0000 |
commit | 20e58806b94636f579c5e8b0ca91ab771b6310e6 (patch) | |
tree | 1537942c0a2d2c94cfc98d3ddaebf44d4d537f99 /src/backends/reference/workloads | |
parent | 975c09aab8e628b8052226d7a2e2ed2b76aa6702 (diff) | |
download | armnn-20e58806b94636f579c5e8b0ca91ab771b6310e6.tar.gz |
IVGCVSW-2247 Adding a min Elementwise Workload and tests
Change-Id: I017ca6c23b62a8978982de0ca4ad204cb8cf7c67
Diffstat (limited to 'src/backends/reference/workloads')
5 files changed, 43 insertions, 1 deletions
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt index b9c150f6d4..7028f18e2d 100644 --- a/src/backends/reference/workloads/CMakeLists.txt +++ b/src/backends/reference/workloads/CMakeLists.txt @@ -19,6 +19,7 @@ list(APPEND armnnRefBackendWorkloads_sources FullyConnected.hpp Maximum.hpp Merger.hpp + Minimum.hpp Pad.cpp Pad.hpp Pooling2d.cpp diff --git a/src/backends/reference/workloads/ElementwiseFunction.cpp b/src/backends/reference/workloads/ElementwiseFunction.cpp index bb15049faa..88d51908fe 100644 --- a/src/backends/reference/workloads/ElementwiseFunction.cpp +++ b/src/backends/reference/workloads/ElementwiseFunction.cpp @@ -6,6 +6,7 @@ #include "ElementwiseFunction.hpp" #include "Broadcast.hpp" #include <functional> +#include "Minimum.hpp" #include "Maximum.hpp" @@ -29,4 +30,5 @@ 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 +template struct armnn::ElementwiseFunction<armnn::maximum<float>>; +template struct armnn::ElementwiseFunction<armnn::minimum<float>>;
\ No newline at end of file diff --git a/src/backends/reference/workloads/Minimum.hpp b/src/backends/reference/workloads/Minimum.hpp new file mode 100644 index 0000000000..2f3bdc1c02 --- /dev/null +++ b/src/backends/reference/workloads/Minimum.hpp @@ -0,0 +1,22 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace armnn +{ + +template<typename T> +struct minimum +{ + T + operator()(const T& input1, const T& input2) const + { + return std::min(input1, input2); + } +}; + +} //namespace armnn + diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.cpp b/src/backends/reference/workloads/RefElementwiseWorkload.cpp index 60a1b990f7..a18c7c569e 100644 --- a/src/backends/reference/workloads/RefElementwiseWorkload.cpp +++ b/src/backends/reference/workloads/RefElementwiseWorkload.cpp @@ -70,3 +70,6 @@ template class armnn::BaseUint8ElementwiseWorkload<armnn::DivisionQueueDescripto template class armnn::BaseFloat32ElementwiseWorkload<armnn::MaximumQueueDescriptor, armnn::maximum<float>>; template class armnn::BaseUint8ElementwiseWorkload<armnn::MaximumQueueDescriptor, armnn::maximum<float>>; + +template class armnn::BaseFloat32ElementwiseWorkload<armnn::MinimumQueueDescriptor, armnn::minimum<float>>; +template class armnn::BaseUint8ElementwiseWorkload<armnn::MinimumQueueDescriptor, armnn::minimum<float>>; diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.hpp b/src/backends/reference/workloads/RefElementwiseWorkload.hpp index 2772b77631..b5205938b2 100644 --- a/src/backends/reference/workloads/RefElementwiseWorkload.hpp +++ b/src/backends/reference/workloads/RefElementwiseWorkload.hpp @@ -10,6 +10,9 @@ #include <backendsCommon/Workload.hpp> #include <backendsCommon/WorkloadData.hpp> #include "Maximum.hpp" +#include "Minimum.hpp" + + namespace armnn { @@ -133,4 +136,15 @@ using RefMaximumUint8Workload = MaximumQueueDescriptor, StringMapping::RefMaximumWorkload_Execute>; +using RefMinimumFloat32Workload = + RefElementwiseWorkload<minimum<float>, + DataType::Float32, + MinimumQueueDescriptor, + StringMapping::RefMinimumWorkload_Execute>; + +using RefMinimumUint8Workload = + RefElementwiseWorkload<minimum<float>, + DataType::QuantisedAsymm8, + MinimumQueueDescriptor, + StringMapping::RefMinimumWorkload_Execute>; } // armnn |