aboutsummaryrefslogtreecommitdiff
path: root/include/armnn
diff options
context:
space:
mode:
Diffstat (limited to 'include/armnn')
-rw-r--r--include/armnn/Descriptors.hpp33
-rw-r--r--include/armnn/DescriptorsFwd.hpp1
-rw-r--r--include/armnn/ILayerSupport.hpp5
-rw-r--r--include/armnn/INetwork.hpp7
-rw-r--r--include/armnn/LayerSupport.hpp8
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);
+
}