IVGCVSW-7170 Add Concat support to TOSA Reference Backend
* Change comment for the unique tensor names in all tosa common operators
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I247b4b2365d5f0173218c5dfd11fba12d2399959
diff --git a/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp b/src/backends/tosaReference/test/TosaRefEndToEndTests.cpp
index 49f2cb7..a377293 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 @@
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 3c3abc2..051965f 100644
--- a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
@@ -61,6 +61,58 @@
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);