From 20e984f442483493ece882c3040785368eb31c96 Mon Sep 17 00:00:00 2001 From: ruoyan01 Date: Wed, 12 Dec 2018 18:11:25 +0000 Subject: [PATCH] IVGCVSW-2348 Support boolean data type Change-Id: Ifd28e049192e6f5fe5c0f5d358afb2b530eef882 --- include/armnn/Types.hpp | 5 +++-- include/armnn/TypesUtils.hpp | 15 +++++++++++---- src/armnn/TypeUtils.hpp | 6 ++++++ src/armnn/test/UtilsTests.cpp | 2 ++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/include/armnn/Types.hpp b/include/armnn/Types.hpp index d815005..baf7443 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 68ad455..7eacc00 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 static constexpr DataType Value = DataType::Signed32; }; +template<> +struct GetDataTypeImpl +{ + static constexpr DataType Value = DataType::Boolean; +}; + template constexpr DataType GetDataType() { diff --git a/src/armnn/TypeUtils.hpp b/src/armnn/TypeUtils.hpp index 57d019b..01a0e64 100644 --- a/src/armnn/TypeUtils.hpp +++ b/src/armnn/TypeUtils.hpp @@ -33,6 +33,12 @@ struct ResolveTypeImpl using Type = float; }; +template<> +struct ResolveTypeImpl +{ + using Type = bool; +}; + template using ResolveType = typename ResolveTypeImpl
::Type; diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp index 67fe73e..9933137 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() == armnn::DataType::Float32)); BOOST_TEST((armnn::GetDataType() == armnn::DataType::QuantisedAsymm8)); BOOST_TEST((armnn::GetDataType() == armnn::DataType::Signed32)); + BOOST_TEST((armnn::GetDataType() == armnn::DataType::Boolean)); } BOOST_AUTO_TEST_CASE(PermuteDescriptorWithTooManyMappings) -- 2.7.4