diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2023-07-11 16:49:00 +0100 |
---|---|---|
committer | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2023-07-12 11:45:48 +0000 |
commit | 9f62d33156376c040dac9a4063dc733b95c5ad27 (patch) | |
tree | 5a6d06f5a83673b972e6d4cc1d78ebe1c5b2e221 /src/armnnUtils/FloatingPointConverter.cpp | |
parent | eda42ce6d8cec75c8af292b01c52a74d0856f7e9 (diff) | |
download | armnn-9f62d33156376c040dac9a4063dc733b95c5ad27.tar.gz |
IVGCVSW-7783 Add check for FP16 infinity values
* Check to round to closest finite FP16 value when convert FP32 to FP16
* Unit tests to be added
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: If3b982ff3030379ac33c47d4be13edb0bda679f6
Diffstat (limited to 'src/armnnUtils/FloatingPointConverter.cpp')
-rw-r--r-- | src/armnnUtils/FloatingPointConverter.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/armnnUtils/FloatingPointConverter.cpp b/src/armnnUtils/FloatingPointConverter.cpp index 7a684f1eb0..024b74eea4 100644 --- a/src/armnnUtils/FloatingPointConverter.cpp +++ b/src/armnnUtils/FloatingPointConverter.cpp @@ -25,6 +25,11 @@ void FloatingPointConverter::ConvertFloat32To16(const float* srcFloat32Buffer, for (size_t i = 0; i < numElements; i++) { pHalf[i] = armnn::Half(srcFloat32Buffer[i]); + if (isinf(pHalf[i])) + { + // If the value of converted Fp16 is infinity, round to the closest finite Fp16 value. + pHalf[i] = copysign(std::numeric_limits<armnn::Half>::max(), pHalf[i]); + } } } |