提交 4f6db5ef 编写于 作者: J Joseph Myers 提交者: Scott Wood

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: NJoseph Myers <joseph@codesourcery.com>
Signed-off-by: NScott Wood <scottwood@freescale.com>
上级 28414a6d
...@@ -685,7 +685,7 @@ do { \ ...@@ -685,7 +685,7 @@ do { \
else \ else \
{ \ { \
r = 0; \ r = 0; \
if (X##_s) \ if (!X##_s) \
r = ~r; \ r = ~r; \
} \ } \
FP_SET_EXCEPTION(FP_EX_INVALID); \ FP_SET_EXCEPTION(FP_EX_INVALID); \
...@@ -762,7 +762,7 @@ do { \ ...@@ -762,7 +762,7 @@ do { \
if (!rsigned) \ if (!rsigned) \
{ \ { \
r = 0; \ r = 0; \
if (X##_s) \ if (!X##_s) \
r = ~r; \ r = ~r; \
} \ } \
else if (rsigned != 2) \ else if (rsigned != 2) \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册