aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/workloads
diff options
context:
space:
mode:
authorÉanna Ó Catháin <eanna.ocathain@arm.com>2018-12-04 10:29:06 +0000
committerLes Bell <les.bell@arm.com>2018-12-04 11:59:51 +0000
commit20e58806b94636f579c5e8b0ca91ab771b6310e6 (patch)
tree1537942c0a2d2c94cfc98d3ddaebf44d4d537f99 /src/backends/reference/workloads
parent975c09aab8e628b8052226d7a2e2ed2b76aa6702 (diff)
downloadarmnn-20e58806b94636f579c5e8b0ca91ab771b6310e6.tar.gz
IVGCVSW-2247 Adding a min Elementwise Workload and tests
Change-Id: I017ca6c23b62a8978982de0ca4ad204cb8cf7c67
Diffstat (limited to 'src/backends/reference/workloads')
-rw-r--r--src/backends/reference/workloads/CMakeLists.txt1
-rw-r--r--src/backends/reference/workloads/ElementwiseFunction.cpp4
-rw-r--r--src/backends/reference/workloads/Minimum.hpp22
-rw-r--r--src/backends/reference/workloads/RefElementwiseWorkload.cpp3
-rw-r--r--src/backends/reference/workloads/RefElementwiseWorkload.hpp14
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