aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNattapat Chaimanowong <nattapat.chaimanowong@arm.com>2019-03-19 12:26:36 +0000
committerNattapat Chaimanowong <nattapat.chaimanowong@arm.com>2019-03-19 12:26:36 +0000
commitcd5ac23039dc3acd750c44442960280cc33307ef (patch)
tree37de0bae199345355535448b6c1ce2c624a298b8
parent2a326b5bbff91ffaedd9017f388aa45862047743 (diff)
downloadarmnn-cd5ac23039dc3acd750c44442960280cc33307ef.tar.gz
IVGCVSW-2839 Add QuantisedSymm16 support to the ArmNN frontend
Change-Id: I76f4e7db55b0efbb1a5f7d1a32bf451e66add0c7 Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
-rw-r--r--include/armnn/Types.hpp3
-rw-r--r--include/armnn/TypesUtils.hpp2
-rw-r--r--src/armnn/CompatibleTypes.hpp6
-rw-r--r--src/armnn/TypeUtils.hpp6
-rw-r--r--src/armnnDeserializer/Deserializer.cpp3
-rw-r--r--src/armnnSerializer/ArmnnSchema.fbs3
-rw-r--r--src/armnnSerializer/Serializer.cpp9
7 files changed, 30 insertions, 2 deletions
diff --git a/include/armnn/Types.hpp b/include/armnn/Types.hpp
index 598eaaf6be..36e3c5b52a 100644
--- a/include/armnn/Types.hpp
+++ b/include/armnn/Types.hpp
@@ -29,7 +29,8 @@ enum class DataType
Float32 = 1,
QuantisedAsymm8 = 2,
Signed32 = 3,
- Boolean = 4
+ Boolean = 4,
+ QuantisedSymm16 = 5
};
enum class DataLayout
diff --git a/include/armnn/TypesUtils.hpp b/include/armnn/TypesUtils.hpp
index e7652649b0..b5fb95d9ba 100644
--- a/include/armnn/TypesUtils.hpp
+++ b/include/armnn/TypesUtils.hpp
@@ -83,6 +83,7 @@ constexpr unsigned int GetDataTypeSize(DataType dataType)
case DataType::Float32:
case DataType::Signed32: return 4U;
case DataType::QuantisedAsymm8: return 1U;
+ case DataType::QuantisedSymm16: return 2U;
case DataType::Boolean: return 1U;
default: return 0U;
}
@@ -128,6 +129,7 @@ constexpr const char* GetDataTypeName(DataType dataType)
case DataType::Float16: return "Float16";
case DataType::Float32: return "Float32";
case DataType::QuantisedAsymm8: return "Unsigned8";
+ case DataType::QuantisedSymm16: return "Signed16";
case DataType::Signed32: return "Signed32";
case DataType::Boolean: return "Boolean";
diff --git a/src/armnn/CompatibleTypes.hpp b/src/armnn/CompatibleTypes.hpp
index 2449876544..4e31aed2aa 100644
--- a/src/armnn/CompatibleTypes.hpp
+++ b/src/armnn/CompatibleTypes.hpp
@@ -36,6 +36,12 @@ inline bool CompatibleTypes<uint8_t>(DataType dataType)
}
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 f7d0e077c8..55269f4620 100644
--- a/src/armnn/TypeUtils.hpp
+++ b/src/armnn/TypeUtils.hpp
@@ -33,6 +33,12 @@ struct ResolveTypeImpl<DataType::QuantisedAsymm8>
};
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 fc84462abc..152a5b4c93 100644
--- a/src/armnnDeserializer/Deserializer.cpp
+++ b/src/armnnDeserializer/Deserializer.cpp
@@ -373,6 +373,9 @@ armnn::TensorInfo ToTensorInfo(Deserializer::TensorRawPtr tensorPtr)
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 00c1a4502b..a11eeadf12 100644
--- a/src/armnnSerializer/ArmnnSchema.fbs
+++ b/src/armnnSerializer/ArmnnSchema.fbs
@@ -27,7 +27,8 @@ enum DataType : byte {
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 0340f56d17..cf67022267 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -855,6 +855,15 @@ flatbuffers::Offset<serializer::ConstTensor>
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: