From: Joseph Myers Date: Mon, 4 Nov 2013 16:53:50 +0000 (+0000) Subject: math-emu: fix floating-point to integer unsigned saturation X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=4f6db5efff8256c7f608285877e892e7e649137a;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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: Joseph Myers Signed-off-by: Scott Wood --- diff --git a/include/math-emu/op-common.h b/include/math-emu/op-common.h index 9696a5e2c437..70fe5e989ace 100644 --- a/include/math-emu/op-common.h +++ b/include/math-emu/op-common.h @@ -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) \