aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonWorkloadFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon/NeonWorkloadFactory.cpp')
-rw-r--r--src/backends/neon/NeonWorkloadFactory.cpp15
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;