ArmNN  NotReleased
FloatingPointConverter.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
8 #include "Half.hpp"
9 
10 #include <boost/assert.hpp>
11 
12 namespace armnnUtils
13 {
14 
15 void FloatingPointConverter::ConvertFloat32To16(const float* srcFloat32Buffer,
16  size_t numElements,
17  void* dstFloat16Buffer)
18 {
19  BOOST_ASSERT(srcFloat32Buffer != nullptr);
20  BOOST_ASSERT(dstFloat16Buffer != nullptr);
21 
22  armnn::Half* pHalf = reinterpret_cast<armnn::Half*>(dstFloat16Buffer);
23 
24  for (size_t i = 0; i < numElements; i++)
25  {
26  pHalf[i] = armnn::Half(srcFloat32Buffer[i]);
27  }
28 }
29 
30 void FloatingPointConverter::ConvertFloat16To32(const void* srcFloat16Buffer,
31  size_t numElements,
32  float* dstFloat32Buffer)
33 {
34  BOOST_ASSERT(srcFloat16Buffer != nullptr);
35  BOOST_ASSERT(dstFloat32Buffer != nullptr);
36 
37  const armnn::Half* pHalf = reinterpret_cast<const armnn::Half*>(srcFloat16Buffer);
38 
39  for (size_t i = 0; i < numElements; i++)
40  {
41  dstFloat32Buffer[i] = pHalf[i];
42  }
43 }
44 
45 } //namespace armnnUtils
half_float::half Half
Definition: Half.hpp:16
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
static void ConvertFloat32To16(const float *srcFloat32Buffer, size_t numElements, void *dstFloat16Buffer)