diff options
Diffstat (limited to 'src/backends/backendsCommon/test')
3 files changed, 82 insertions, 11 deletions
diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp index 49e90791bf..0d06595ebe 100644 --- a/src/backends/backendsCommon/test/DynamicBackendTests.hpp +++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp @@ -1450,12 +1450,11 @@ void CreateReferenceDynamicBackendTestImpl() TensorInfo outputInfo(outputShape, DataType::Float32); TensorInfo weightInfo(weightShape, DataType::Float32); Convolution2dDescriptor convolution2dDescriptor; + std::vector<TensorInfo> infos = {inputInfo, outputInfo, weightInfo, TensorInfo()}; bool referenceConvolution2dSupported = - referenceLayerSupport->IsConvolution2dSupported(inputInfo, - outputInfo, - convolution2dDescriptor, - weightInfo, - EmptyOptional()); + referenceLayerSupport->IsLayerSupported(LayerType::Convolution2d, + infos, + convolution2dDescriptor); CHECK(referenceConvolution2dSupported); // Test the backend instance by creating a workload @@ -1535,12 +1534,11 @@ void CreateSampleDynamicBackendTestImpl() TensorInfo outputInfo(outputShape, DataType::Float32); TensorInfo weightInfo(weightShape, DataType::Float32); Convolution2dDescriptor convolution2dDescriptor; - bool sampleConvolution2dSupported = - sampleLayerSupport->IsConvolution2dSupported(inputInfo, - outputInfo, - convolution2dDescriptor, - weightInfo, - EmptyOptional()); + std::vector<TensorInfo> infos = {inputInfo, outputInfo, weightInfo, TensorInfo()}; + bool referenceConvolution2dSupported = + referenceLayerSupport->IsLayerSupported(LayerType::Convolution2d, + infos, + convolution2dDescriptor); CHECK(!sampleConvolution2dSupported); // Test the backend instance by creating a workload diff --git a/src/backends/backendsCommon/test/MockBackend.hpp b/src/backends/backendsCommon/test/MockBackend.hpp index 3a5e79a224..df133dfed2 100644 --- a/src/backends/backendsCommon/test/MockBackend.hpp +++ b/src/backends/backendsCommon/test/MockBackend.hpp @@ -172,6 +172,55 @@ public: class MockLayerSupport : public LayerSupportBase { public: + bool IsLayerSupported(const LayerType& type, + const std::vector<TensorInfo>& infos, + const BaseDescriptor& descriptor, + const Optional<LstmInputParamsInfo>& /*lstmParamsInfo*/, + const Optional<QuantizedLstmInputParamsInfo>& /*quantizedLstmParamsInfo*/, + Optional<std::string&> reasonIfUnsupported) const override + { + switch(type) + { + case LayerType::Input: + return IsInputSupported(infos[0], reasonIfUnsupported); + case LayerType::Output: + return IsOutputSupported(infos[0], reasonIfUnsupported); + case LayerType::Addition: + return IsAdditionSupported(infos[0], infos[1], infos[2], reasonIfUnsupported); + case LayerType::Convolution2d: + { + if (infos.size() != 4) + { + throw InvalidArgumentException("Invalid number of TransposeConvolution2d " + "TensorInfos. TensorInfos should be of format: " + "{input, output, weights, biases}."); + } + + auto desc = *(PolymorphicDowncast<const Convolution2dDescriptor*>(&descriptor)); + if (infos[3] == TensorInfo()) + { + return IsConvolution2dSupported(infos[0], + infos[1], + desc, + infos[2], + EmptyOptional(), + reasonIfUnsupported); + } + else + { + return IsConvolution2dSupported(infos[0], + infos[1], + desc, + infos[2], + infos[3], + reasonIfUnsupported); + } + } + default: + return false; + } + } + bool IsInputSupported(const TensorInfo& /*input*/, Optional<std::string&> /*reasonIfUnsupported = EmptyOptional()*/) const override { diff --git a/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp b/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp index 75e637efdf..380ce4a3f5 100644 --- a/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp +++ b/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp @@ -14,6 +14,30 @@ namespace armnn class MockImportLayerSupport : public LayerSupportBase { public: + bool IsLayerSupported(const LayerType& type, + const std::vector<TensorInfo>& infos, + const BaseDescriptor& /*descriptor*/, + const Optional<LstmInputParamsInfo>& /*lstmParamsInfo*/, + const Optional<QuantizedLstmInputParamsInfo>& /*quantizedLstmParamsInfo*/, + Optional<std::string&> reasonIfUnsupported) const override + { + switch(type) + { + case LayerType::Addition: + return IsAdditionSupported(infos[0], infos[1], infos[2], reasonIfUnsupported); + case LayerType::Input: + return IsInputSupported(infos[0], reasonIfUnsupported); + case LayerType::Output: + return IsOutputSupported(infos[0], reasonIfUnsupported); + case LayerType::MemCopy: + return LayerSupportBase::IsMemCopySupported(infos[0], infos[1], reasonIfUnsupported); + case LayerType::MemImport: + return LayerSupportBase::IsMemImportSupported(infos[0], infos[1], reasonIfUnsupported); + default: + return false; + } + } + bool IsAdditionSupported(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, |