From 1f140f7226c4ed7bc5cbaf2ce09654eee452f4bf Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Tue, 6 Apr 2021 12:25:55 +0100 Subject: MLCE-328 Serializer/Deserializer does not support Signed64 * Added support for Signed64 to flatbuffer's schema & updated source tree * Added support for Signed64 to TFLite Delegate * Added support for Signed64 to Serializer * Added support for Signed64 to Deserializer * Added unit test for ArgMinMax to Deserializer * Deprecated m_Output_Type from the ArgMinMaxDescriptor: the output type is solely determined by the DataType of the output Tensor * Fixed issue where RefArgMinMaxWorkload could output data using the wrong DataType * Added Signed64 to RefLayerSupport::IsArgMinMaxSupported as a supported type Signed-off-by: Mike Kelly Signed-off-by: Matthew Sloyan Change-Id: Ib622c052a1f8aa3e658262f8bde5a6881a8cbe10 --- delegate/src/ArgMinMax.hpp | 32 +++++++++----------------------- delegate/src/DelegateUtils.hpp | 2 ++ 2 files changed, 11 insertions(+), 23 deletions(-) (limited to 'delegate/src') diff --git a/delegate/src/ArgMinMax.hpp b/delegate/src/ArgMinMax.hpp index 090d18ef65..54994dfef7 100644 --- a/delegate/src/ArgMinMax.hpp +++ b/delegate/src/ArgMinMax.hpp @@ -67,40 +67,26 @@ TfLiteStatus VisitArgMinMaxOperator(DelegateData& delegateData, { desc.m_Function = armnn::ArgMinMaxFunction::Max; auto* argMaxParameters = reinterpret_cast(tfLiteNode->builtin_data); - switch (argMaxParameters->output_type) + if (argMaxParameters->output_type != kTfLiteInt32 && argMaxParameters->output_type != kTfLiteInt64) { - case kTfLiteInt32: - desc.m_Output_Type = armnn::DataType::Signed32; - break; - case kTfLiteInt64: - desc.m_Output_Type = armnn::DataType::Signed64; - break; - default: - TF_LITE_MAYBE_KERNEL_LOG( - tfLiteContext, - "TfLiteArmnnDelegate: output_type data type is not supported in operator #%d node #%d: ", - argMinMaxOperatorCode, nodeIndex); - return kTfLiteError; + TF_LITE_MAYBE_KERNEL_LOG( + tfLiteContext, + "TfLiteArmnnDelegate: output_type data type is not supported in operator #%d node #%d: ", + argMinMaxOperatorCode, nodeIndex); + return kTfLiteError; } } else { desc.m_Function = armnn::ArgMinMaxFunction::Min; auto* argMinParameters = reinterpret_cast(tfLiteNode->builtin_data); - switch (argMinParameters->output_type) + if (argMinParameters->output_type != kTfLiteInt32 && argMinParameters->output_type != kTfLiteInt64) { - case kTfLiteInt32: - desc.m_Output_Type = armnn::DataType::Signed32; - break; - case kTfLiteInt64: - desc.m_Output_Type = armnn::DataType::Signed64; - break; - default: - TF_LITE_MAYBE_KERNEL_LOG( + TF_LITE_MAYBE_KERNEL_LOG( tfLiteContext, "TfLiteArmnnDelegate: output_type data type is not supported in operator #%d node #%d: ", argMinMaxOperatorCode, nodeIndex); - return kTfLiteError; + return kTfLiteError; } } diff --git a/delegate/src/DelegateUtils.hpp b/delegate/src/DelegateUtils.hpp index 1b5f1e369e..1e5782ec42 100644 --- a/delegate/src/DelegateUtils.hpp +++ b/delegate/src/DelegateUtils.hpp @@ -391,6 +391,8 @@ armnn::DataType GetDataType(const TfLiteTensor& tfLiteTensor) return armnn::DataType::QSymmS16; case kTfLiteInt32: return armnn::DataType::Signed32; + case kTfLiteInt64: + return armnn::DataType::Signed64; default: throw armnn::Exception(&"TfLiteArmnnDelegate: Unsupported data type: " [ tfLiteTensor.type]); } -- cgit v1.2.1