aboutsummaryrefslogtreecommitdiff
path: root/src/armnnUtils
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2023-07-11 16:49:00 +0100
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2023-07-12 11:45:48 +0000
commit9f62d33156376c040dac9a4063dc733b95c5ad27 (patch)
tree5a6d06f5a83673b972e6d4cc1d78ebe1c5b2e221 /src/armnnUtils
parenteda42ce6d8cec75c8af292b01c52a74d0856f7e9 (diff)
downloadarmnn-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')
-rw-r--r--src/armnnUtils/FloatingPointConverter.cpp5
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]);
+ }
}
}