aboutsummaryrefslogtreecommitdiff
path: root/src/backends/tosaReference/test
diff options
context:
space:
mode:
authorNikhil Raj <nikhil.raj@arm.com>2022-12-05 11:24:35 +0000
committerNikhil Raj Arm <nikhil.raj@arm.com>2022-12-23 10:28:30 +0000
commit9a33946fd0d5e14be6f957b5a985438fa69684d6 (patch)
tree07b93ffccc31c2183567fda3523d79a82510745b /src/backends/tosaReference/test
parent259adafd6840c612c2eb64653290cbe2cfa7cd8e (diff)
downloadarmnn-9a33946fd0d5e14be6f957b5a985438fa69684d6.tar.gz
IVGCVSW-7172 Add ElementwiseBinary (Subtraction & Multiplication) support to TOSA Reference Backend
* Removed AdditionOperator and moved to new ElementwiseBinaryOperator. Signed-off-by: Nikhil Raj <nikhil.raj@arm.com> Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com> Change-Id: I8ce20f7575d68334aadcd176827bca3db53d0052
Diffstat (limited to 'src/backends/tosaReference/test')
-rw-r--r--src/backends/tosaReference/test/TosaRefEndToEndTests.cpp31
-rw-r--r--src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp88
2 files changed, 119 insertions, 0 deletions
diff --git a/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp b/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
index a377293fbf..67b87ae8b9 100644
--- a/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
@@ -8,9 +8,11 @@
#include "backendsCommon/test/AdditionEndToEndTestImpl.hpp"
#include "backendsCommon/test/Convolution2dEndToEndTestImpl.hpp"
#include "backendsCommon/test/ConcatEndToEndTestImpl.hpp"
+#include "backendsCommon/test/MultiplicationEndToEndTestImpl.hpp"
#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
#include "backendsCommon/test/ReshapeEndToEndTestImpl.hpp"
#include "backendsCommon/test/SliceEndToEndTestImpl.hpp"
+#include "backendsCommon/test/SubtractionEndToEndTestImpl.hpp"
#include "backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp"
#include <doctest/doctest.h>
@@ -150,6 +152,35 @@ TEST_CASE("TosaRefSliceEndtoEndTestFloat16")
{
SliceEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
}
+TEST_CASE("TosaRefSubtractionEndtoEndTestFloat32")
+{
+ SubtractionEndToEnd<DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefSubtractionEndtoEndTestInt32")
+{
+ SubtractionEndToEnd<DataType::Signed32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefSubtractionEndtoEndTestFloat16")
+{
+ SubtractionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat32")
+{
+ MultiplicationEndToEnd<DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefMultiplicationEndtoEndTestInt32")
+{
+ MultiplicationEndToEnd<DataType::Signed32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat16")
+{
+ MultiplicationEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
+}
// TransposeConvolution2d
TEST_CASE("TosaRefTransposeConvolution2dEndToEndFloatNhwcTest")
diff --git a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
index 051965f541..9119b13557 100644
--- a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
@@ -190,6 +190,50 @@ TEST_CASE("IsLayerSupportedTosaReferenceConv2dUnsupported")
CHECK(!supported);
}
+TEST_CASE("IsLayerSupportedTosaReferenceMultiplication")
+{
+ TensorShape shape0 = {1,1,3,4};
+ TensorShape shape1 = {1,1,3,4};
+ TensorShape outShape = {1,1,3,4};
+ TensorInfo in0(shape0, armnn::DataType::Float32);
+ TensorInfo in1(shape1, armnn::DataType::Float32);
+ TensorInfo out(outShape, armnn::DataType::Float32);
+
+ BaseDescriptor desc;
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Multiplication,
+ {in0, in1, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceMultiplicationUnsupported")
+{
+ TensorShape shape0 = {1,1,3,4};
+ TensorShape shape1 = {1,2,3,4};
+ TensorShape outShape = {1,1,3,4};
+ TensorInfo in0(shape0, armnn::DataType::Signed64);
+ TensorInfo in1(shape1, armnn::DataType::Signed64);
+ TensorInfo out(outShape, armnn::DataType::Signed64);
+
+ BaseDescriptor desc;
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Multiplication,
+ {in0, in1, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(!supported);
+}
+
TEST_CASE("IsLayerSupportedTosaReferenceMaxPooling2d")
{
TensorShape inShape = {1,1,3,4};
@@ -376,6 +420,50 @@ TEST_CASE("IsLayerSupportedTosaReferenceSliceUnsupported")
CHECK(!supported);
}
+TEST_CASE("IsLayerSupportedTosaReferenceSubtraction")
+{
+ TensorShape shape0 = {1,1,3,4};
+ TensorShape shape1 = {1,1,3,4};
+ TensorShape outShape = {1,1,3,4};
+ TensorInfo in0(shape0, armnn::DataType::Float32);
+ TensorInfo in1(shape1, armnn::DataType::Float32);
+ TensorInfo out(outShape, armnn::DataType::Float32);
+
+ BaseDescriptor desc;
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Subtraction,
+ {in0, in1, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceSubtractionUnsupported")
+{
+ TensorShape shape0 = {1,1,3,4};
+ TensorShape shape1 = {4};
+ TensorShape outShape = {1,1,3,4};
+ TensorInfo in0(shape0, armnn::DataType::Signed64);
+ TensorInfo in1(shape1, armnn::DataType::Signed64);
+ TensorInfo out(outShape, armnn::DataType::Signed64);
+
+ BaseDescriptor desc;
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Subtraction,
+ {in0, in1, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(!supported);
+}
+
TEST_CASE("IsLayerSupportedTosaReferenceTransposeConv2d")
{
TensorInfo inputInfo ({ 1, 3, 3, 1 }, DataType::Float32);