IVGCVSW-2348 Support boolean data type
authorruoyan01 <ruomei.yan@arm.com>
Wed, 12 Dec 2018 18:11:25 +0000 (18:11 +0000)
committerruoyan01 <ruomei.yan@arm.com>
Thu, 13 Dec 2018 12:51:23 +0000 (12:51 +0000)
Change-Id: Ifd28e049192e6f5fe5c0f5d358afb2b530eef882

include/armnn/Types.hpp
include/armnn/TypesUtils.hpp
src/armnn/TypeUtils.hpp
src/armnn/test/UtilsTests.cpp

index d815005..baf7443 100644 (file)
@@ -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
index 68ad455..7eacc00 100644 (file)
@@ -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()
 {
index 57d019b..01a0e64 100644 (file)
@@ -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;
 
index 67fe73e..9933137 100644 (file)
@@ -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)