Module Name:    src
Committed By:   matt
Date:           Mon Jul  4 08:02:35 UTC 2011

Modified Files:
        src/lib/libc/arch/arm/softfloat: softfloat.h
        src/lib/libc/arch/m68k/softfloat: softfloat.h
        src/lib/libc/arch/mips/softfloat: softfloat.h
        src/lib/libc/arch/powerpc/softfloat: softfloat.h
        src/lib/libc/arch/sh3/softfloat: softfloat.h
        src/lib/libc/arch/sparc64/softfloat: softfloat.h
        src/lib/libc/softfloat/bits64: softfloat.c

Log Message:
Add __floatunsidf __floatunsisf __floatunsitf routines.
XXX i think they are correct but not sure.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/arch/arm/softfloat/softfloat.h
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/arch/m68k/softfloat/softfloat.h
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/arch/mips/softfloat/softfloat.h
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/arch/powerpc/softfloat/softfloat.h
cvs rdiff -u -r1.9 -r1.10 src/lib/libc/arch/sh3/softfloat/softfloat.h
cvs rdiff -u -r1.6 -r1.7 src/lib/libc/arch/sparc64/softfloat/softfloat.h
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/softfloat/bits64/softfloat.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/arch/arm/softfloat/softfloat.h
diff -u src/lib/libc/arch/arm/softfloat/softfloat.h:1.7 src/lib/libc/arch/arm/softfloat/softfloat.h:1.8
--- src/lib/libc/arch/arm/softfloat/softfloat.h:1.7	Tue May 16 20:55:51 2006
+++ src/lib/libc/arch/arm/softfloat/softfloat.h	Mon Jul  4 08:02:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.7 2006/05/16 20:55:51 mrg Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.8 2011/07/04 08:02:34 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -119,13 +119,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */
 float32 int64_to_float32( long long );

Index: src/lib/libc/arch/m68k/softfloat/softfloat.h
diff -u src/lib/libc/arch/m68k/softfloat/softfloat.h:1.2 src/lib/libc/arch/m68k/softfloat/softfloat.h:1.3
--- src/lib/libc/arch/m68k/softfloat/softfloat.h:1.2	Tue May 16 20:55:51 2006
+++ src/lib/libc/arch/m68k/softfloat/softfloat.h	Mon Jul  4 08:02:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.2 2006/05/16 20:55:51 mrg Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.3 2011/07/04 08:02:34 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -119,13 +119,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );

Index: src/lib/libc/arch/mips/softfloat/softfloat.h
diff -u src/lib/libc/arch/mips/softfloat/softfloat.h:1.3 src/lib/libc/arch/mips/softfloat/softfloat.h:1.4
--- src/lib/libc/arch/mips/softfloat/softfloat.h:1.3	Mon Jan 17 23:53:04 2011
+++ src/lib/libc/arch/mips/softfloat/softfloat.h	Mon Jul  4 08:02:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.3 2011/01/17 23:53:04 matt Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.4 2011/07/04 08:02:34 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -121,13 +121,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */
 float32 int64_to_float32( long long );

Index: src/lib/libc/arch/powerpc/softfloat/softfloat.h
diff -u src/lib/libc/arch/powerpc/softfloat/softfloat.h:1.5 src/lib/libc/arch/powerpc/softfloat/softfloat.h:1.6
--- src/lib/libc/arch/powerpc/softfloat/softfloat.h:1.5	Tue May 16 20:55:51 2006
+++ src/lib/libc/arch/powerpc/softfloat/softfloat.h	Mon Jul  4 08:02:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.5 2006/05/16 20:55:51 mrg Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.6 2011/07/04 08:02:34 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -119,13 +119,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );

Index: src/lib/libc/arch/sh3/softfloat/softfloat.h
diff -u src/lib/libc/arch/sh3/softfloat/softfloat.h:1.9 src/lib/libc/arch/sh3/softfloat/softfloat.h:1.10
--- src/lib/libc/arch/sh3/softfloat/softfloat.h:1.9	Tue May 16 20:55:51 2006
+++ src/lib/libc/arch/sh3/softfloat/softfloat.h	Mon Jul  4 08:02:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.9 2006/05/16 20:55:51 mrg Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.10 2011/07/04 08:02:34 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -119,13 +119,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */
 float32 int64_to_float32( long long );

