Hi,
While trying conversion of single precision float value to half precision value for ARM, it seems the code generates incorrect values in some of the scenarios :
"inline uint32_t perform_round16(iss_info *iss, uint32_t sign, int16_t exp, uint32_t frac, FPRounding rounding)"
[Case 1]
1. From ARM specs overflow_to_inf is true and result is an overflow condition.
if N != 16 || fpcr.AHP == '0' then // Single, double or IEEE half precision
if biased_exp >= 2^E - 1 then
result = if overflow_to_inf then FPInfinity(sign) else FPMaxNormal(sign);
FPProcessException(FPExc_Overflow, fpcr);
error = 1.0; // Ensure that an Inexact exception occurs