From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54537) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TImM0-0008S0-4d for qemu-devel@nongnu.org; Mon, 01 Oct 2012 16:12:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TImLy-0002Rx-Ud for qemu-devel@nongnu.org; Mon, 01 Oct 2012 16:12:36 -0400 Received: from hall.aurel32.net ([88.191.126.93]:37349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TImLy-0002R6-OX for qemu-devel@nongnu.org; Mon, 01 Oct 2012 16:12:34 -0400 Date: Mon, 1 Oct 2012 22:12:30 +0200 From: Aurelien Jarno Message-ID: <20121001201230.GG4623@ohm.aurel32.net> References: <1348845423-20085-1-git-send-email-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1348845423-20085-1-git-send-email-peter.maydell@linaro.org> Subject: Re: [Qemu-devel] [PATCH] fpu/softfloat.c: Return correctly signed values from uint64_to_float32 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Alexander Graf , Richard Henderson , qemu-devel@nongnu.org, patches@linaro.org On Fri, Sep 28, 2012 at 04:17:03PM +0100, Peter Maydell wrote: > The uint64_to_float32() conversion function was incorrectly always > returning numbers with the sign bit set (ie negative numbers). Correct > this so we return positive numbers instead. > > Signed-off-by: Peter Maydell > --- > As far as I can see we use this function only in the three PPC SPE > insns efscfuf, efsctsf, efsctuf. It is therefore untested(!); if > anybody with PPC hw to test against could check the results of > those functions that would be cool. > > fpu/softfloat.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fpu/softfloat.c b/fpu/softfloat.c > index b29256a..91497e8 100644 > --- a/fpu/softfloat.c > +++ b/fpu/softfloat.c > @@ -1238,7 +1238,7 @@ float32 uint64_to_float32( uint64 a STATUS_PARAM ) > if ( a == 0 ) return float32_zero; > shiftCount = countLeadingZeros64( a ) - 40; > if ( 0 <= shiftCount ) { > - return packFloat32( 1 > 0, 0x95 - shiftCount, a< + return packFloat32(0, 0x95 - shiftCount, a< } > else { > shiftCount += 7; > @@ -1248,7 +1248,7 @@ float32 uint64_to_float32( uint64 a STATUS_PARAM ) > else { > a <<= shiftCount; > } > - return roundAndPackFloat32( 1 > 0, 0x9C - shiftCount, a STATUS_VAR ); > + return roundAndPackFloat32(0, 0x9C - shiftCount, a STATUS_VAR); > } > } > Thanks, applied. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net