aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2020-02-28 12:45:21 +0000
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2020-03-03 15:59:39 +0000
commitc3bf6efb48a4540c8addcc02813c9381e4fceb1f (patch)
tree55fd9c3fa639ee32aa847dda2a525a7badee9e8d /src
parent490b7becb8029ead26423b0d62e631a929e55d6c (diff)
downloadarmnn-c3bf6efb48a4540c8addcc02813c9381e4fceb1f.tar.gz
IVGCVSW-4508 Add BFloat16 data type
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: Ie2fcf06d0bae9e2ef958e60ab9e8b121fdc7b590
Diffstat (limited to 'src')
-rw-r--r--src/armnn/ResolveType.hpp7
-rw-r--r--src/armnn/test/UtilsTests.cpp19
-rw-r--r--src/armnnUtils/BFloat16.hpp13
3 files changed, 39 insertions, 0 deletions
diff --git a/src/armnn/ResolveType.hpp b/src/armnn/ResolveType.hpp
index 66309344db..e1bea42d3c 100644
--- a/src/armnn/ResolveType.hpp
+++ b/src/armnn/ResolveType.hpp
@@ -6,6 +6,7 @@
#pragma once
#include "armnn/Types.hpp"
+#include "BFloat16.hpp"
#include "Half.hpp"
namespace armnn
@@ -62,6 +63,12 @@ struct ResolveTypeImpl<DataType::Boolean>
using Type = uint8_t;
};
+template<>
+struct ResolveTypeImpl<DataType::BFloat16>
+{
+ using Type = BFloat16;
+};
+
template<DataType DT>
using ResolveType = typename ResolveTypeImpl<DT>::Type;
diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp
index 4c371d6ed9..faf4480029 100644
--- a/src/armnn/test/UtilsTests.cpp
+++ b/src/armnn/test/UtilsTests.cpp
@@ -85,6 +85,25 @@ BOOST_AUTO_TEST_CASE(HalfType)
BOOST_CHECK((GetDataTypeName(armnn::DataType::Float16) == std::string("Float16")));
}
+BOOST_AUTO_TEST_CASE(BFloatType)
+{
+ armnn::BFloat16 a = 16256;
+
+ // Test BFloat16 type
+ BOOST_CHECK_EQUAL(sizeof(a), 2);
+
+ // Test utility function returns correct type.
+ using ResolvedType = armnn::ResolveType<armnn::DataType::BFloat16>;
+ constexpr bool isBFloat16Type = std::is_same<armnn::BFloat16, ResolvedType>::value;
+ BOOST_CHECK(isBFloat16Type);
+
+ //Test utility functions return correct size
+ BOOST_CHECK(GetDataTypeSize(armnn::DataType::BFloat16) == 2);
+
+ //Test utility functions return correct name
+ BOOST_CHECK((GetDataTypeName(armnn::DataType::BFloat16) == std::string("BFloat16")));
+}
+
BOOST_AUTO_TEST_CASE(GraphTopologicalSortSimpleTest)
{
std::map<int, std::vector<int>> graph;
diff --git a/src/armnnUtils/BFloat16.hpp b/src/armnnUtils/BFloat16.hpp
new file mode 100644
index 0000000000..bce45aa1ff
--- /dev/null
+++ b/src/armnnUtils/BFloat16.hpp
@@ -0,0 +1,13 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <stdint.h>
+
+namespace armnn
+{
+ using BFloat16 = uint16_t;
+} //namespace armnn