GitHub #734 Add ExecuteNetwork support for S64 bit output
* Add Signed 64 bit support for Output and Debug Layers
Signed-off-by: John Mcloughlin <john.mcloughlin@arm.com>
Change-Id: I991c2d5f1067b16d0fac362e7406305fbe90d034
diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp
index c4d9583..ad6ec9a 100644
--- a/src/backends/reference/RefWorkloadFactory.cpp
+++ b/src/backends/reference/RefWorkloadFactory.cpp
@@ -45,6 +45,10 @@
}
return false;
}
+bool IsSigned64(const WorkloadInfo& info)
+{
+ return IsDataType<DataType::Signed64>(info);
+}
bool IsSigned32(const WorkloadInfo& info)
{
return IsDataType<DataType::Signed32>(info);
@@ -263,6 +267,10 @@
{
return std::make_unique<RefDebugSigned32Workload>(*debugQueueDescriptor, info);
}
+ if (IsSigned64(info))
+ {
+ return std::make_unique<RefDebugSigned64Workload>(*debugQueueDescriptor, info);
+ }
return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(*debugQueueDescriptor, info);
}
case LayerType::DepthToSpace:
diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp
index 50aecc8..564dd7a 100644
--- a/src/backends/reference/workloads/Debug.cpp
+++ b/src/backends/reference/workloads/Debug.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -165,4 +165,11 @@
unsigned int slotIndex,
bool outputsToFile);
+template void Debug<int64_t>(const TensorInfo& inputInfo,
+ const int64_t* inputData,
+ LayerGuid guid,
+ const std::string& layerName,
+ unsigned int slotIndex,
+ bool outputsToFile);
+
} // namespace armnn
diff --git a/src/backends/reference/workloads/RefDebugWorkload.cpp b/src/backends/reference/workloads/RefDebugWorkload.cpp
index 3653bb6..94eed4f 100644
--- a/src/backends/reference/workloads/RefDebugWorkload.cpp
+++ b/src/backends/reference/workloads/RefDebugWorkload.cpp
@@ -65,5 +65,6 @@
template class RefDebugWorkload<DataType::QSymmS16>;
template class RefDebugWorkload<DataType::QSymmS8>;
template class RefDebugWorkload<DataType::Signed32>;
+template class RefDebugWorkload<DataType::Signed64>;
} // namespace armnn
diff --git a/src/backends/reference/workloads/RefDebugWorkload.hpp b/src/backends/reference/workloads/RefDebugWorkload.hpp
index 0dd98d2..4c99990 100644
--- a/src/backends/reference/workloads/RefDebugWorkload.hpp
+++ b/src/backends/reference/workloads/RefDebugWorkload.hpp
@@ -47,5 +47,6 @@
using RefDebugQSymmS16Workload = RefDebugWorkload<DataType::QSymmS16>;
using RefDebugQSymmS8Workload = RefDebugWorkload<DataType::QSymmS8>;
using RefDebugSigned32Workload = RefDebugWorkload<DataType::Signed32>;
+using RefDebugSigned64Workload = RefDebugWorkload<DataType::Signed64>;
} // namespace armnn
diff --git a/tests/ExecuteNetwork/ArmNNExecutor.cpp b/tests/ExecuteNetwork/ArmNNExecutor.cpp
index 8ce3689..42d41ef 100644
--- a/tests/ExecuteNetwork/ArmNNExecutor.cpp
+++ b/tests/ExecuteNetwork/ArmNNExecutor.cpp
@@ -682,6 +682,11 @@
PrintTensor<int>(outputWriteInfo, "%d ");
break;
}
+ case armnn::DataType::Signed64:
+ {
+ PrintTensor<int64_t>(outputWriteInfo, "%ld ");
+ break;
+ }
case armnn::DataType::QSymmS8:
case armnn::DataType::QAsymmS8:
{
@@ -697,7 +702,6 @@
case armnn::DataType::Float16:
case armnn::DataType::QSymmS16:
case armnn::DataType::BFloat16:
- case armnn::DataType::Signed64:
default:
{
LogAndThrow("Unexpected DataType");