diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/armnn/Descriptors.hpp | 33 | ||||
-rw-r--r-- | include/armnn/DescriptorsFwd.hpp | 1 | ||||
-rw-r--r-- | include/armnn/ILayerSupport.hpp | 5 | ||||
-rw-r--r-- | include/armnn/INetwork.hpp | 7 | ||||
-rw-r--r-- | include/armnn/LayerSupport.hpp | 8 |
5 files changed, 54 insertions, 0 deletions
diff --git a/include/armnn/Descriptors.hpp b/include/armnn/Descriptors.hpp index 396e427ee4..f8dd18ab8a 100644 --- a/include/armnn/Descriptors.hpp +++ b/include/armnn/Descriptors.hpp @@ -421,4 +421,37 @@ struct PadDescriptor std::vector<std::pair<unsigned int, unsigned int>> m_PadList; }; +struct StridedSliceDescriptor +{ + StridedSliceDescriptor() + : m_DataLayout(DataLayout::NCHW) + {} + + StridedSliceDescriptor(const std::vector<int>& begin, + const std::vector<int>& end, + const std::vector<int>& stride) + : m_Begin(begin) + , m_End(end) + , m_Stride(stride) + , m_BeginMask(0) + , m_EndMask(0) + , m_ShrinkAxisMask(0) + , m_EllipsisMask(0) + , m_NewAxisMask(0) + , m_DataLayout(DataLayout::NCHW) + {} + + std::vector<int> m_Begin; + std::vector<int> m_End; + std::vector<int> m_Stride; + + int32_t m_BeginMask; + int32_t m_EndMask; + int32_t m_ShrinkAxisMask; + int32_t m_EllipsisMask; + int32_t m_NewAxisMask; + + DataLayoutIndexed m_DataLayout; +}; + } diff --git a/include/armnn/DescriptorsFwd.hpp b/include/armnn/DescriptorsFwd.hpp index 0e96c360d3..a2acc0717e 100644 --- a/include/armnn/DescriptorsFwd.hpp +++ b/include/armnn/DescriptorsFwd.hpp @@ -26,6 +26,7 @@ struct ResizeBilinearDescriptor; struct SoftmaxDescriptor; struct OriginsDescriptor; struct ViewsDescriptor; +struct StridedSliceDescriptor; using MergerDescriptor = OriginsDescriptor; using SplitterDescriptor = ViewsDescriptor; diff --git a/include/armnn/ILayerSupport.hpp b/include/armnn/ILayerSupport.hpp index 1bf268f409..e679f84109 100644 --- a/include/armnn/ILayerSupport.hpp +++ b/include/armnn/ILayerSupport.hpp @@ -183,6 +183,11 @@ public: const ViewsDescriptor& descriptor, Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const; + virtual bool IsStridedSliceSupported(const TensorInfo& input, + const TensorInfo& output, + const StridedSliceDescriptor& descriptor, + Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const; + virtual bool IsSubtractionSupported(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp index df274d6dc1..ac7faab279 100644 --- a/include/armnn/INetwork.hpp +++ b/include/armnn/INetwork.hpp @@ -311,6 +311,13 @@ public: virtual IConnectableLayer* AddPadLayer(const PadDescriptor& padDescriptor, const char* name = nullptr) = 0; + /// Adds a strided slice layer to the network. + /// @param StridedSliceDescriptor - Parameters for the strided slice operation. + /// @param name - Optional name for the layer. + /// @return - Interface for configuring the layer. + virtual IConnectableLayer* AddStridedSliceLayer(const StridedSliceDescriptor& stridedSliceDescriptor, + const char* name = nullptr) = 0; + protected: ~INetwork() {} }; diff --git a/include/armnn/LayerSupport.hpp b/include/armnn/LayerSupport.hpp index bd20f185da..7bed5779d3 100644 --- a/include/armnn/LayerSupport.hpp +++ b/include/armnn/LayerSupport.hpp @@ -254,4 +254,12 @@ bool IsPadSupported(const BackendId& backend, char* reasonIfUnsupported = nullptr, size_t reasonIfUnsupportedMaxLength = 1024); +/// Deprecated in favor of IBackend and ILayerSupport interfaces +bool IsStridedSliceSupported(const BackendId& backend, + const TensorInfo& input, + const TensorInfo& output, + const StridedSliceDescriptor& descriptor, + char* reasonIfUnsupported = nullptr, + size_t reasonIfUnsupportedMaxLength = 1024); + } |