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 */