Commit 4f6db5ef authored by Joseph Myers's avatar Joseph Myers Committed by Scott Wood
Browse files

math-emu: fix floating-point to integer unsigned saturation



The math-emu macros _FP_TO_INT and _FP_TO_INT_ROUND are supposed to
saturate their results for out-of-range arguments, except in the case
rsigned == 2 (when instead the low bits of the result are taken).
However, in the case rsigned == 0 (converting to unsigned integers),
they mistakenly produce 0 for positive results and the maximum
unsigned integer for negative results, the opposite of correct
unsigned saturation.  This patch fixes the logic.

Signed-off-by: default avatarJoseph Myers <joseph@codesourcery.com>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent 28414a6d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -685,7 +685,7 @@ do { \
	    else								\
	      {									\
		r = 0;								\
		if (X##_s)							\
		if (!X##_s)							\
		  r = ~r;							\
	      }									\
	    FP_SET_EXCEPTION(FP_EX_INVALID);					\
@@ -762,7 +762,7 @@ do { \
	    if (!rsigned)							\
	      {									\
		r = 0;								\
		if (X##_s)							\
		if (!X##_s)							\
		  r = ~r;							\
	      }									\
	    else if (rsigned != 2)						\