Commit b53a2b41 authored by Daniel Jacobowitz's avatar Daniel Jacobowitz Committed by Russell King

[ARM] 3758/1: Preserve signalling NaNs in conversion

Patch from Daniel Jacobowitz

The fcvtds and fcvtsd instructions were generating a qnan bit pattern
for both quiet and signalling NaNs.
Signed-off-by: default avatarDaniel Jacobowitz <dan@codesourcery.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent c29ecac1
...@@ -465,7 +465,7 @@ static u32 vfp_double_fcvts(int sd, int unused, int dm, u32 fpscr) ...@@ -465,7 +465,7 @@ static u32 vfp_double_fcvts(int sd, int unused, int dm, u32 fpscr)
*/ */
if (tm & (VFP_INFINITY|VFP_NAN)) { if (tm & (VFP_INFINITY|VFP_NAN)) {
vsd.exponent = 255; vsd.exponent = 255;
if (tm & VFP_NAN) if (tm == VFP_QNAN)
vsd.significand |= VFP_SINGLE_SIGNIFICAND_QNAN; vsd.significand |= VFP_SINGLE_SIGNIFICAND_QNAN;
goto pack_nan; goto pack_nan;
} else if (tm & VFP_ZERO) } else if (tm & VFP_ZERO)
......
...@@ -506,7 +506,7 @@ static u32 vfp_single_fcvtd(int dd, int unused, s32 m, u32 fpscr) ...@@ -506,7 +506,7 @@ static u32 vfp_single_fcvtd(int dd, int unused, s32 m, u32 fpscr)
*/ */
if (tm & (VFP_INFINITY|VFP_NAN)) { if (tm & (VFP_INFINITY|VFP_NAN)) {
vdd.exponent = 2047; vdd.exponent = 2047;
if (tm & VFP_NAN) if (tm == VFP_QNAN)
vdd.significand |= VFP_DOUBLE_SIGNIFICAND_QNAN; vdd.significand |= VFP_DOUBLE_SIGNIFICAND_QNAN;
goto pack_nan; goto pack_nan;
} else if (tm & VFP_ZERO) } else if (tm & VFP_ZERO)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment