aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/workloads
diff options
context:
space:
mode:
authorsaoste01 <saoirse.stewart@arm.com>2018-11-28 16:57:20 +0000
committerLes Bell <les.bell@arm.com>2018-11-29 10:28:22 +0000
commit2df12b3abf2171869582581dd275d556bad87411 (patch)
tree6c6345b45bd04dd7d4c29d889bf1cfe9428a1c0c /src/backends/reference/workloads
parent90539697433b507e20cf0d56f6c7f18614e03973 (diff)
downloadarmnn-2df12b3abf2171869582581dd275d556bad87411.tar.gz
IVGCVSW-2254 Add Reference workload for Maximum
Change-Id: Id7302c6b1df995ebe6eb8eb94bab38bee1b31b0b
Diffstat (limited to 'src/backends/reference/workloads')
-rw-r--r--src/backends/reference/workloads/CMakeLists.txt1
-rw-r--r--src/backends/reference/workloads/ElementwiseFunction.cpp3
-rw-r--r--src/backends/reference/workloads/Maximum.hpp22
-rw-r--r--src/backends/reference/workloads/RefElementwiseWorkload.cpp3
-rw-r--r--src/backends/reference/workloads/RefElementwiseWorkload.hpp14
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