IVGCVSW-2839 Add QuantisedSymm16 support to the ArmNN frontend
Change-Id: I76f4e7db55b0efbb1a5f7d1a32bf451e66add0c7
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
diff --git a/src/armnn/CompatibleTypes.hpp b/src/armnn/CompatibleTypes.hpp
index 2449876..4e31aed 100644
--- a/src/armnn/CompatibleTypes.hpp
+++ b/src/armnn/CompatibleTypes.hpp
@@ -36,6 +36,12 @@
}
template<>
+inline bool CompatibleTypes<int16_t>(DataType dataType)
+{
+ return dataType == DataType::QuantisedSymm16;
+}
+
+template<>
inline bool CompatibleTypes<int32_t>(DataType dataType)
{
return dataType == DataType::Signed32;
diff --git a/src/armnn/TypeUtils.hpp b/src/armnn/TypeUtils.hpp
index f7d0e07..55269f4 100644
--- a/src/armnn/TypeUtils.hpp
+++ b/src/armnn/TypeUtils.hpp
@@ -33,6 +33,12 @@
};
template<>
+struct ResolveTypeImpl<DataType::QuantisedSymm16>
+{
+ using Type = int16_t;
+};
+
+template<>
struct ResolveTypeImpl<DataType::Signed32>
{
using Type = int32_t;
diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp
index fc84462..152a5b4 100644
--- a/src/armnnDeserializer/Deserializer.cpp
+++ b/src/armnnDeserializer/Deserializer.cpp
@@ -373,6 +373,9 @@
case DataType_QuantisedAsymm8:
type = armnn::DataType::QuantisedAsymm8;
break;
+ case DataType_QuantisedSymm16:
+ type = armnn::DataType::QuantisedSymm16;
+ break;
case DataType_Signed32:
type = armnn::DataType::Signed32;
break;
diff --git a/src/armnnSerializer/ArmnnSchema.fbs b/src/armnnSerializer/ArmnnSchema.fbs
index 00c1a45..a11eead 100644
--- a/src/armnnSerializer/ArmnnSchema.fbs
+++ b/src/armnnSerializer/ArmnnSchema.fbs
@@ -27,7 +27,8 @@
Float32 = 1,
QuantisedAsymm8 = 2,
Signed32 = 3,
- Boolean = 4
+ Boolean = 4,
+ QuantisedSymm16 = 5
}
enum DataLayout : byte {
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 0340f56..cf67022 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -855,6 +855,15 @@
fbPayload = flatBuffersData.o;
break;
}
+ case armnn::DataType::QuantisedSymm16:
+ {
+ auto fbVector = CreateDataVector<int16_t>(constTensor.GetMemoryArea(), constTensor.GetNumBytes());
+ flatbuffers::Offset<serializer::ShortData> flatBuffersData = serializer::CreateShortData(
+ m_flatBufferBuilder,
+ fbVector);
+ fbPayload = flatBuffersData.o;
+ break;
+ }
case armnn::DataType::QuantisedAsymm8:
case armnn::DataType::Boolean:
default: