aboutsummaryrefslogtreecommitdiff
path: root/src/backends/tosaReference
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/tosaReference')
-rw-r--r--src/backends/tosaReference/TosaRefLayerSupport.cpp7
-rw-r--r--src/backends/tosaReference/test/TosaRefEndToEndTests.cpp42
-rw-r--r--src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp52
3 files changed, 101 insertions, 0 deletions
diff --git a/src/backends/tosaReference/TosaRefLayerSupport.cpp b/src/backends/tosaReference/TosaRefLayerSupport.cpp
index e5427ebc93..0d0d07a783 100644
--- a/src/backends/tosaReference/TosaRefLayerSupport.cpp
+++ b/src/backends/tosaReference/TosaRefLayerSupport.cpp
@@ -43,6 +43,13 @@ bool TosaRefLayerSupport::IsLayerSupported(const LayerType& type,
inputInfos.push_back(&infos[1]);
outputInfos.push_back(&infos[2]);
break;
+ case LayerType::Concat:
+ for (unsigned int i = 0; i < infos.size() - 1; ++i)
+ {
+ inputInfos.push_back(&infos[i]);
+ }
+ outputInfos.push_back(&infos.back());
+ break;
case LayerType::Constant:
outputInfos.push_back(&infos[0]);
break;
diff --git a/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp b/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
index 49f2cb7319..a377293fbf 100644
--- a/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
@@ -7,6 +7,7 @@
#include "backendsCommon/test/AdditionEndToEndTestImpl.hpp"
#include "backendsCommon/test/Convolution2dEndToEndTestImpl.hpp"
+#include "backendsCommon/test/ConcatEndToEndTestImpl.hpp"
#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
#include "backendsCommon/test/ReshapeEndToEndTestImpl.hpp"
#include "backendsCommon/test/SliceEndToEndTestImpl.hpp"
@@ -34,6 +35,47 @@ TEST_CASE("TosaRefAdditionEndtoEndTestFloat16")
AdditionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
}
+// Concat
+TEST_CASE("TosaRefConcatEndToEndDim0TestFloat32")
+{
+ ConcatDim0EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim0TestInt32")
+{
+ ConcatDim0EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim1TestFloat32")
+{
+ ConcatDim1EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim1TestInt32")
+{
+ ConcatDim1EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim2TestFloat32")
+{
+ ConcatDim2EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim2TestInt32")
+{
+ ConcatDim2EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim3TestFloat32")
+{
+ ConcatDim3EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
+}
+
+TEST_CASE("TosaRefConcatEndToEndDim3TestInt32")
+{
+ ConcatDim3EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
+}
+
// Conv2d
TEST_CASE("TosaRefConv2dEndtoEndTestFloat32")
{
diff --git a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
index 3c3abc2af3..051965f541 100644
--- a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
@@ -61,6 +61,58 @@ TEST_CASE("IsLayerSupportedTosaReferenceAdditionUnsupported")
CHECK(!supported);
}
+TEST_CASE("IsLayerSupportedTosaReferenceConcat")
+{
+ TensorShape input0Shape = { 2, 3, 2, 2 };
+ TensorShape input1Shape = { 2, 3, 2, 2 };
+ TensorShape outputShape = { 2, 6, 2, 2 };
+ TensorInfo input0Info(input0Shape, DataType::Float32);
+ TensorInfo input1Info(input1Shape, DataType::Float32);
+ TensorInfo outputInfo(outputShape, DataType::Float32);
+
+ OriginsDescriptor descriptor;
+ std::vector<TensorShape> shapes = {input0Shape, input1Shape} ;
+ unsigned int concatAxis = 1;
+ descriptor = CreateDescriptorForConcatenation(shapes.begin(), shapes.end(), concatAxis);
+
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(LayerType::Concat,
+ {input0Info, input1Info, outputInfo},
+ descriptor,
+ EmptyOptional(),
+ EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceConcatUnsupported")
+{
+ TensorShape input0Shape = { 2, 3, 2, 2 };
+ TensorShape input1Shape = { 2, 3, 2, 2 };
+ TensorShape outputShape = { 2, 6, 2, 2 };
+ TensorInfo input0Info(input0Shape, armnn::DataType::QAsymmU8);
+ TensorInfo input1Info(input1Shape, armnn::DataType::QAsymmU8);
+ TensorInfo outputInfo(outputShape, armnn::DataType::QAsymmU8);
+
+ OriginsDescriptor descriptor;
+ std::vector<armnn::TensorShape> shapes = {input0Shape, input1Shape} ;
+ unsigned int concatAxis = 1;
+ descriptor = armnn::CreateDescriptorForConcatenation(shapes.begin(), shapes.end(), concatAxis);
+
+ TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(LayerType::Concat,
+ {input0Info, input1Info, outputInfo},
+ descriptor,
+ EmptyOptional(),
+ EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(!supported);
+}
+
TEST_CASE("IsLayerSupportedTosaReferenceConstant")
{
TensorInfo outputInfo({1,1,3,4}, DataType::Float32);