diff options
Diffstat (limited to 'src/backends/tosaReference')
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); |