From 661dfa73bd5da4816a42acbb0768d0766d985e1c Mon Sep 17 00:00:00 2001 From: Nina Drozd Date: Tue, 2 Oct 2018 11:14:17 +0100 Subject: IVGCVSW-1886 - forward layer support for pad Ref returning false for now until implementation complete in 1885 Change-Id: I28cbc584eaa6ce3ad79a531db7155b3f9716f30c --- src/armnn/LayerSupport.cpp | 4 ++-- src/backends/WorkloadData.cpp | 3 ++- src/backends/neon/NeonLayerSupport.cpp | 8 ++++++++ src/backends/neon/NeonLayerSupport.hpp | 5 +++++ src/backends/reference/RefLayerSupport.cpp | 10 ++++++++++ src/backends/reference/RefLayerSupport.hpp | 5 +++++ 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp index 538f8e8cda..9561136d85 100644 --- a/src/armnn/LayerSupport.cpp +++ b/src/armnn/LayerSupport.cpp @@ -363,8 +363,8 @@ bool IsPadSupported(Compute compute, char* reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength) { - CopyErrorMessage(reasonIfUnsupported, "Not implemented", reasonIfUnsupportedMaxLength); - return false; + + FORWARD_LAYER_SUPPORT_FUNC(compute, IsPadSupported, input, output, descriptor); } } diff --git a/src/backends/WorkloadData.cpp b/src/backends/WorkloadData.cpp index 32ed97a052..a6a87f3782 100644 --- a/src/backends/WorkloadData.cpp +++ b/src/backends/WorkloadData.cpp @@ -858,7 +858,8 @@ void PadQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const ValidateSingleOutput(workloadInfo, "PadQueueDescriptor"); const TensorInfo& input = workloadInfo.m_InputTensorInfos[0]; - const TensorInfo& output = workloadInfo.m_OutputTensorInfos[1]; + const TensorInfo& output = workloadInfo.m_OutputTensorInfos[0]; + // input and output should have the same number of dimensions ValidateTensorNumDimensions(output, "PadQueueDescriptor", input.GetNumDimensions(), "output"); // there should be entry in the pad list for each dimension in the input tensor diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index a79f4c0365..bc1f96be3f 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -466,4 +466,12 @@ bool IsMeanSupportedNeon(const TensorInfo& input, return false; } +bool IsPadSupportedNeon(const TensorInfo& input, + const TensorInfo& output, + const PadDescriptor& descriptor, + std::string* reasonIfUnsupported) +{ + return false; +} + } diff --git a/src/backends/neon/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp index 590f4d64c6..439c45f59e 100644 --- a/src/backends/neon/NeonLayerSupport.hpp +++ b/src/backends/neon/NeonLayerSupport.hpp @@ -166,4 +166,9 @@ bool IsMeanSupportedNeon(const TensorInfo& input, const MeanDescriptor& descriptor, std::string* reasonIfUnsupported = nullptr); +bool IsPadSupportedNeon(const TensorInfo& input, + const TensorInfo& output, + const PadDescriptor& descriptor, + std::string* reasonIfUnsupported = nullptr); + } diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 536dd17ea8..1ca3d5b6d6 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -402,4 +402,14 @@ bool IsMeanSupportedRef(const TensorInfo& input, &TrueFunc<>); } +bool IsPadSupportedRef(const TensorInfo& input, + const TensorInfo& output, + const PadDescriptor& descriptor, + std::string* reasonIfUnsupported) +{ + ignore_unused(output); + ignore_unused(descriptor); + return false; +} + } diff --git a/src/backends/reference/RefLayerSupport.hpp b/src/backends/reference/RefLayerSupport.hpp index e819b6665a..0fac886234 100644 --- a/src/backends/reference/RefLayerSupport.hpp +++ b/src/backends/reference/RefLayerSupport.hpp @@ -158,4 +158,9 @@ bool IsMeanSupportedRef(const TensorInfo& input, const MeanDescriptor& descriptor, std::string* reasonIfUnsupported = nullptr); +bool IsPadSupportedRef(const TensorInfo& input, + const TensorInfo& output, + const PadDescriptor& descriptor, + std::string* reasonIfUnsupported = nullptr); + } -- cgit v1.2.1