Skip to content

Commit

Permalink
math-emu: fix floating-point to integer unsigned saturation
Browse files Browse the repository at this point in the history
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: Joseph Myers <[email protected]>
Signed-off-by: Scott Wood <[email protected]>
  • Loading branch information
jsm28 authored and Scott Wood committed Jan 8, 2014
1 parent 28414a6 commit 4f6db5e
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions include/math-emu/op-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,7 @@ do { \
else \
{ \
r = 0; \
if (X##_s) \
if (!X##_s) \
r = ~r; \
} \
FP_SET_EXCEPTION(FP_EX_INVALID); \
Expand Down Expand Up @@ -762,7 +762,7 @@ do { \
if (!rsigned) \
{ \
r = 0; \
if (X##_s) \
if (!X##_s) \
r = ~r; \
} \
else if (rsigned != 2) \
Expand Down

0 comments on commit 4f6db5e

Please sign in to comment.