Index: src/lib/libc/arch/sparc64/softfloat/softfloat.h
diff -u src/lib/libc/arch/sparc64/softfloat/softfloat.h:1.6 src/lib/libc/arch/sparc64/softfloat/softfloat.h:1.7
--- src/lib/libc/arch/sparc64/softfloat/softfloat.h:1.6	Thu Nov  8 15:50:23 2007
+++ src/lib/libc/arch/sparc64/softfloat/softfloat.h	Mon Jul  4 08:02:35 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softfloat.h,v 1.6 2007/11/08 15:50:23 martin Exp $	*/
+/*	$NetBSD: softfloat.h,v 1.7 2011/07/04 08:02:35 matt Exp $	*/
 
 /* This is a derivative work. */
 
@@ -121,13 +121,17 @@
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );

Index: src/lib/libc/softfloat/bits64/softfloat.c
diff -u src/lib/libc/softfloat/bits64/softfloat.c:1.5 src/lib/libc/softfloat/bits64/softfloat.c:1.6
--- src/lib/libc/softfloat/bits64/softfloat.c:1.5	Thu Nov  8 21:31:04 2007
+++ src/lib/libc/softfloat/bits64/softfloat.c	Mon Jul  4 08:02:35 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: softfloat.c,v 1.5 2007/11/08 21:31:04 martin Exp $ */
+/* $NetBSD: softfloat.c,v 1.6 2011/07/04 08:02:35 matt Exp $ */
 
 /*
  * This version hacked for use with gcc -msoft-float by bjh21.
@@ -46,7 +46,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: softfloat.c,v 1.5 2007/11/08 21:31:04 martin Exp $");
+__RCSID("$NetBSD: softfloat.c,v 1.6 2011/07/04 08:02:35 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #ifdef SOFTFLOAT_FOR_GCC
@@ -1128,6 +1128,15 @@
 
 }
 
+float32 uint32_to_float32( uint32 a )
+{
+    if ( a == 0 ) return 0;
+    if ( a & (bits32) 0x80000000 )
+	return normalizeRoundAndPackFloat32( 0, 0x9D, a >> 1 );
+    return normalizeRoundAndPackFloat32( 0, 0x9C, a );
+}
+
+
 /*
 -------------------------------------------------------------------------------
 Returns the result of converting the 32-bit two's complement integer `a'
@@ -1151,6 +1160,17 @@
 
 }
 
+float64 uint32_to_float64( uint32 a )
+{
+    int8 shiftCount;
+    bits64 zSig = a;
+
+    if ( a == 0 ) return 0;
+    shiftCount = countLeadingZeros32( a ) + 21;
+    return packFloat64( 0, 0x432 - shiftCount, zSig<<shiftCount );
+
+}
+
 #ifdef FLOATX80
 
 /*
@@ -1177,6 +1197,17 @@
 
 }
 
+floatx80 uint32_to_floatx80( uint32 a )
+{
+    int8 shiftCount;
+    bits64 zSig = a;
+
+    if ( a == 0 ) return packFloatx80( 0, 0, 0 );
+    shiftCount = countLeadingZeros32( a ) + 32;
+    return packFloatx80( 0, 0x403E - shiftCount, zSig<<shiftCount );
+
+}
+
 #endif
 
 #ifdef FLOAT128
@@ -1204,6 +1235,17 @@
 
 }
 
+float128 uint32_to_float128( uint32 a )
+{
+    int8 shiftCount;
+    bits64 zSig0 = a;
+
+    if ( a == 0 ) return packFloat128( 0, 0, 0, 0 );
+    shiftCount = countLeadingZeros32( a ) + 17;
+    return packFloat128( 0, 0x402E - shiftCount, zSig0<<shiftCount, 0 );
+
+}
+
 #endif
 
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */

Reply via email to