diff options
Diffstat (limited to 'src/backends/neon/NeonWorkloadFactory.cpp')
-rw-r--r-- | src/backends/neon/NeonWorkloadFactory.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp index 7d94dafc9a..c83e8b3e6d 100644 --- a/src/backends/neon/NeonWorkloadFactory.cpp +++ b/src/backends/neon/NeonWorkloadFactory.cpp @@ -558,7 +558,20 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::UnidirectionalSequenceLstm : { auto desc = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor); - return MakeWorkloadHelper<NeonUnidirectionalSequenceLstmFloatWorkload, NullWorkload>(*desc, info); + + if ((info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Float32) && + (info.m_InputTensorInfos[1].GetDataType() == armnn::DataType::Float32) && + (info.m_InputTensorInfos[2].GetDataType() == armnn::DataType::Float32) && + (info.m_OutputTensorInfos[0].GetDataType() == armnn::DataType::Float32) && + (info.m_OutputTensorInfos[1].GetDataType() == armnn::DataType::Float32) && + (info.m_OutputTensorInfos[2].GetDataType() == armnn::DataType::Float32)) + { + return std::make_unique<NeonUnidirectionalSequenceLstmFloatWorkload>(*desc, info); + } + else + { + return std::make_unique<NeonUnidirectionalSequenceLstmWorkload>(*desc, info); + } } default: return nullptr; |