diff options
Diffstat (limited to 'src/backends/neon/NeonLayerSupport.cpp')
-rw-r--r-- | src/backends/neon/NeonLayerSupport.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index 2b2229a4de..8901e47a0a 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -76,6 +76,7 @@ #include "workloads/NeonSubtractionWorkload.hpp" #include "workloads/NeonTransposeConvolution2dWorkload.hpp" #include "workloads/NeonTransposeWorkload.hpp" +#include "workloads/NeonUnidirectionalSequenceLstmFloatWorkload.hpp" #endif namespace armnn @@ -344,6 +345,17 @@ bool NeonLayerSupport::IsLayerSupported(const LayerType& type, *(PolymorphicDowncast<const QLstmDescriptor*>(&descriptor)), lstmParamsInfo.value(), reasonIfUnsupported); + case LayerType::UnidirectionalSequenceLstm: + return IsUnidirectionalSequenceLstmSupported(infos[0], + infos[1], + infos[2], + infos[3], + infos[4], + infos[5], + *(PolymorphicDowncast<const + UnidirectionalSequenceLstmDescriptor*>(&descriptor)), + lstmParamsInfo.value(), + reasonIfUnsupported); case LayerType::Maximum: return IsMaximumSupported(infos[0], infos[1], infos[2], reasonIfUnsupported); case LayerType::Mean: @@ -1421,4 +1433,26 @@ bool NeonLayerSupport::IsTransposeSupported(const TensorInfo& input, FORWARD_WORKLOAD_VALIDATE_FUNC(NeonTransposeWorkloadValidate, reasonIfUnsupported, input, output, descriptor); } +bool NeonLayerSupport::IsUnidirectionalSequenceLstmSupported(const TensorInfo& input, + const TensorInfo& outputStateIn, + const TensorInfo& cellStateIn, + const TensorInfo& output, + const Optional<TensorInfo>& hiddenStateOutput, + const Optional<TensorInfo>& cellStateOutput, + const UnidirectionalSequenceLstmDescriptor& descriptor, + const LstmInputParamsInfo& paramsInfo, + Optional<std::string&> reasonIfUnsupported) const +{ + FORWARD_WORKLOAD_VALIDATE_FUNC(NeonUnidirectionalSequenceLstmFloatWorkloadValidate, + reasonIfUnsupported, + input, + outputStateIn, + cellStateIn, + output, + hiddenStateOutput, + cellStateOutput, + descriptor, + paramsInfo); +} + } // namespace armnn |