aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruoyan01 <ruomei.yan@arm.com>2018-12-12 18:11:25 +0000
committerruoyan01 <ruomei.yan@arm.com>2018-12-13 12:51:23 +0000
commit20e984f442483493ece882c3040785368eb31c96 (patch)
tree33a9e50c955c31a3942b0e7806a7efdbfd8358d6
parent482ca850aa980f9ed740fdb7537e2b74ddeb7561 (diff)
downloadarmnn-20e984f442483493ece882c3040785368eb31c96.tar.gz
IVGCVSW-2348 Support boolean data type
Change-Id: Ifd28e049192e6f5fe5c0f5d358afb2b530eef882
-rw-r--r--include/armnn/Types.hpp5
-rw-r--r--include/armnn/TypesUtils.hpp15
-rw-r--r--src/armnn/TypeUtils.hpp6
-rw-r--r--src/armnn/test/UtilsTests.cpp2
4 files changed, 22 insertions, 6 deletions
diff --git a/include/armnn/Types.hpp b/include/armnn/Types.hpp
index d815005f5b..baf74437dc 100644
--- a/include/armnn/Types.hpp
+++ b/include/armnn/Types.hpp
@@ -26,9 +26,10 @@ enum class Status
enum class DataType
{
Float16 = 0,
- Float32 = 1,
+ Float32 = 1,
QuantisedAsymm8 = 2,
- Signed32 = 3
+ Signed32 = 3,
+ Boolean = 4
};
enum class DataLayout
diff --git a/include/armnn/TypesUtils.hpp b/include/armnn/TypesUtils.hpp
index 68ad45546d..7eacc00a93 100644
--- a/include/armnn/TypesUtils.hpp
+++ b/include/armnn/TypesUtils.hpp
@@ -79,11 +79,12 @@ constexpr unsigned int GetDataTypeSize(DataType dataType)
{
switch (dataType)
{
- case DataType::Float16: return 2U;
+ case DataType::Float16: return 2U;
case DataType::Float32:
- case DataType::Signed32: return 4U;
- case DataType::QuantisedAsymm8: return 1U;
- default: return 0U;
+ case DataType::Signed32: return 4U;
+ case DataType::QuantisedAsymm8: return 1U;
+ case DataType::Boolean: return 1U;
+ default: return 0U;
}
}
@@ -167,6 +168,12 @@ struct GetDataTypeImpl<int32_t>
static constexpr DataType Value = DataType::Signed32;
};
+template<>
+struct GetDataTypeImpl<bool>
+{
+ static constexpr DataType Value = DataType::Boolean;
+};
+
template <typename T>
constexpr DataType GetDataType()
{
diff --git a/src/armnn/TypeUtils.hpp b/src/armnn/TypeUtils.hpp
index 57d019bd69..01a0e6479a 100644
--- a/src/armnn/TypeUtils.hpp
+++ b/src/armnn/TypeUtils.hpp
@@ -33,6 +33,12 @@ struct ResolveTypeImpl<DataType::Float32>
using Type = float;
};
+template<>
+struct ResolveTypeImpl<DataType::Boolean>
+{
+ using Type = bool;
+};
+
template<DataType DT>
using ResolveType = typename ResolveTypeImpl<DT>::Type;
diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp
index 67fe73ea80..9933137edc 100644
--- a/src/armnn/test/UtilsTests.cpp
+++ b/src/armnn/test/UtilsTests.cpp
@@ -20,6 +20,7 @@ BOOST_AUTO_TEST_CASE(DataTypeSize)
BOOST_TEST(armnn::GetDataTypeSize(armnn::DataType::Float32) == 4);
BOOST_TEST(armnn::GetDataTypeSize(armnn::DataType::QuantisedAsymm8) == 1);
BOOST_TEST(armnn::GetDataTypeSize(armnn::DataType::Signed32) == 4);
+ BOOST_TEST(armnn::GetDataTypeSize(armnn::DataType::Boolean) == 1);
}
BOOST_AUTO_TEST_CASE(GetDataTypeTest)
@@ -27,6 +28,7 @@ BOOST_AUTO_TEST_CASE(GetDataTypeTest)
BOOST_TEST((armnn::GetDataType<float>() == armnn::DataType::Float32));
BOOST_TEST((armnn::GetDataType<uint8_t>() == armnn::DataType::QuantisedAsymm8));
BOOST_TEST((armnn::GetDataType<int32_t>() == armnn::DataType::Signed32));
+ BOOST_TEST((armnn::GetDataType<bool>() == armnn::DataType::Boolean));
}
BOOST_AUTO_TEST_CASE(PermuteDescriptorWithTooManyMappings)