summaryrefslogtreecommitdiff
path: root/soft-fp
diff options
context:
space:
mode:
Diffstat (limited to 'soft-fp')
-rw-r--r--soft-fp/Makefile13
-rw-r--r--soft-fp/adddf3.c25
-rw-r--r--soft-fp/addsf3.c25
-rw-r--r--soft-fp/addtf3.c25
-rw-r--r--soft-fp/divdf3.c19
-rw-r--r--soft-fp/divsf3.c19
-rw-r--r--soft-fp/divtf3.c19
-rw-r--r--soft-fp/double.h77
-rw-r--r--soft-fp/eqdf2.c17
-rw-r--r--soft-fp/eqsf2.c17
-rw-r--r--soft-fp/eqtf2.c17
-rw-r--r--soft-fp/extenddftf2.c27
-rw-r--r--soft-fp/extended.h77
-rw-r--r--soft-fp/extendsfdf2.c27
-rw-r--r--soft-fp/extendsftf2.c27
-rw-r--r--soft-fp/fixdfdi.c23
-rw-r--r--soft-fp/fixdfsi.c23
-rw-r--r--soft-fp/fixsfdi.c23
-rw-r--r--soft-fp/fixsfsi.c23
-rw-r--r--soft-fp/fixtfdi.c23
-rw-r--r--soft-fp/fixtfsi.c23
-rw-r--r--soft-fp/fixunsdfdi.c21
-rw-r--r--soft-fp/fixunsdfsi.c21
-rw-r--r--soft-fp/fixunssfdi.c21
-rw-r--r--soft-fp/fixunssfsi.c21
-rw-r--r--soft-fp/fixunstfdi.c21
-rw-r--r--soft-fp/fixunstfsi.c21
-rw-r--r--soft-fp/floatdidf.c23
-rw-r--r--soft-fp/floatdisf.c23
-rw-r--r--soft-fp/floatditf.c23
-rw-r--r--soft-fp/floatsidf.c23
-rw-r--r--soft-fp/floatsisf.c23
-rw-r--r--soft-fp/floatsitf.c23
-rw-r--r--soft-fp/floatundidf.c47
-rw-r--r--soft-fp/floatundisf.c47
-rw-r--r--soft-fp/floatunditf.c47
-rw-r--r--soft-fp/floatunsidf.c47
-rw-r--r--soft-fp/floatunsisf.c47
-rw-r--r--soft-fp/floatunsitf.c47
-rw-r--r--soft-fp/gedf2.c17
-rw-r--r--soft-fp/gesf2.c17
-rw-r--r--soft-fp/getf2.c17
-rw-r--r--soft-fp/ledf2.c17
-rw-r--r--soft-fp/lesf2.c17
-rw-r--r--soft-fp/letf2.c17
-rw-r--r--soft-fp/muldf3.c19
-rw-r--r--soft-fp/mulsf3.c19
-rw-r--r--soft-fp/multf3.c19
-rw-r--r--soft-fp/negdf2.c19
-rw-r--r--soft-fp/negsf2.c19
-rw-r--r--soft-fp/negtf2.c19
-rw-r--r--soft-fp/op-1.h38
-rw-r--r--soft-fp/op-2.h169
-rw-r--r--soft-fp/op-4.h136
-rw-r--r--soft-fp/op-8.h18
-rw-r--r--soft-fp/op-common.h1111
-rw-r--r--soft-fp/quad.h77
-rw-r--r--soft-fp/single.h53
-rw-r--r--soft-fp/soft-fp.h37
-rw-r--r--soft-fp/sqrtdf2.c19
-rw-r--r--soft-fp/sqrtsf2.c19
-rw-r--r--soft-fp/sqrttf2.c19
-rw-r--r--soft-fp/subdf3.c25
-rw-r--r--soft-fp/subsf3.c25
-rw-r--r--soft-fp/subtf3.c25
-rw-r--r--soft-fp/truncdfsf2.c27
-rw-r--r--soft-fp/trunctfdf2.c27
-rw-r--r--soft-fp/trunctfsf2.c27
-rw-r--r--soft-fp/unorddf2.c45
-rw-r--r--soft-fp/unordsf2.c46
-rw-r--r--soft-fp/unordtf2.c46
71 files changed, 817 insertions, 2503 deletions
diff --git a/soft-fp/Makefile b/soft-fp/Makefile
index 8eb89c5e51..e0a3cfb0df 100644
--- a/soft-fp/Makefile
+++ b/soft-fp/Makefile
@@ -23,18 +23,17 @@
subdir := soft-fp
gcc-single-routines := negsf2 addsf3 subsf3 mulsf3 divsf3 eqsf2 \
- lesf2 gesf2 unordsf2 fixsfsi fixunssfsi floatsisf fixsfdi \
- fixunssfdi floatdisf sqrtsf2 floatunsisf floatundisf
+ lesf2 gesf2 fixsfsi fixunssfsi floatsisf fixsfdi \
+ fixunssfdi floatdisf sqrtsf2
gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 \
- ledf2 gedf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
- fixunsdfdi floatdidf extendsfdf2 truncdfsf2 sqrtdf2 floatunsidf \
- floatundidf
+ ledf2 gedf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
+ fixunsdfdi floatdidf extendsfdf2 truncdfsf2 sqrtdf2
gcc-quad-routines := negtf2 addtf3 subtf3 multf3 divtf3 eqtf2 \
- letf2 getf2 unordtf2 fixtfsi fixunstfsi floatsitf fixtfdi \
+ letf2 getf2 fixtfsi fixunstfsi floatsitf fixtfdi \
fixunstfdi floatditf extendsftf2 trunctfsf2 extenddftf2 \
- trunctfdf2 sqrttf2 floatunsitf floatunditf
+ trunctfdf2 sqrttf2
distribute := double.h op-1.h op-2.h op-4.h op-common.h quad.h \
single.h soft-fp.h extended.h Banner op-8.h testit.c \
diff --git a/soft-fp/adddf3.c b/soft-fp/adddf3.c
index 24c03db0a6..6802d13e37 100644
--- a/soft-fp/adddf3.c
+++ b/soft-fp/adddf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a + b
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __adddf3(DFtype a, DFtype b)
+double __adddf3(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_D(A, a);
- FP_UNPACK_SEMIRAW_D(B, b);
+ FP_UNPACK_D(A, a);
+ FP_UNPACK_D(B, b);
FP_ADD_D(R, A, B);
- FP_PACK_SEMIRAW_D(r, R);
+ FP_PACK_D(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/addsf3.c b/soft-fp/addsf3.c
index b86991ee56..a1e7f0c10c 100644
--- a/soft-fp/addsf3.c
+++ b/soft-fp/addsf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a + b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __addsf3(SFtype a, SFtype b)
+float __addsf3(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_S(A, a);
- FP_UNPACK_SEMIRAW_S(B, b);
+ FP_UNPACK_S(A, a);
+ FP_UNPACK_S(B, b);
FP_ADD_S(R, A, B);
- FP_PACK_SEMIRAW_S(r, R);
+ FP_PACK_S(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/addtf3.c b/soft-fp/addtf3.c
index 49b67f0ba9..b7348f5acc 100644
--- a/soft-fp/addtf3.c
+++ b/soft-fp/addtf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a + b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __addtf3(TFtype a, TFtype b)
+long double __addtf3(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
- FP_UNPACK_SEMIRAW_Q(B, b);
+ FP_UNPACK_Q(A, a);
+ FP_UNPACK_Q(B, b);
FP_ADD_Q(R, A, B);
- FP_PACK_SEMIRAW_Q(r, R);
+ FP_PACK_Q(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/divdf3.c b/soft-fp/divdf3.c
index c3bb0d247c..f8a479dce7 100644
--- a/soft-fp/divdf3.c
+++ b/soft-fp/divdf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a / b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __divdf3(DFtype a, DFtype b)
+double __divdf3(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_D(A, a);
diff --git a/soft-fp/divsf3.c b/soft-fp/divsf3.c
index 176bb3c2cb..9e9234fddf 100644
--- a/soft-fp/divsf3.c
+++ b/soft-fp/divsf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a / b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __divsf3(SFtype a, SFtype b)
+float __divsf3(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
FP_UNPACK_S(A, a);
diff --git a/soft-fp/divtf3.c b/soft-fp/divtf3.c
index 916fbfe974..264af97cb0 100644
--- a/soft-fp/divtf3.c
+++ b/soft-fp/divtf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a / b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __divtf3(TFtype a, TFtype b)
+long double __divtf3(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_Q(A, a);
diff --git a/soft-fp/double.h b/soft-fp/double.h
index c8f4420af8..c659adec62 100644
--- a/soft-fp/double.h
+++ b/soft-fp/double.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Definitions for IEEE Double Precision
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,8 +19,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#if _FP_W_TYPE_SIZE < 32
#error "Here's a nickel kid. Go buy yourself a real computer."
@@ -51,22 +42,16 @@
#define _FP_QNANBIT_D \
((_FP_W_TYPE)1 << (_FP_FRACBITS_D-2) % _FP_W_TYPE_SIZE)
-#define _FP_QNANBIT_SH_D \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_D-2+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_IMPLBIT_D \
((_FP_W_TYPE)1 << (_FP_FRACBITS_D-1) % _FP_W_TYPE_SIZE)
-#define _FP_IMPLBIT_SH_D \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_D-1+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_OVERFLOW_D \
((_FP_W_TYPE)1 << _FP_WFRACBITS_D % _FP_W_TYPE_SIZE)
-typedef float DFtype __attribute__((mode(DF)));
-
#if _FP_W_TYPE_SIZE < 64
union _FP_UNION_D
{
- DFtype flt;
+ double flt;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned sign : 1;
@@ -104,18 +89,6 @@ union _FP_UNION_D
_FP_UNPACK_CANONICAL(D,2,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_D(X,val) \
- do { \
- _FP_UNPACK_RAW_2(D,X,val); \
- _FP_UNPACK_SEMIRAW(D,2,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_DP(X,val) \
- do { \
- _FP_UNPACK_RAW_2_P(D,X,val); \
- _FP_UNPACK_SEMIRAW(D,2,X); \
- } while (0)
-
#define FP_PACK_D(val,X) \
do { \
_FP_PACK_CANONICAL(D,2,X); \
@@ -129,19 +102,6 @@ union _FP_UNION_D
_FP_PACK_RAW_2_P(D,val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_D(val,X) \
- do { \
- _FP_PACK_SEMIRAW(D,2,X); \
- _FP_PACK_RAW_2(D,val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_DP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(D,2,X); \
- if (!FP_INHIBIT_RESULTS) \
- _FP_PACK_RAW_2_P(D,val,X); \
- } while (0)
-
#define FP_ISSIGNAN_D(X) _FP_ISSIGNAN(D,2,X)
#define FP_NEG_D(R,X) _FP_NEG(D,2,R,X)
#define FP_ADD_D(R,X,Y) _FP_ADD(D,2,R,X,Y)
@@ -153,7 +113,6 @@ union _FP_UNION_D
#define FP_CMP_D(r,X,Y,un) _FP_CMP(D,2,r,X,Y,un)
#define FP_CMP_EQ_D(r,X,Y) _FP_CMP_EQ(D,2,r,X,Y)
-#define FP_CMP_UNORD_D(r,X,Y) _FP_CMP_UNORD(D,2,r,X,Y)
#define FP_TO_INT_D(r,X,rsz,rsg) _FP_TO_INT(D,2,r,X,rsz,rsg)
#define FP_FROM_INT_D(X,r,rs,rt) _FP_FROM_INT(D,2,X,r,rs,rt)
@@ -165,7 +124,7 @@ union _FP_UNION_D
union _FP_UNION_D
{
- DFtype flt;
+ double flt;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned sign : 1;
@@ -201,18 +160,6 @@ union _FP_UNION_D
_FP_UNPACK_CANONICAL(D,1,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_D(X,val) \
- do { \
- _FP_UNPACK_RAW_2(1,X,val); \
- _FP_UNPACK_SEMIRAW(D,1,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_DP(X,val) \
- do { \
- _FP_UNPACK_RAW_2_P(1,X,val); \
- _FP_UNPACK_SEMIRAW(D,1,X); \
- } while (0)
-
#define FP_PACK_D(val,X) \
do { \
_FP_PACK_CANONICAL(D,1,X); \
@@ -226,19 +173,6 @@ union _FP_UNION_D
_FP_PACK_RAW_1_P(D,val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_D(val,X) \
- do { \
- _FP_PACK_SEMIRAW(D,1,X); \
- _FP_PACK_RAW_1(D,val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_DP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(D,1,X); \
- if (!FP_INHIBIT_RESULTS) \
- _FP_PACK_RAW_1_P(D,val,X); \
- } while (0)
-
#define FP_ISSIGNAN_D(X) _FP_ISSIGNAN(D,1,X)
#define FP_NEG_D(R,X) _FP_NEG(D,1,R,X)
#define FP_ADD_D(R,X,Y) _FP_ADD(D,1,R,X,Y)
@@ -253,7 +187,6 @@ union _FP_UNION_D
#define FP_CMP_D(r,X,Y,un) _FP_CMP(D,1,r,X,Y,un)
#define FP_CMP_EQ_D(r,X,Y) _FP_CMP_EQ(D,1,r,X,Y)
-#define FP_CMP_UNORD_D(r,X,Y) _FP_CMP_UNORD(D,1,r,X,Y)
#define FP_TO_INT_D(r,X,rsz,rsg) _FP_TO_INT(D,1,r,X,rsz,rsg)
#define FP_FROM_INT_D(X,r,rs,rt) _FP_FROM_INT(D,1,X,r,rs,rt)
diff --git a/soft-fp/eqdf2.c b/soft-fp/eqdf2.c
index efa769e986..b2586bdb9c 100644
--- a/soft-fp/eqdf2.c
+++ b/soft-fp/eqdf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 otherwise
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-int __eqdf2(DFtype a, DFtype b)
+int __eqdf2(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B);
diff --git a/soft-fp/eqsf2.c b/soft-fp/eqsf2.c
index 7e01c01d2f..d838b52396 100644
--- a/soft-fp/eqsf2.c
+++ b/soft-fp/eqsf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 otherwise
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-int __eqsf2(SFtype a, SFtype b)
+int __eqsf2(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B);
diff --git a/soft-fp/eqtf2.c b/soft-fp/eqtf2.c
index fd6ffd1ebe..adb1663edb 100644
--- a/soft-fp/eqtf2.c
+++ b/soft-fp/eqtf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 otherwise
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-int __eqtf2(TFtype a, TFtype b)
+int __eqtf2(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B);
diff --git a/soft-fp/extenddftf2.c b/soft-fp/extenddftf2.c
index 4101639a94..53ac72cfca 100644
--- a/soft-fp/extenddftf2.c
+++ b/soft-fp/extenddftf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a converted to IEEE quad
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
#include "quad.h"
-TFtype __extenddftf2(DFtype a)
+long double __extenddftf2(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_RAW_D(A, a);
+ FP_UNPACK_D(A, a);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_EXTEND(Q,D,4,2,R,A);
+ FP_CONV(Q,D,4,2,R,A);
#else
- FP_EXTEND(Q,D,2,1,R,A);
+ FP_CONV(Q,D,2,1,R,A);
#endif
- FP_PACK_RAW_Q(r, R);
+ FP_PACK_Q(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/extended.h b/soft-fp/extended.h
index bbf39429e7..2edcbd05f0 100644
--- a/soft-fp/extended.h
+++ b/soft-fp/extended.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Definitions for IEEE Extended Precision.
- Copyright (C) 1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek (jj@ultra.linux.cz).
@@ -9,15 +9,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -25,8 +16,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#if _FP_W_TYPE_SIZE < 32
#error "Here's a nickel, kid. Go buy yourself a real computer."
@@ -48,22 +39,16 @@
#define _FP_QNANBIT_E \
((_FP_W_TYPE)1 << (_FP_FRACBITS_E-2) % _FP_W_TYPE_SIZE)
-#define _FP_QNANBIT_SH_E \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_E-2+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_IMPLBIT_E \
((_FP_W_TYPE)1 << (_FP_FRACBITS_E-1) % _FP_W_TYPE_SIZE)
-#define _FP_IMPLBIT_SH_E \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_E-1+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_OVERFLOW_E \
((_FP_W_TYPE)1 << (_FP_WFRACBITS_E % _FP_W_TYPE_SIZE))
-typedef float XFtype __attribute__((mode(XF)));
-
#if _FP_W_TYPE_SIZE < 64
union _FP_UNION_E
{
- XFtype flt;
+ long double flt;
struct
{
#if __BYTE_ORDER == __BIG_ENDIAN
@@ -158,22 +143,10 @@ union _FP_UNION_E
#define FP_UNPACK_EP(X,val) \
do { \
- FP_UNPACK_RAW_EP(X,val); \
+ FP_UNPACK_RAW_2_P(X,val); \
_FP_UNPACK_CANONICAL(E,4,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_E(X,val) \
- do { \
- _FP_UNPACK_RAW_E(X,val); \
- _FP_UNPACK_SEMIRAW(E,4,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_EP(X,val) \
- do { \
- _FP_UNPACK_RAW_EP(X,val); \
- _FP_UNPACK_SEMIRAW(E,4,X); \
- } while (0)
-
#define FP_PACK_E(val,X) \
do { \
_FP_PACK_CANONICAL(E,4,X); \
@@ -186,18 +159,6 @@ union _FP_UNION_E
FP_PACK_RAW_EP(val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_E(val,X) \
- do { \
- _FP_PACK_SEMIRAW(E,4,X); \
- _FP_PACK_RAW_E(val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_EP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(E,4,X); \
- _FP_PACK_RAW_EP(val,X); \
- } while (0)
-
#define FP_ISSIGNAN_E(X) _FP_ISSIGNAN(E,4,X)
#define FP_NEG_E(R,X) _FP_NEG(E,4,R,X)
#define FP_ADD_E(R,X,Y) _FP_ADD(E,4,R,X,Y)
@@ -263,7 +224,6 @@ union _FP_UNION_E
#define FP_CMP_E(r,X,Y,un) _FP_CMP(E,4,r,X,Y,un)
#define FP_CMP_EQ_E(r,X,Y) _FP_CMP_EQ(E,4,r,X,Y)
-#define FP_CMP_UNORD_E(r,X,Y) _FP_CMP_UNORD(E,4,r,X,Y)
#define FP_TO_INT_E(r,X,rsz,rsg) _FP_TO_INT(E,4,r,X,rsz,rsg)
#define FP_FROM_INT_E(X,r,rs,rt) _FP_FROM_INT(E,4,X,r,rs,rt)
@@ -274,7 +234,7 @@ union _FP_UNION_E
#else /* not _FP_W_TYPE_SIZE < 64 */
union _FP_UNION_E
{
- XFtype flt;
+ long double flt /* __attribute__((mode(TF))) */ ;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned long pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
@@ -363,18 +323,6 @@ union _FP_UNION_E
_FP_UNPACK_CANONICAL(E,2,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_E(X,val) \
- do { \
- _FP_UNPACK_RAW_E(X,val); \
- _FP_UNPACK_SEMIRAW(E,2,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_EP(X,val) \
- do { \
- _FP_UNPACK_RAW_EP(X,val); \
- _FP_UNPACK_SEMIRAW(E,2,X); \
- } while (0)
-
#define FP_PACK_E(val,X) \
do { \
_FP_PACK_CANONICAL(E,2,X); \
@@ -387,18 +335,6 @@ union _FP_UNION_E
FP_PACK_RAW_EP(val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_E(val,X) \
- do { \
- _FP_PACK_SEMIRAW(E,2,X); \
- _FP_PACK_RAW_E(val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_EP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(E,2,X); \
- _FP_PACK_RAW_EP(val,X); \
- } while (0)
-
#define FP_ISSIGNAN_E(X) _FP_ISSIGNAN(E,2,X)
#define FP_NEG_E(R,X) _FP_NEG(E,2,R,X)
#define FP_ADD_E(R,X,Y) _FP_ADD(E,2,R,X,Y)
@@ -442,7 +378,6 @@ union _FP_UNION_E
#define FP_CMP_E(r,X,Y,un) _FP_CMP(E,2,r,X,Y,un)
#define FP_CMP_EQ_E(r,X,Y) _FP_CMP_EQ(E,2,r,X,Y)
-#define FP_CMP_UNORD_E(r,X,Y) _FP_CMP_UNORD(E,2,r,X,Y)
#define FP_TO_INT_E(r,X,rsz,rsg) _FP_TO_INT(E,2,r,X,rsz,rsg)
#define FP_FROM_INT_E(X,r,rs,rt) _FP_FROM_INT(E,2,X,r,rs,rt)
diff --git a/soft-fp/extendsfdf2.c b/soft-fp/extendsfdf2.c
index fba22d5a19..a418f1967e 100644
--- a/soft-fp/extendsfdf2.c
+++ b/soft-fp/extendsfdf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a converted to IEEE double
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
#include "double.h"
-DFtype __extendsfdf2(SFtype a)
+double __extendsfdf2(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_RAW_S(A, a);
+ FP_UNPACK_S(A, a);
#if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
- FP_EXTEND(D,S,2,1,R,A);
+ FP_CONV(D,S,2,1,R,A);
#else
- FP_EXTEND(D,S,1,1,R,A);
+ FP_CONV(D,S,1,1,R,A);
#endif
- FP_PACK_RAW_D(r, R);
+ FP_PACK_D(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/extendsftf2.c b/soft-fp/extendsftf2.c
index c43cf1edee..d2735ba1a5 100644
--- a/soft-fp/extendsftf2.c
+++ b/soft-fp/extendsftf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a converted to IEEE quad
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
#include "quad.h"
-TFtype __extendsftf2(SFtype a)
+long double __extendsftf2(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_RAW_S(A, a);
+ FP_UNPACK_S(A, a);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_EXTEND(Q,S,4,1,R,A);
+ FP_CONV(Q,S,4,1,R,A);
#else
- FP_EXTEND(Q,S,2,1,R,A);
+ FP_CONV(Q,S,2,1,R,A);
#endif
- FP_PACK_RAW_Q(r, R);
+ FP_PACK_Q(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixdfdi.c b/soft-fp/fixdfdi.c
index fdfe35af51..201014581f 100644
--- a/soft-fp/fixdfdi.c
+++ b/soft-fp/fixdfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DItype __fixdfdi(DFtype a)
+DItype __fixdfdi(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
- UDItype r;
+ DItype r;
- FP_UNPACK_RAW_D(A, a);
- FP_TO_INT_D(r, A, DI_BITS, 1);
+ FP_UNPACK_D(A, a);
+ FP_TO_INT_D(r, A, 64, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixdfsi.c b/soft-fp/fixdfsi.c
index a05f3e39a5..9961d3d560 100644
--- a/soft-fp/fixdfsi.c
+++ b/soft-fp/fixdfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-SItype __fixdfsi(DFtype a)
+SItype __fixdfsi(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
- USItype r;
+ SItype r;
- FP_UNPACK_RAW_D(A, a);
- FP_TO_INT_D(r, A, SI_BITS, 1);
+ FP_UNPACK_D(A, a);
+ FP_TO_INT_D(r, A, 32, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixsfdi.c b/soft-fp/fixsfdi.c
index 384d9bdd53..f3fd2e77a1 100644
--- a/soft-fp/fixsfdi.c
+++ b/soft-fp/fixsfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-DItype __fixsfdi(SFtype a)
+DItype __fixsfdi(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
- UDItype r;
+ DItype r;
- FP_UNPACK_RAW_S(A, a);
- FP_TO_INT_S(r, A, DI_BITS, 1);
+ FP_UNPACK_S(A, a);
+ FP_TO_INT_S(r, A, 64, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixsfsi.c b/soft-fp/fixsfsi.c
index 1d40ed05df..e8251d18b6 100644
--- a/soft-fp/fixsfsi.c
+++ b/soft-fp/fixsfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SItype __fixsfsi(SFtype a)
+SItype __fixsfsi(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
- USItype r;
+ SItype r;
- FP_UNPACK_RAW_S(A, a);
- FP_TO_INT_S(r, A, SI_BITS, 1);
+ FP_UNPACK_S(A, a);
+ FP_TO_INT_S(r, A, 32, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixtfdi.c b/soft-fp/fixtfdi.c
index ea10ce2dd3..fda412261d 100644
--- a/soft-fp/fixtfdi.c
+++ b/soft-fp/fixtfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-DItype __fixtfdi(TFtype a)
+DItype __fixtfdi(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
- UDItype r;
+ DItype r;
- FP_UNPACK_RAW_Q(A, a);
- FP_TO_INT_Q(r, A, DI_BITS, 1);
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 64, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixtfsi.c b/soft-fp/fixtfsi.c
index eb71038bc3..da51cf951b 100644
--- a/soft-fp/fixtfsi.c
+++ b/soft-fp/fixtfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit signed integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-SItype __fixtfsi(TFtype a)
+SItype __fixtfsi(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
- USItype r;
+ SItype r;
- FP_UNPACK_RAW_Q(A, a);
- FP_TO_INT_Q(r, A, SI_BITS, 1);
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 32, 1);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunsdfdi.c b/soft-fp/fixunsdfdi.c
index d85198f185..18bc61ca30 100644
--- a/soft-fp/fixunsdfdi.c
+++ b/soft-fp/fixunsdfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-UDItype __fixunsdfdi(DFtype a)
+UDItype __fixunsdfdi(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
UDItype r;
- FP_UNPACK_RAW_D(A, a);
- FP_TO_INT_D(r, A, DI_BITS, 0);
+ FP_UNPACK_D(A, a);
+ FP_TO_INT_D(r, A, 64, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunsdfsi.c b/soft-fp/fixunsdfsi.c
index 492ffdea68..4060b5119a 100644
--- a/soft-fp/fixunsdfsi.c
+++ b/soft-fp/fixunsdfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-USItype __fixunsdfsi(DFtype a)
+USItype __fixunsdfsi(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
USItype r;
- FP_UNPACK_RAW_D(A, a);
- FP_TO_INT_D(r, A, SI_BITS, 0);
+ FP_UNPACK_D(A, a);
+ FP_TO_INT_D(r, A, 32, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunssfdi.c b/soft-fp/fixunssfdi.c
index 5484153837..6e4f5beb30 100644
--- a/soft-fp/fixunssfdi.c
+++ b/soft-fp/fixunssfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-UDItype __fixunssfdi(SFtype a)
+UDItype __fixunssfdi(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
UDItype r;
- FP_UNPACK_RAW_S(A, a);
- FP_TO_INT_S(r, A, DI_BITS, 0);
+ FP_UNPACK_S(A, a);
+ FP_TO_INT_S(r, A, 64, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunssfsi.c b/soft-fp/fixunssfsi.c
index ac9d4b9654..5c3e99305e 100644
--- a/soft-fp/fixunssfsi.c
+++ b/soft-fp/fixunssfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-USItype __fixunssfsi(SFtype a)
+USItype __fixunssfsi(float a)
{
FP_DECL_EX;
FP_DECL_S(A);
USItype r;
- FP_UNPACK_RAW_S(A, a);
- FP_TO_INT_S(r, A, SI_BITS, 0);
+ FP_UNPACK_S(A, a);
+ FP_TO_INT_S(r, A, 32, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunstfdi.c b/soft-fp/fixunstfdi.c
index 86f1fc8562..a8ac454ce4 100644
--- a/soft-fp/fixunstfdi.c
+++ b/soft-fp/fixunstfdi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 64bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-UDItype __fixunstfdi(TFtype a)
+UDItype __fixunstfdi(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
UDItype r;
- FP_UNPACK_RAW_Q(A, a);
- FP_TO_INT_Q(r, A, DI_BITS, 0);
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 64, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/fixunstfsi.c b/soft-fp/fixunstfsi.c
index e0335da479..812fb8ef26 100644
--- a/soft-fp/fixunstfsi.c
+++ b/soft-fp/fixunstfsi.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a to 32bit unsigned integer
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-USItype __fixunstfsi(TFtype a)
+USItype __fixunstfsi(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
USItype r;
- FP_UNPACK_RAW_Q(A, a);
- FP_TO_INT_Q(r, A, SI_BITS, 0);
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 32, 0);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/floatdidf.c b/soft-fp/floatdidf.c
index 21e9fb1899..38303f292f 100644
--- a/soft-fp/floatdidf.c
+++ b/soft-fp/floatdidf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 64bit signed integer to IEEE double
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __floatdidf(DItype i)
+double __floatdidf(DItype i)
{
FP_DECL_EX;
FP_DECL_D(A);
- DFtype a;
+ double a;
- FP_FROM_INT_D(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_D(a, A);
+ FP_FROM_INT_D(A, i, 64, long long);
+ FP_PACK_D(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatdisf.c b/soft-fp/floatdisf.c
index ee57915c3b..c7933a85ff 100644
--- a/soft-fp/floatdisf.c
+++ b/soft-fp/floatdisf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 64bit signed integer to IEEE single
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __floatdisf(DItype i)
+double __floatdisf(DItype i)
{
FP_DECL_EX;
FP_DECL_S(A);
- SFtype a;
+ float a;
- FP_FROM_INT_S(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_S(a, A);
+ FP_FROM_INT_S(A, i, 64, long long);
+ FP_PACK_S(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatditf.c b/soft-fp/floatditf.c
index 564800bc05..ef05dee109 100644
--- a/soft-fp/floatditf.c
+++ b/soft-fp/floatditf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 64bit signed integer to IEEE quad
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __floatditf(DItype i)
+long double __floatditf(DItype i)
{
FP_DECL_EX;
FP_DECL_Q(A);
- TFtype a;
+ long double a;
- FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_Q(a, A);
+ FP_FROM_INT_Q(A, i, 64, long long);
+ FP_PACK_Q(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatsidf.c b/soft-fp/floatsidf.c
index b6d5f8d1d2..e136333d87 100644
--- a/soft-fp/floatsidf.c
+++ b/soft-fp/floatsidf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 32bit signed integer to IEEE double
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __floatsidf(SItype i)
+double __floatsidf(SItype i)
{
FP_DECL_EX;
FP_DECL_D(A);
- DFtype a;
+ double a;
- FP_FROM_INT_D(A, i, SI_BITS, USItype);
- FP_PACK_RAW_D(a, A);
+ FP_FROM_INT_D(A, i, 32, int);
+ FP_PACK_D(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatsisf.c b/soft-fp/floatsisf.c
index 76217fe347..d68f5a8ac1 100644
--- a/soft-fp/floatsisf.c
+++ b/soft-fp/floatsisf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 32bit signed integer to IEEE single
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __floatsisf(SItype i)
+float __floatsisf(SItype i)
{
FP_DECL_EX;
FP_DECL_S(A);
- SFtype a;
+ float a;
- FP_FROM_INT_S(A, i, SI_BITS, USItype);
- FP_PACK_RAW_S(a, A);
+ FP_FROM_INT_S(A, i, 32, int);
+ FP_PACK_S(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatsitf.c b/soft-fp/floatsitf.c
index 8c3d9cc619..e982bb7b35 100644
--- a/soft-fp/floatsitf.c
+++ b/soft-fp/floatsitf.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Convert a 32bit signed integer to IEEE quad
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,20 +17,20 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __floatsitf(SItype i)
+long double __floatsitf(SItype i)
{
FP_DECL_EX;
FP_DECL_Q(A);
- TFtype a;
+ long double a;
- FP_FROM_INT_Q(A, i, SI_BITS, USItype);
- FP_PACK_RAW_Q(a, A);
+ FP_FROM_INT_Q(A, i, 32, int);
+ FP_PACK_Q(a, A);
FP_HANDLE_EXCEPTIONS;
return a;
diff --git a/soft-fp/floatundidf.c b/soft-fp/floatundidf.c
deleted file mode 100644
index 2169a3f198..0000000000
--- a/soft-fp/floatundidf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 64bit unsigned integer to IEEE double
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "double.h"
-
-double
-__floatundidf(UDItype i)
-{
- FP_DECL_EX;
- FP_DECL_D(A);
- DFtype a;
-
- FP_FROM_INT_D(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_D(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/floatundisf.c b/soft-fp/floatundisf.c
deleted file mode 100644
index 5f08764dc5..0000000000
--- a/soft-fp/floatundisf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 64bit unsigned integer to IEEE single
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "single.h"
-
-float
-__floatundisf(UDItype i)
-{
- FP_DECL_EX;
- FP_DECL_S(A);
- SFtype a;
-
- FP_FROM_INT_S(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_S(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/floatunditf.c b/soft-fp/floatunditf.c
deleted file mode 100644
index ab357f051c..0000000000
--- a/soft-fp/floatunditf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 64bit unsigned integer to IEEE quad
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-TFtype
-__floatunditf(UDItype i)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- TFtype a;
-
- FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
- FP_PACK_RAW_Q(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/floatunsidf.c b/soft-fp/floatunsidf.c
deleted file mode 100644
index 97b488ab68..0000000000
--- a/soft-fp/floatunsidf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 32bit unsigned integer to IEEE double
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "double.h"
-
-double
-__floatunsidf(USItype i)
-{
- FP_DECL_EX;
- FP_DECL_D(A);
- DFtype a;
-
- FP_FROM_INT_D(A, i, SI_BITS, USItype);
- FP_PACK_RAW_D(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/floatunsisf.c b/soft-fp/floatunsisf.c
deleted file mode 100644
index 2ec16ba7b7..0000000000
--- a/soft-fp/floatunsisf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 32bit unsigned integer to IEEE single
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "single.h"
-
-float
-__floatunsisf(USItype i)
-{
- FP_DECL_EX;
- FP_DECL_S(A);
- SFtype a;
-
- FP_FROM_INT_S(A, i, SI_BITS, USItype);
- FP_PACK_RAW_S(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/floatunsitf.c b/soft-fp/floatunsitf.c
deleted file mode 100644
index c993716e54..0000000000
--- a/soft-fp/floatunsitf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Convert a 32bit unsigned integer to IEEE quad
- Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-TFtype
-__floatunsitf(USItype i)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- TFtype a;
-
- FP_FROM_INT_Q(A, i, SI_BITS, USItype);
- FP_PACK_RAW_Q(a, A);
- FP_HANDLE_EXCEPTIONS;
-
- return a;
-}
diff --git a/soft-fp/gedf2.c b/soft-fp/gedf2.c
index e0dc8620ee..66762d0c81 100644
--- a/soft-fp/gedf2.c
+++ b/soft-fp/gedf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-int __gedf2(DFtype a, DFtype b)
+int __gedf2(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B);
diff --git a/soft-fp/gesf2.c b/soft-fp/gesf2.c
index d1f3ba2f9f..bc5f431747 100644
--- a/soft-fp/gesf2.c
+++ b/soft-fp/gesf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-int __gesf2(SFtype a, SFtype b)
+int __gesf2(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B);
diff --git a/soft-fp/getf2.c b/soft-fp/getf2.c
index 82ff283d0d..40a3a51e77 100644
--- a/soft-fp/getf2.c
+++ b/soft-fp/getf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-int __getf2(TFtype a, TFtype b)
+int __getf2(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B);
diff --git a/soft-fp/ledf2.c b/soft-fp/ledf2.c
index 528a9819ce..70d849a1e2 100644
--- a/soft-fp/ledf2.c
+++ b/soft-fp/ledf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-int __ledf2(DFtype a, DFtype b)
+int __ledf2(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B);
diff --git a/soft-fp/lesf2.c b/soft-fp/lesf2.c
index c564bd9539..31c07e6e23 100644
--- a/soft-fp/lesf2.c
+++ b/soft-fp/lesf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-int __lesf2(SFtype a, SFtype b)
+int __lesf2(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B);
diff --git a/soft-fp/letf2.c b/soft-fp/letf2.c
index 35e03aaacf..883745ffab 100644
--- a/soft-fp/letf2.c
+++ b/soft-fp/letf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,13 +17,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-int __letf2(TFtype a, TFtype b)
+int __letf2(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B);
diff --git a/soft-fp/muldf3.c b/soft-fp/muldf3.c
index 7eb2015ae5..c1521ef9d7 100644
--- a/soft-fp/muldf3.c
+++ b/soft-fp/muldf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a * b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __muldf3(DFtype a, DFtype b)
+double __muldf3(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_D(A, a);
diff --git a/soft-fp/mulsf3.c b/soft-fp/mulsf3.c
index 5df4406872..48b215b7d6 100644
--- a/soft-fp/mulsf3.c
+++ b/soft-fp/mulsf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a * b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __mulsf3(SFtype a, SFtype b)
+float __mulsf3(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
FP_UNPACK_S(A, a);
diff --git a/soft-fp/multf3.c b/soft-fp/multf3.c
index 0abab6ddc3..b54eb1a767 100644
--- a/soft-fp/multf3.c
+++ b/soft-fp/multf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a * b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __multf3(TFtype a, TFtype b)
+long double __multf3(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_Q(A, a);
diff --git a/soft-fp/negdf2.c b/soft-fp/negdf2.c
index 54869e9a68..cc287c54fe 100644
--- a/soft-fp/negdf2.c
+++ b/soft-fp/negdf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return -a
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __negdf2(DFtype a)
+double __negdf2(double a)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_UNPACK_D(A, a);
FP_NEG_D(R, A);
diff --git a/soft-fp/negsf2.c b/soft-fp/negsf2.c
index bf5db7a452..15bfef4fc1 100644
--- a/soft-fp/negsf2.c
+++ b/soft-fp/negsf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return -a
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __negsf2(SFtype a)
+float __negsf2(float a)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_UNPACK_S(A, a);
FP_NEG_S(R, A);
diff --git a/soft-fp/negtf2.c b/soft-fp/negtf2.c
index 5524c82df1..f3eba5f21d 100644
--- a/soft-fp/negtf2.c
+++ b/soft-fp/negtf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return -a
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __negtf2(TFtype a)
+long double __negtf2(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_UNPACK_Q(A, a);
FP_NEG_Q(R, A);
diff --git a/soft-fp/op-1.h b/soft-fp/op-1.h
index 35cd0ba7bb..367ff2274b 100644
--- a/soft-fp/op-1.h
+++ b/soft-fp/op-1.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Basic one-word fraction declaration and manipulation.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,8 +19,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#define _FP_FRAC_DECL_1(X) _FP_W_TYPE X##_f
#define _FP_FRAC_COPY_1(D,S) (D##_f = S##_f)
@@ -49,16 +40,8 @@
#define _FP_FRAC_SRL_1(X,N) (X##_f >>= N)
/* Right shift with sticky-lsb. */
-#define _FP_FRAC_SRST_1(X,S,N,sz) __FP_FRAC_SRST_1(X##_f, S, N, sz)
#define _FP_FRAC_SRS_1(X,N,sz) __FP_FRAC_SRS_1(X##_f, N, sz)
-#define __FP_FRAC_SRST_1(X,S,N,sz) \
-do { \
- S = (__builtin_constant_p(N) && (N) == 1 \
- ? X & 1 : (X << (_FP_W_TYPE_SIZE - (N))) != 0); \
- X = X >> (N); \
-} while (0)
-
#define __FP_FRAC_SRS_1(X,N,sz) \
(X = (X >> (N) | (__builtin_constant_p(N) && (N) == 1 \
? X & 1 : (X << (_FP_W_TYPE_SIZE - (N))) != 0)))
@@ -299,4 +282,17 @@ do { \
* Convert FP values between word sizes
*/
-#define _FP_FRAC_COPY_1_1(D, S) (D##_f = S##_f)
+#define _FP_FRAC_CONV_1_1(dfs, sfs, D, S) \
+ do { \
+ D##_f = S##_f; \
+ if (_FP_WFRACBITS_##sfs > _FP_WFRACBITS_##dfs) \
+ { \
+ if (S##_c != FP_CLS_NAN) \
+ _FP_FRAC_SRS_1(D, (_FP_WFRACBITS_##sfs-_FP_WFRACBITS_##dfs), \
+ _FP_WFRACBITS_##sfs); \
+ else \
+ _FP_FRAC_SRL_1(D, (_FP_WFRACBITS_##sfs-_FP_WFRACBITS_##dfs)); \
+ } \
+ else \
+ D##_f <<= _FP_WFRACBITS_##dfs - _FP_WFRACBITS_##sfs; \
+ } while (0)
diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h
index 5c9bce4c17..89da27fa4f 100644
--- a/soft-fp/op-2.h
+++ b/soft-fp/op-2.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Basic two-word fraction declaration and manipulation.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,8 +19,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0, X##_f1
#define _FP_FRAC_COPY_2(D,S) (D##_f0 = S##_f0, D##_f1 = S##_f1)
@@ -38,74 +29,61 @@
#define _FP_FRAC_LOW_2(X) (X##_f0)
#define _FP_FRAC_WORD_2(X,w) (X##_f##w)
-#define _FP_FRAC_SLL_2(X,N) \
-(void)(((N) < _FP_W_TYPE_SIZE) \
- ? ({ \
- if (__builtin_constant_p(N) && (N) == 1) \
- { \
- X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE)(X##_f0)) < 0); \
- X##_f0 += X##_f0; \
- } \
- else \
- { \
- X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \
- X##_f0 <<= (N); \
- } \
- 0; \
- }) \
- : ({ \
- X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
- X##_f0 = 0; \
- }))
-
+#define _FP_FRAC_SLL_2(X,N) \
+ do { \
+ if ((N) < _FP_W_TYPE_SIZE) \
+ { \
+ if (__builtin_constant_p(N) && (N) == 1) \
+ { \
+ X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE)(X##_f0)) < 0); \
+ X##_f0 += X##_f0; \
+ } \
+ else \
+ { \
+ X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \
+ X##_f0 <<= (N); \
+ } \
+ } \
+ else \
+ { \
+ X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
+ X##_f0 = 0; \
+ } \
+ } while (0)
#define _FP_FRAC_SRL_2(X,N) \
-(void)(((N) < _FP_W_TYPE_SIZE) \
- ? ({ \
- X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
- X##_f1 >>= (N); \
- }) \
- : ({ \
- X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \
- X##_f1 = 0; \
- }))
+ do { \
+ if ((N) < _FP_W_TYPE_SIZE) \
+ { \
+ X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
+ X##_f1 >>= (N); \
+ } \
+ else \
+ { \
+ X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \
+ X##_f1 = 0; \
+ } \
+ } while (0)
/* Right shift with sticky-lsb. */
-#define _FP_FRAC_SRST_2(X,S, N,sz) \
-(void)(((N) < _FP_W_TYPE_SIZE) \
- ? ({ \
- S = (__builtin_constant_p(N) && (N) == 1 \
- ? X##_f0 & 1 \
- : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0); \
- X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N)); \
- X##_f1 >>= (N); \
- }) \
- : ({ \
- S = ((((N) == _FP_W_TYPE_SIZE \
- ? 0 \
- : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \
- | X##_f0) != 0); \
- X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE)); \
- X##_f1 = 0; \
- }))
-
-#define _FP_FRAC_SRS_2(X,N,sz) \
-(void)(((N) < _FP_W_TYPE_SIZE) \
- ? ({ \
- X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) | \
- (__builtin_constant_p(N) && (N) == 1 \
- ? X##_f0 & 1 \
- : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
- X##_f1 >>= (N); \
- }) \
- : ({ \
- X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \
- ((((N) == _FP_W_TYPE_SIZE \
- ? 0 \
- : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \
- | X##_f0) != 0)); \
- X##_f1 = 0; \
- }))
+#define _FP_FRAC_SRS_2(X,N,sz) \
+ do { \
+ if ((N) < _FP_W_TYPE_SIZE) \
+ { \
+ X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) | \
+ (__builtin_constant_p(N) && (N) == 1 \
+ ? X##_f0 & 1 \
+ : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
+ X##_f1 >>= (N); \
+ } \
+ else \
+ { \
+ X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \
+ (((X##_f1 << (2*_FP_W_TYPE_SIZE - (N))) | \
+ X##_f0) != 0)); \
+ X##_f1 = 0; \
+ } \
+ } while (0)
#define _FP_FRAC_ADDI_2(X,I) \
__FP_FRAC_ADDI_2(X##_f1, X##_f0, I)
@@ -137,9 +115,9 @@
#define _FP_FRAC_CLEAR_OVERP_2(fs,X) (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs)
#define _FP_FRAC_EQ_2(X, Y) (X##_f1 == Y##_f1 && X##_f0 == Y##_f0)
#define _FP_FRAC_GT_2(X, Y) \
- (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 > Y##_f0))
+ (X##_f1 > Y##_f1 || X##_f1 == Y##_f1 && X##_f0 > Y##_f0)
#define _FP_FRAC_GE_2(X, Y) \
- (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 >= Y##_f0))
+ (X##_f1 > Y##_f1 || X##_f1 == Y##_f1 && X##_f0 >= Y##_f0)
#define _FP_ZEROFRAC_2 0, 0
#define _FP_MINFRAC_2 0, 1
@@ -592,13 +570,16 @@
*/
#define _FP_FRAC_ASSEMBLE_2(r, X, rsize) \
-(void)((rsize <= _FP_W_TYPE_SIZE) \
- ? ({ r = X##_f0; }) \
- : ({ \
- r = X##_f1; \
- r <<= _FP_W_TYPE_SIZE; \
- r += X##_f0; \
- }))
+ do { \
+ if (rsize <= _FP_W_TYPE_SIZE) \
+ r = X##_f0; \
+ else \
+ { \
+ r = X##_f1; \
+ r <<= _FP_W_TYPE_SIZE; \
+ r += X##_f0; \
+ } \
+ } while (0)
#define _FP_FRAC_DISASSEMBLE_2(X, r, rsize) \
do { \
@@ -610,6 +591,20 @@
* Convert FP values between word sizes
*/
-#define _FP_FRAC_COPY_1_2(D, S) (D##_f = S##_f0)
+#define _FP_FRAC_CONV_1_2(dfs, sfs, D, S) \
+ do { \
+ if (S##_c != FP_CLS_NAN) \
+ _FP_FRAC_SRS_2(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs), \
+ _FP_WFRACBITS_##sfs); \
+ else \
+ _FP_FRAC_SRL_2(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs)); \
+ D##_f = S##_f0; \
+ } while (0)
+
+#define _FP_FRAC_CONV_2_1(dfs, sfs, D, S) \
+ do { \
+ D##_f0 = S##_f; \
+ D##_f1 = 0; \
+ _FP_FRAC_SLL_2(D, (_FP_WFRACBITS_##dfs - _FP_WFRACBITS_##sfs)); \
+ } while (0)
-#define _FP_FRAC_COPY_2_1(D, S) ((D##_f0 = S##_f), (D##_f1 = 0))
diff --git a/soft-fp/op-4.h b/soft-fp/op-4.h
index 1b90535c56..404cb22848 100644
--- a/soft-fp/op-4.h
+++ b/soft-fp/op-4.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Basic four-word fraction declaration and manipulation.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,8 +19,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#define _FP_FRAC_DECL_4(X) _FP_W_TYPE X##_f[4]
#define _FP_FRAC_COPY_4(D,S) \
@@ -87,36 +78,31 @@
* but that if any of the bits that fall off the right hand side
* were one then we always set the LSbit.
*/
-#define _FP_FRAC_SRST_4(X,S,N,size) \
- do { \
- _FP_I_TYPE _up, _down, _skip, _i; \
- _FP_W_TYPE _s; \
- _skip = (N) / _FP_W_TYPE_SIZE; \
- _down = (N) % _FP_W_TYPE_SIZE; \
- _up = _FP_W_TYPE_SIZE - _down; \
- for (_s = _i = 0; _i < _skip; ++_i) \
- _s |= X##_f[_i]; \
- if (!_down) \
- for (_i = 0; _i <= 3-_skip; ++_i) \
- X##_f[_i] = X##_f[_i+_skip]; \
- else \
- { \
- _s |= X##_f[_i] << _up; \
- for (_i = 0; _i < 3-_skip; ++_i) \
- X##_f[_i] = X##_f[_i+_skip] >> _down \
- | X##_f[_i+_skip+1] << _up; \
- X##_f[_i++] = X##_f[3] >> _down; \
- } \
- for (; _i < 4; ++_i) \
- X##_f[_i] = 0; \
- S = (_s != 0); \
- } while (0)
-
-#define _FP_FRAC_SRS_4(X,N,size) \
- do { \
- int _sticky; \
- _FP_FRAC_SRST_4(X, _sticky, N, size); \
- X##_f[0] |= _sticky; \
+#define _FP_FRAC_SRS_4(X,N,size) \
+ do { \
+ _FP_I_TYPE _up, _down, _skip, _i; \
+ _FP_W_TYPE _s; \
+ _skip = (N) / _FP_W_TYPE_SIZE; \
+ _down = (N) % _FP_W_TYPE_SIZE; \
+ _up = _FP_W_TYPE_SIZE - _down; \
+ for (_s = _i = 0; _i < _skip; ++_i) \
+ _s |= X##_f[_i]; \
+ _s |= X##_f[_i] << _up; \
+/* s is now != 0 if we want to set the LSbit */ \
+ if (!_down) \
+ for (_i = 0; _i <= 3-_skip; ++_i) \
+ X##_f[_i] = X##_f[_i+_skip]; \
+ else \
+ { \
+ for (_i = 0; _i < 3-_skip; ++_i) \
+ X##_f[_i] = X##_f[_i+_skip] >> _down \
+ | X##_f[_i+_skip+1] << _up; \
+ X##_f[_i++] = X##_f[3] >> _down; \
+ } \
+ for (; _i < 4; ++_i) \
+ X##_f[_i] = 0; \
+ /* don't fix the LSB until the very end when we're sure f[0] is stable */ \
+ X##_f[0] |= (_s != 0); \
} while (0)
#define _FP_FRAC_ADD_4(R,X,Y) \
@@ -526,7 +512,7 @@
#ifndef __FP_FRAC_ADD_3
#define __FP_FRAC_ADD_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
do { \
- _FP_W_TYPE _c1, _c2; \
+ int _c1, _c2; \
r0 = x0 + y0; \
_c1 = r0 < x0; \
r1 = x1 + y1; \
@@ -540,7 +526,7 @@
#ifndef __FP_FRAC_ADD_4
#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
do { \
- _FP_W_TYPE _c1, _c2, _c3; \
+ int _c1, _c2, _c3; \
r0 = x0 + y0; \
_c1 = r0 < x0; \
r1 = x1 + y1; \
@@ -558,13 +544,13 @@
#ifndef __FP_FRAC_SUB_3
#define __FP_FRAC_SUB_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
do { \
- _FP_W_TYPE _c1, _c2; \
+ int _c1, _c2; \
r0 = x0 - y0; \
_c1 = r0 > x0; \
r1 = x1 - y1; \
_c2 = r1 > x1; \
r1 -= _c1; \
- _c2 |= _c1 && (y1 == x1); \
+ _c2 |= r1 > _c1; \
r2 = x2 - y2 - _c2; \
} while (0)
#endif
@@ -572,17 +558,17 @@
#ifndef __FP_FRAC_SUB_4
#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
do { \
- _FP_W_TYPE _c1, _c2, _c3; \
+ int _c1, _c2, _c3; \
r0 = x0 - y0; \
_c1 = r0 > x0; \
r1 = x1 - y1; \
_c2 = r1 > x1; \
r1 -= _c1; \
- _c2 |= _c1 && (y1 == x1); \
+ _c2 |= r1 > _c1; \
r2 = x2 - y2; \
_c3 = r2 > x2; \
r2 -= _c2; \
- _c3 |= _c2 && (y2 == x2); \
+ _c3 |= r2 > _c2; \
r3 = x3 - y3 - _c3; \
} while (0)
#endif
@@ -623,13 +609,26 @@
* internally [eg, that 2 word vars are X_f0 and x_f1]. But so do
* the ones in op-2.h and op-1.h.
*/
-#define _FP_FRAC_COPY_1_4(D, S) (D##_f = S##_f[0])
+#define _FP_FRAC_CONV_1_4(dfs, sfs, D, S) \
+ do { \
+ if (S##_c != FP_CLS_NAN) \
+ _FP_FRAC_SRS_4(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs), \
+ _FP_WFRACBITS_##sfs); \
+ else \
+ _FP_FRAC_SRL_4(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs)); \
+ D##_f = S##_f[0]; \
+ } while (0)
-#define _FP_FRAC_COPY_2_4(D, S) \
-do { \
- D##_f0 = S##_f[0]; \
- D##_f1 = S##_f[1]; \
-} while (0)
+#define _FP_FRAC_CONV_2_4(dfs, sfs, D, S) \
+ do { \
+ if (S##_c != FP_CLS_NAN) \
+ _FP_FRAC_SRS_4(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs), \
+ _FP_WFRACBITS_##sfs); \
+ else \
+ _FP_FRAC_SRL_4(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs)); \
+ D##_f0 = S##_f[0]; \
+ D##_f1 = S##_f[1]; \
+ } while (0)
/* Assembly/disassembly for converting to/from integral types.
* No shifting or overflow handled here.
@@ -672,15 +671,18 @@ do { \
X##_f[3] = (rsize <= 3*_FP_W_TYPE_SIZE ? 0 : r >> 3*_FP_W_TYPE_SIZE); \
} while (0);
-#define _FP_FRAC_COPY_4_1(D, S) \
-do { \
- D##_f[0] = S##_f; \
- D##_f[1] = D##_f[2] = D##_f[3] = 0; \
-} while (0)
-
-#define _FP_FRAC_COPY_4_2(D, S) \
-do { \
- D##_f[0] = S##_f0; \
- D##_f[1] = S##_f1; \
- D##_f[2] = D##_f[3] = 0; \
-} while (0)
+#define _FP_FRAC_CONV_4_1(dfs, sfs, D, S) \
+ do { \
+ D##_f[0] = S##_f; \
+ D##_f[1] = D##_f[2] = D##_f[3] = 0; \
+ _FP_FRAC_SLL_4(D, (_FP_WFRACBITS_##dfs - _FP_WFRACBITS_##sfs)); \
+ } while (0)
+
+#define _FP_FRAC_CONV_4_2(dfs, sfs, D, S) \
+ do { \
+ D##_f[0] = S##_f0; \
+ D##_f[1] = S##_f1; \
+ D##_f[2] = D##_f[3] = 0; \
+ _FP_FRAC_SLL_4(D, (_FP_WFRACBITS_##dfs - _FP_WFRACBITS_##sfs)); \
+ } while (0)
+
diff --git a/soft-fp/op-8.h b/soft-fp/op-8.h
index e0612a5e62..789d383da7 100644
--- a/soft-fp/op-8.h
+++ b/soft-fp/op-8.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Basic eight-word fraction declaration and manipulation.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz) and
@@ -11,15 +11,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -27,8 +18,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* We need just a few things from here for op-4, if we ever need some
other macros, they can be added. */
@@ -92,12 +83,13 @@
_up = _FP_W_TYPE_SIZE - _down; \
for (_s = _i = 0; _i < _skip; ++_i) \
_s |= X##_f[_i]; \
+ _s |= X##_f[_i] << _up; \
+/* s is now != 0 if we want to set the LSbit */ \
if (!_down) \
for (_i = 0; _i <= 7-_skip; ++_i) \
X##_f[_i] = X##_f[_i+_skip]; \
else \
{ \
- _s |= X##_f[_i] << _up; \
for (_i = 0; _i < 7-_skip; ++_i) \
X##_f[_i] = X##_f[_i+_skip] >> _down \
| X##_f[_i+_skip+1] << _up; \
diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h
index 0aa6e3e05d..3abafa14a8 100644
--- a/soft-fp/op-common.h
+++ b/soft-fp/op-common.h
@@ -1,5 +1,5 @@
/* Software floating-point emulation. Common operations.
- Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -11,15 +11,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -27,11 +18,11 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
-#define _FP_DECL(wc, X) \
- _FP_I_TYPE X##_c __attribute__((unused)), X##_s, X##_e; \
+#define _FP_DECL(wc, X) \
+ _FP_I_TYPE X##_c, X##_s, X##_e; \
_FP_FRAC_DECL_##wc(X)
/*
@@ -80,87 +71,6 @@ do { \
} \
} while (0)
-/* Finish unpacking an fp value in semi-raw mode: the mantissa is
- shifted by _FP_WORKBITS but the implicit MSB is not inserted and
- other classification is not done. */
-#define _FP_UNPACK_SEMIRAW(fs, wc, X) _FP_FRAC_SLL_##wc(X, _FP_WORKBITS)
-
-/* A semi-raw value has overflowed to infinity. Adjust the mantissa
- and exponent appropriately. */
-#define _FP_OVERFLOW_SEMIRAW(fs, wc, X) \
-do { \
- if (FP_ROUNDMODE == FP_RND_NEAREST \
- || (FP_ROUNDMODE == FP_RND_PINF && !X##_s) \
- || (FP_ROUNDMODE == FP_RND_MINF && X##_s)) \
- { \
- X##_e = _FP_EXPMAX_##fs; \
- _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
- } \
- else \
- { \
- X##_e = _FP_EXPMAX_##fs - 1; \
- _FP_FRAC_SET_##wc(X, _FP_MAXFRAC_##wc); \
- } \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
-} while (0)
-
-/* Check for a semi-raw value being a signaling NaN and raise the
- invalid exception if so. */
-#define _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X) \
-do { \
- if (X##_e == _FP_EXPMAX_##fs \
- && !_FP_FRAC_ZEROP_##wc(X) \
- && !(_FP_FRAC_HIGH_##fs(X) & _FP_QNANBIT_SH_##fs)) \
- FP_SET_EXCEPTION(FP_EX_INVALID); \
-} while (0)
-
-/* Choose a NaN result from an operation on two semi-raw NaN
- values. */
-#define _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP) \
-do { \
- /* _FP_CHOOSENAN expects raw values, so shift as required. */ \
- _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
- _FP_FRAC_SRL_##wc(Y, _FP_WORKBITS); \
- _FP_CHOOSENAN(fs, wc, R, X, Y, OP); \
- _FP_FRAC_SLL_##wc(R, _FP_WORKBITS); \
-} while (0)
-
-/* Test whether a biased exponent is normal (not zero or maximum). */
-#define _FP_EXP_NORMAL(fs, wc, X) (((X##_e + 1) & _FP_EXPMAX_##fs) > 1)
-
-/* Prepare to pack an fp value in semi-raw mode: the mantissa is
- rounded and shifted right, with the rounding possibly increasing
- the exponent (including changing a finite value to infinity). */
-#define _FP_PACK_SEMIRAW(fs, wc, X) \
-do { \
- _FP_ROUND(wc, X); \
- if (_FP_FRAC_HIGH_##fs(X) \
- & (_FP_OVERFLOW_##fs >> 1)) \
- { \
- _FP_FRAC_HIGH_##fs(X) &= ~(_FP_OVERFLOW_##fs >> 1); \
- X##_e++; \
- if (X##_e == _FP_EXPMAX_##fs) \
- _FP_OVERFLOW_SEMIRAW(fs, wc, X); \
- } \
- _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
- if (!_FP_EXP_NORMAL(fs, wc, X) && !_FP_FRAC_ZEROP_##wc(X)) \
- { \
- if (X##_e == 0) \
- FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
- else \
- { \
- if (!_FP_KEEPNANFRACP) \
- { \
- _FP_FRAC_SET_##wc(X, _FP_NANFRAC_##fs); \
- X##_s = _FP_NANSIGN_##fs; \
- } \
- else \
- _FP_FRAC_HIGH_RAW_##fs(X) |= _FP_QNANBIT_##fs; \
- } \
- } \
-} while (0)
-
/*
* Before packing the bits back into the native fp result, take care
* of such mundane things as rounding and overflow. Also, for some
@@ -292,433 +202,153 @@ do { \
-/* Addition on semi-raw values. */
-#define _FP_ADD_INTERNAL(fs, wc, R, X, Y, OP) \
-do { \
- if (X##_s == Y##_s) \
- { \
- /* Addition. */ \
- R##_s = X##_s; \
- int ediff = X##_e - Y##_e; \
- if (ediff > 0) \
- { \
- R##_e = X##_e; \
- if (Y##_e == 0) \
- { \
- /* Y is zero or denormalized. */ \
- if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto add_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- ediff--; \
- if (ediff == 0) \
- { \
- _FP_FRAC_ADD_##wc(R, X, Y); \
- goto add3; \
- } \
- if (X##_e == _FP_EXPMAX_##fs) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto add_done; \
- } \
- goto add1; \
- } \
- } \
- else if (X##_e == _FP_EXPMAX_##fs) \
- { \
- /* X is NaN or Inf, Y is normal. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto add_done; \
- } \
- \
- /* Insert implicit MSB of Y. */ \
- _FP_FRAC_HIGH_##fs(Y) |= _FP_IMPLBIT_SH_##fs; \
- \
- add1: \
- /* Shift the mantissa of Y to the right EDIFF steps; \
- remember to account later for the implicit MSB of X. */ \
- if (ediff <= _FP_WFRACBITS_##fs) \
- _FP_FRAC_SRS_##wc(Y, ediff, _FP_WFRACBITS_##fs); \
- else if (!_FP_FRAC_ZEROP_##wc(Y)) \
- _FP_FRAC_SET_##wc(Y, _FP_MINFRAC_##wc); \
- _FP_FRAC_ADD_##wc(R, X, Y); \
- } \
- else if (ediff < 0) \
- { \
- ediff = -ediff; \
- R##_e = Y##_e; \
- if (X##_e == 0) \
- { \
- /* X is zero or denormalized. */ \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto add_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- ediff--; \
- if (ediff == 0) \
- { \
- _FP_FRAC_ADD_##wc(R, Y, X); \
- goto add3; \
- } \
- if (Y##_e == _FP_EXPMAX_##fs) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto add_done; \
- } \
- goto add2; \
- } \
- } \
- else if (Y##_e == _FP_EXPMAX_##fs) \
- { \
- /* Y is NaN or Inf, X is normal. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto add_done; \
- } \
- \
- /* Insert implicit MSB of X. */ \
- _FP_FRAC_HIGH_##fs(X) |= _FP_IMPLBIT_SH_##fs; \
- \
- add2: \
- /* Shift the mantissa of X to the right EDIFF steps; \
- remember to account later for the implicit MSB of Y. */ \
- if (ediff <= _FP_WFRACBITS_##fs) \
- _FP_FRAC_SRS_##wc(X, ediff, _FP_WFRACBITS_##fs); \
- else if (!_FP_FRAC_ZEROP_##wc(X)) \
- _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
- _FP_FRAC_ADD_##wc(R, Y, X); \
- } \
- else \
- { \
- /* ediff == 0. */ \
- if (!_FP_EXP_NORMAL(fs, wc, X)) \
- { \
- if (X##_e == 0) \
- { \
- /* X and Y are zero or denormalized. */ \
- R##_e = 0; \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- { \
- if (!_FP_FRAC_ZEROP_##wc(Y)) \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto add_done; \
- } \
- else if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto add_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_ADD_##wc(R, X, Y); \
- if (_FP_FRAC_HIGH_##fs(R) & _FP_IMPLBIT_SH_##fs) \
- { \
- /* Normalized result. */ \
- _FP_FRAC_HIGH_##fs(R) \
- &= ~(_FP_W_TYPE)_FP_IMPLBIT_SH_##fs; \
- R##_e = 1; \
- } \
- goto add_done; \
- } \
- } \
- else \
- { \
- /* X and Y are NaN or Inf. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- R##_e = _FP_EXPMAX_##fs; \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- _FP_FRAC_COPY_##wc(R, Y); \
- else if (_FP_FRAC_ZEROP_##wc(Y)) \
- _FP_FRAC_COPY_##wc(R, X); \
- else \
- _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP); \
- goto add_done; \
- } \
- } \
- /* The exponents of X and Y, both normal, are equal. The \
- implicit MSBs will always add to increase the \
- exponent. */ \
- _FP_FRAC_ADD_##wc(R, X, Y); \
- R##_e = X##_e + 1; \
- _FP_FRAC_SRS_##wc(R, 1, _FP_WFRACBITS_##fs); \
- if (R##_e == _FP_EXPMAX_##fs) \
- /* Overflow to infinity (depending on rounding mode). */ \
- _FP_OVERFLOW_SEMIRAW(fs, wc, R); \
- goto add_done; \
- } \
- add3: \
- if (_FP_FRAC_HIGH_##fs(R) & _FP_IMPLBIT_SH_##fs) \
- { \
- /* Overflow. */ \
- _FP_FRAC_HIGH_##fs(R) &= ~(_FP_W_TYPE)_FP_IMPLBIT_SH_##fs; \
- R##_e++; \
- _FP_FRAC_SRS_##wc(R, 1, _FP_WFRACBITS_##fs); \
- if (R##_e == _FP_EXPMAX_##fs) \
- /* Overflow to infinity (depending on rounding mode). */ \
- _FP_OVERFLOW_SEMIRAW(fs, wc, R); \
- } \
- add_done: ; \
- } \
- else \
- { \
- /* Subtraction. */ \
- int ediff = X##_e - Y##_e; \
- if (ediff > 0) \
- { \
- R##_e = X##_e; \
- R##_s = X##_s; \
- if (Y##_e == 0) \
- { \
- /* Y is zero or denormalized. */ \
- if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto sub_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- ediff--; \
- if (ediff == 0) \
- { \
- _FP_FRAC_SUB_##wc(R, X, Y); \
- goto sub3; \
- } \
- if (X##_e == _FP_EXPMAX_##fs) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto sub_done; \
- } \
- goto sub1; \
- } \
- } \
- else if (X##_e == _FP_EXPMAX_##fs) \
- { \
- /* X is NaN or Inf, Y is normal. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_FRAC_COPY_##wc(R, X); \
- goto sub_done; \
- } \
- \
- /* Insert implicit MSB of Y. */ \
- _FP_FRAC_HIGH_##fs(Y) |= _FP_IMPLBIT_SH_##fs; \
- \
- sub1: \
- /* Shift the mantissa of Y to the right EDIFF steps; \
- remember to account later for the implicit MSB of X. */ \
- if (ediff <= _FP_WFRACBITS_##fs) \
- _FP_FRAC_SRS_##wc(Y, ediff, _FP_WFRACBITS_##fs); \
- else if (!_FP_FRAC_ZEROP_##wc(Y)) \
- _FP_FRAC_SET_##wc(Y, _FP_MINFRAC_##wc); \
- _FP_FRAC_SUB_##wc(R, X, Y); \
- } \
- else if (ediff < 0) \
- { \
- ediff = -ediff; \
- R##_e = Y##_e; \
- R##_s = Y##_s; \
- if (X##_e == 0) \
- { \
- /* X is zero or denormalized. */ \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto sub_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- ediff--; \
- if (ediff == 0) \
- { \
- _FP_FRAC_SUB_##wc(R, Y, X); \
- goto sub3; \
- } \
- if (Y##_e == _FP_EXPMAX_##fs) \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto sub_done; \
- } \
- goto sub2; \
- } \
- } \
- else if (Y##_e == _FP_EXPMAX_##fs) \
- { \
- /* Y is NaN or Inf, X is normal. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- _FP_FRAC_COPY_##wc(R, Y); \
- goto sub_done; \
- } \
- \
- /* Insert implicit MSB of X. */ \
- _FP_FRAC_HIGH_##fs(X) |= _FP_IMPLBIT_SH_##fs; \
- \
- sub2: \
- /* Shift the mantissa of X to the right EDIFF steps; \
- remember to account later for the implicit MSB of Y. */ \
- if (ediff <= _FP_WFRACBITS_##fs) \
- _FP_FRAC_SRS_##wc(X, ediff, _FP_WFRACBITS_##fs); \
- else if (!_FP_FRAC_ZEROP_##wc(X)) \
- _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
- _FP_FRAC_SUB_##wc(R, Y, X); \
- } \
- else \
- { \
- /* ediff == 0. */ \
- if (!_FP_EXP_NORMAL(fs, wc, X)) \
- { \
- if (X##_e == 0) \
- { \
- /* X and Y are zero or denormalized. */ \
- R##_e = 0; \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- { \
- _FP_FRAC_COPY_##wc(R, Y); \
- if (_FP_FRAC_ZEROP_##wc(Y)) \
- R##_s = (FP_ROUNDMODE == FP_RND_MINF); \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- R##_s = Y##_s; \
- } \
- goto sub_done; \
- } \
- else if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_COPY_##wc(R, X); \
- R##_s = X##_s; \
- goto sub_done; \
- } \
- else \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_SUB_##wc(R, X, Y); \
- R##_s = X##_s; \
- if (_FP_FRAC_HIGH_##fs(R) & _FP_IMPLBIT_SH_##fs) \
- { \
- /* |X| < |Y|, negate result. */ \
- _FP_FRAC_SUB_##wc(R, Y, X); \
- R##_s = Y##_s; \
- } \
- else if (_FP_FRAC_ZEROP_##wc(R)) \
- R##_s = (FP_ROUNDMODE == FP_RND_MINF); \
- goto sub_done; \
- } \
- } \
- else \
- { \
- /* X and Y are NaN or Inf, of opposite signs. */ \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X); \
- _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, Y); \
- R##_e = _FP_EXPMAX_##fs; \
- if (_FP_FRAC_ZEROP_##wc(X)) \
- { \
- if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- /* Inf - Inf. */ \
- R##_s = _FP_NANSIGN_##fs; \
- _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \
- _FP_FRAC_SLL_##wc(R, _FP_WORKBITS); \
- FP_SET_EXCEPTION(FP_EX_INVALID); \
- } \
- else \
- { \
- /* Inf - NaN. */ \
- R##_s = Y##_s; \
- _FP_FRAC_COPY_##wc(R, Y); \
- } \
- } \
- else \
- { \
- if (_FP_FRAC_ZEROP_##wc(Y)) \
- { \
- /* NaN - Inf. */ \
- R##_s = X##_s; \
- _FP_FRAC_COPY_##wc(R, X); \
- } \
- else \
- { \
- /* NaN - NaN. */ \
- _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP); \
- } \
- } \
- goto sub_done; \
- } \
- } \
- /* The exponents of X and Y, both normal, are equal. The \
- implicit MSBs cancel. */ \
- R##_e = X##_e; \
- _FP_FRAC_SUB_##wc(R, X, Y); \
- R##_s = X##_s; \
- if (_FP_FRAC_HIGH_##fs(R) & _FP_IMPLBIT_SH_##fs) \
- { \
- /* |X| < |Y|, negate result. */ \
- _FP_FRAC_SUB_##wc(R, Y, X); \
- R##_s = Y##_s; \
- } \
- else if (_FP_FRAC_ZEROP_##wc(R)) \
- { \
- R##_e = 0; \
- R##_s = (FP_ROUNDMODE == FP_RND_MINF); \
- goto sub_done; \
- } \
- goto norm; \
- } \
- sub3: \
- if (_FP_FRAC_HIGH_##fs(R) & _FP_IMPLBIT_SH_##fs) \
- { \
- int diff; \
- /* Carry into most significant bit of larger one of X and Y, \
- canceling it; renormalize. */ \
- _FP_FRAC_HIGH_##fs(R) &= _FP_IMPLBIT_SH_##fs - 1; \
- norm: \
- _FP_FRAC_CLZ_##wc(diff, R); \
- diff -= _FP_WFRACXBITS_##fs; \
- _FP_FRAC_SLL_##wc(R, diff); \
- if (R##_e <= diff) \
- { \
- /* R is denormalized. */ \
- diff = diff - R##_e + 1; \
- _FP_FRAC_SRS_##wc(R, diff, _FP_WFRACBITS_##fs); \
- R##_e = 0; \
- } \
- else \
- { \
- R##_e -= diff; \
- _FP_FRAC_HIGH_##fs(R) &= ~(_FP_W_TYPE)_FP_IMPLBIT_SH_##fs; \
- } \
- } \
- sub_done: ; \
- } \
+/*
+ * Main addition routine. The input values should be cooked.
+ */
+
+#define _FP_ADD_INTERNAL(fs, wc, R, X, Y, OP) \
+do { \
+ switch (_FP_CLS_COMBINE(X##_c, Y##_c)) \
+ { \
+ case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL): \
+ { \
+ /* shift the smaller number so that its exponent matches the larger */ \
+ _FP_I_TYPE diff = X##_e - Y##_e; \
+ \
+ if (diff < 0) \
+ { \
+ diff = -diff; \
+ if (diff <= _FP_WFRACBITS_##fs) \
+ _FP_FRAC_SRS_##wc(X, diff, _FP_WFRACBITS_##fs); \
+ else if (!_FP_FRAC_ZEROP_##wc(X)) \
+ _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
+ R##_e = Y##_e; \
+ } \
+ else \
+ { \
+ if (diff > 0) \
+ { \
+ if (diff <= _FP_WFRACBITS_##fs) \
+ _FP_FRAC_SRS_##wc(Y, diff, _FP_WFRACBITS_##fs); \
+ else if (!_FP_FRAC_ZEROP_##wc(Y)) \
+ _FP_FRAC_SET_##wc(Y, _FP_MINFRAC_##wc); \
+ } \
+ R##_e = X##_e; \
+ } \
+ \
+ R##_c = FP_CLS_NORMAL; \
+ \
+ if (X##_s == Y##_s) \
+ { \
+ R##_s = X##_s; \
+ _FP_FRAC_ADD_##wc(R, X, Y); \
+ if (_FP_FRAC_OVERP_##wc(fs, R)) \
+ { \
+ _FP_FRAC_SRS_##wc(R, 1, _FP_WFRACBITS_##fs); \
+ R##_e++; \
+ } \
+ } \
+ else \
+ { \
+ R##_s = X##_s; \
+ _FP_FRAC_SUB_##wc(R, X, Y); \
+ if (_FP_FRAC_ZEROP_##wc(R)) \
+ { \
+ /* return an exact zero */ \
+ if (FP_ROUNDMODE == FP_RND_MINF) \
+ R##_s |= Y##_s; \
+ else \
+ R##_s &= Y##_s; \
+ R##_c = FP_CLS_ZERO; \
+ } \
+ else \
+ { \
+ if (_FP_FRAC_NEGP_##wc(R)) \
+ { \
+ _FP_FRAC_SUB_##wc(R, Y, X); \
+ R##_s = Y##_s; \
+ } \
+ \
+ /* renormalize after subtraction */ \
+ _FP_FRAC_CLZ_##wc(diff, R); \
+ diff -= _FP_WFRACXBITS_##fs; \
+ if (diff) \
+ { \
+ R##_e -= diff; \
+ _FP_FRAC_SLL_##wc(R, diff); \
+ } \
+ } \
+ } \
+ break; \
+ } \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NAN): \
+ _FP_CHOOSENAN(fs, wc, R, X, Y, OP); \
+ break; \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_ZERO): \
+ R##_e = X##_e; \
+ case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NORMAL): \
+ case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_INF): \
+ case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_ZERO): \
+ _FP_FRAC_COPY_##wc(R, X); \
+ R##_s = X##_s; \
+ R##_c = X##_c; \
+ break; \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NORMAL): \
+ R##_e = Y##_e; \
+ case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NAN): \
+ case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NAN): \
+ case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NAN): \
+ _FP_FRAC_COPY_##wc(R, Y); \
+ R##_s = Y##_s; \
+ R##_c = Y##_c; \
+ break; \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_INF): \
+ if (X##_s != Y##_s) \
+ { \
+ /* +INF + -INF => NAN */ \
+ _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \
+ R##_s = _FP_NANSIGN_##fs; \
+ R##_c = FP_CLS_NAN; \
+ FP_SET_EXCEPTION(FP_EX_INVALID); \
+ break; \
+ } \
+ /* FALLTHRU */ \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NORMAL): \
+ case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_ZERO): \
+ R##_s = X##_s; \
+ R##_c = FP_CLS_INF; \
+ break; \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_INF): \
+ case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_INF): \
+ R##_s = Y##_s; \
+ R##_c = FP_CLS_INF; \
+ break; \
+ \
+ case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO): \
+ /* make sure the sign is correct */ \
+ if (FP_ROUNDMODE == FP_RND_MINF) \
+ R##_s = X##_s | Y##_s; \
+ else \
+ R##_s = X##_s & Y##_s; \
+ R##_c = FP_CLS_ZERO; \
+ break; \
+ \
+ default: \
+ abort(); \
+ } \
} while (0)
#define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL(fs, wc, R, X, Y, '+')
-#define _FP_SUB(fs, wc, R, X, Y) \
- do { \
- if (!(Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(Y))) Y##_s ^= 1; \
- _FP_ADD_INTERNAL(fs, wc, R, X, Y, '-'); \
+#define _FP_SUB(fs, wc, R, X, Y) \
+ do { \
+ if (Y##_c != FP_CLS_NAN) Y##_s ^= 1; \
+ _FP_ADD_INTERNAL(fs, wc, R, X, Y, '-'); \
} while (0)
@@ -907,28 +537,20 @@ do { \
/* Simplification for strict equality. */
-#define _FP_CMP_EQ(fs, wc, ret, X, Y) \
- do { \
- /* NANs are unordered */ \
- if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(X)) \
- || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(Y))) \
- { \
- ret = 1; \
- } \
- else \
- { \
- ret = !(X##_e == Y##_e \
- && _FP_FRAC_EQ_##wc(X, Y) \
- && (X##_s == Y##_s || (!X##_e && _FP_FRAC_ZEROP_##wc(X)))); \
- } \
- } while (0)
-
-/* Version to test unordered. */
-
-#define _FP_CMP_UNORD(fs, wc, ret, X, Y) \
- do { \
- ret = ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(X)) \
- || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(Y))); \
+#define _FP_CMP_EQ(fs, wc, ret, X, Y) \
+ do { \
+ /* NANs are unordered */ \
+ if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(X)) \
+ || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(Y))) \
+ { \
+ ret = 1; \
+ } \
+ else \
+ { \
+ ret = !(X##_e == Y##_e \
+ && _FP_FRAC_EQ_##wc(X, Y) \
+ && (X##_s == Y##_s || !X##_e && _FP_FRAC_ZEROP_##wc(X))); \
+ } \
} while (0)
/*
@@ -986,280 +608,115 @@ do { \
} while (0)
/*
- * Convert from FP to integer. Input is raw.
+ * Convert from FP to integer
*/
/* RSIGNED can have following values:
* 0: the number is required to be 0..(2^rsize)-1, if not, NV is set plus
- * the result is either 0 or (2^rsize)-1 depending on the sign in such
- * case.
- * 1: the number is required to be -(2^(rsize-1))..(2^(rsize-1))-1, if not,
- * NV is set plus the result is either -(2^(rsize-1)) or (2^(rsize-1))-1
- * depending on the sign in such case.
+ * the result is either 0 or (2^rsize)-1 depending on the sign in such case.
+ * 1: the number is required to be -(2^(rsize-1))..(2^(rsize-1))-1, if not, NV is
+ * set plus the result is either -(2^(rsize-1)) or (2^(rsize-1))-1 depending
+ * on the sign in such case.
* -1: the number is required to be -(2^(rsize-1))..(2^rsize)-1, if not, NV is
- * set plus the result is either -(2^(rsize-1)) or (2^(rsize-1))-1
- * depending on the sign in such case.
+ * set plus the result is either -(2^(rsize-1)) or (2^(rsize-1))-1 depending
+ * on the sign in such case.
*/
-#define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \
-do { \
- if (X##_e < _FP_EXPBIAS_##fs) \
- { \
- r = 0; \
- if (X##_e == 0) \
- { \
- if (!_FP_FRAC_ZEROP_##wc(X)) \
- { \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- } \
- } \
- else \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- } \
- else if (X##_e >= _FP_EXPBIAS_##fs + rsize - (rsigned > 0 || X##_s) \
- || (!rsigned && X##_s)) \
- { \
- /* Overflow or converting to the most negative integer. */ \
- if (rsigned) \
- { \
- r = 1; \
- r <<= rsize - 1; \
- r -= 1 - X##_s; \
- } else { \
- r = 0; \
- if (X##_s) \
- r = ~r; \
- } \
- \
- if (rsigned && X##_s && X##_e == _FP_EXPBIAS_##fs + rsize - 1) \
- { \
- /* Possibly converting to most negative integer; check the \
- mantissa. */ \
- int inexact = 0; \
- (void)((_FP_FRACBITS_##fs > rsize) \
- ? ({ _FP_FRAC_SRST_##wc(X, inexact, \
- _FP_FRACBITS_##fs - rsize, \
- _FP_FRACBITS_##fs); 0; }) \
- : 0); \
- if (!_FP_FRAC_ZEROP_##wc(X)) \
- FP_SET_EXCEPTION(FP_EX_INVALID); \
- else if (inexact) \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- } \
- else \
- FP_SET_EXCEPTION(FP_EX_INVALID); \
- } \
- else \
- { \
- _FP_FRAC_HIGH_RAW_##fs(X) |= _FP_IMPLBIT_##fs; \
- if (X##_e >= _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1) \
- { \
- _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
- r <<= X##_e - _FP_EXPBIAS_##fs - _FP_FRACBITS_##fs + 1; \
- } \
- else \
- { \
- int inexact; \
- _FP_FRAC_SRST_##wc(X, inexact, \
- (_FP_FRACBITS_##fs + _FP_EXPBIAS_##fs - 1 \
- - X##_e), \
- _FP_FRACBITS_##fs); \
- if (inexact) \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
- } \
- if (rsigned && X##_s) \
- r = -r; \
- } \
-} while (0)
-
-/* Convert integer to fp. Output is raw. RTYPE is unsigned even if
- input is signed. */
-#define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \
- do { \
- if (r) \
- { \
- rtype ur_; \
- \
- if ((X##_s = (r < 0))) \
- r = -(rtype)r; \
- \
- ur_ = (rtype) r; \
- (void)((rsize <= _FP_W_TYPE_SIZE) \
- ? ({ \
- int lz_; \
- __FP_CLZ(lz_, (_FP_W_TYPE)ur_); \
- X##_e = _FP_EXPBIAS_##fs + _FP_W_TYPE_SIZE - 1 - lz_; \
- }) \
- : ((rsize <= 2 * _FP_W_TYPE_SIZE) \
- ? ({ \
- int lz_; \
- __FP_CLZ_2(lz_, (_FP_W_TYPE)(ur_ >> _FP_W_TYPE_SIZE), \
- (_FP_W_TYPE)ur_); \
- X##_e = (_FP_EXPBIAS_##fs + 2 * _FP_W_TYPE_SIZE - 1 \
- - lz_); \
- }) \
- : (abort(), 0))); \
- \
- if (rsize - 1 + _FP_EXPBIAS_##fs >= _FP_EXPMAX_##fs \
- && X##_e >= _FP_EXPMAX_##fs) \
- { \
- /* Exponent too big; overflow to infinity. (May also \
- happen after rounding below.) */ \
- _FP_OVERFLOW_SEMIRAW(fs, wc, X); \
- goto pack_semiraw; \
- } \
- \
- if (rsize <= _FP_FRACBITS_##fs \
- || X##_e < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs) \
- { \
- /* Exactly representable; shift left. */ \
- _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
- _FP_FRAC_SLL_##wc(X, (_FP_EXPBIAS_##fs \
- + _FP_FRACBITS_##fs - 1 - X##_e)); \
- } \
- else \
- { \
- /* More bits in integer than in floating type; need to \
- round. */ \
- if (_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 < X##_e) \
- ur_ = ((ur_ >> (X##_e - _FP_EXPBIAS_##fs \
- - _FP_WFRACBITS_##fs + 1)) \
- | ((ur_ << (rsize - (X##_e - _FP_EXPBIAS_##fs \
- - _FP_WFRACBITS_##fs + 1))) \
- != 0)); \
- _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
- if ((_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 - X##_e) > 0) \
- _FP_FRAC_SLL_##wc(X, (_FP_EXPBIAS_##fs \
- + _FP_WFRACBITS_##fs - 1 - X##_e)); \
- _FP_FRAC_HIGH_##fs(X) &= ~(_FP_W_TYPE)_FP_IMPLBIT_SH_##fs; \
- pack_semiraw: \
- _FP_PACK_SEMIRAW(fs, wc, X); \
- } \
- } \
- else \
- { \
- X##_s = 0; \
- X##_e = 0; \
- _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
- } \
+#define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \
+ do { \
+ switch (X##_c) \
+ { \
+ case FP_CLS_NORMAL: \
+ if (X##_e < 0) \
+ { \
+ FP_SET_EXCEPTION(FP_EX_INEXACT); \
+ case FP_CLS_ZERO: \
+ r = 0; \
+ } \
+ else if (X##_e >= rsize - (rsigned > 0 || X##_s) \
+ || (!rsigned && X##_s)) \
+ { /* overflow */ \
+ case FP_CLS_NAN: \
+ case FP_CLS_INF: \
+ if (rsigned) \
+ { \
+ r = 1; \
+ r <<= rsize - 1; \
+ r -= 1 - X##_s; \
+ } else { \
+ r = 0; \
+ if (X##_s) \
+ r = ~r; \
+ } \
+ FP_SET_EXCEPTION(FP_EX_INVALID); \
+ } \
+ else \
+ { \
+ if (_FP_W_TYPE_SIZE*wc < rsize) \
+ { \
+ _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
+ r <<= X##_e - _FP_WFRACBITS_##fs; \
+ } \
+ else \
+ { \
+ if (X##_e >= _FP_WFRACBITS_##fs) \
+ _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1)); \
+ else if (X##_e < _FP_WFRACBITS_##fs - 1) \
+ { \
+ _FP_FRAC_SRS_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 2), \
+ _FP_WFRACBITS_##fs); \
+ if (_FP_FRAC_LOW_##wc(X) & 1) \
+ FP_SET_EXCEPTION(FP_EX_INEXACT); \
+ _FP_FRAC_SRL_##wc(X, 1); \
+ } \
+ _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
+ } \
+ if (rsigned && X##_s) \
+ r = -r; \
+ } \
+ break; \
+ } \
} while (0)
+#define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \
+ do { \
+ if (r) \
+ { \
+ unsigned rtype ur_; \
+ X##_c = FP_CLS_NORMAL; \
+ \
+ if ((X##_s = (r < 0))) \
+ r = -r; \
+ \
+ ur_ = (unsigned rtype) r; \
+ if (rsize <= _FP_W_TYPE_SIZE) \
+ __FP_CLZ(X##_e, ur_); \
+ else \
+ __FP_CLZ_2(X##_e, (_FP_W_TYPE)(ur_ >> _FP_W_TYPE_SIZE), \
+ (_FP_W_TYPE)ur_); \
+ if (rsize < _FP_W_TYPE_SIZE) \
+ X##_e -= (_FP_W_TYPE_SIZE - rsize); \
+ X##_e = rsize - X##_e - 1; \
+ \
+ if (_FP_FRACBITS_##fs < rsize && _FP_WFRACBITS_##fs < X##_e) \
+ __FP_FRAC_SRS_1(ur_, (X##_e - _FP_WFRACBITS_##fs + 1), rsize);\
+ _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
+ if ((_FP_WFRACBITS_##fs - X##_e - 1) > 0) \
+ _FP_FRAC_SLL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
+ } \
+ else \
+ { \
+ X##_c = FP_CLS_ZERO, X##_s = 0; \
+ } \
+ } while (0)
-/* Extend from a narrower floating-point format to a wider one. Input
- and output are raw. */
-#define FP_EXTEND(dfs,sfs,dwc,swc,D,S) \
-do { \
- if (_FP_FRACBITS_##dfs < _FP_FRACBITS_##sfs \
- || (_FP_EXPMAX_##dfs - _FP_EXPBIAS_##dfs \
- < _FP_EXPMAX_##sfs - _FP_EXPBIAS_##sfs) \
- || _FP_EXPBIAS_##dfs < _FP_EXPBIAS_##sfs + _FP_FRACBITS_##sfs - 1) \
- abort(); \
- D##_s = S##_s; \
- _FP_FRAC_COPY_##dwc##_##swc(D, S); \
- if (_FP_EXP_NORMAL(sfs, swc, S)) \
- { \
- D##_e = S##_e + _FP_EXPBIAS_##dfs - _FP_EXPBIAS_##sfs; \
- _FP_FRAC_SLL_##dwc(D, (_FP_FRACBITS_##dfs - _FP_FRACBITS_##sfs)); \
- } \
- else \
- { \
- if (S##_e == 0) \
- { \
- if (_FP_FRAC_ZEROP_##swc(S)) \
- D##_e = 0; \
- else \
- { \
- int _lz; \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- _FP_FRAC_CLZ_##swc(_lz, S); \
- _FP_FRAC_SLL_##dwc(D, \
- _lz + _FP_FRACBITS_##dfs \
- - _FP_FRACTBITS_##sfs); \
- D##_e = (_FP_EXPBIAS_##dfs - _FP_EXPBIAS_##sfs + 1 \
- + _FP_FRACXBITS_##sfs - _lz); \
- } \
- } \
- else \
- { \
- D##_e = _FP_EXPMAX_##dfs; \
- if (!_FP_FRAC_ZEROP_##swc(S)) \
- { \
- if (!(_FP_FRAC_HIGH_RAW_##sfs(S) & _FP_QNANBIT_##sfs)) \
- FP_SET_EXCEPTION(FP_EX_INVALID); \
- _FP_FRAC_SLL_##dwc(D, (_FP_FRACBITS_##dfs \
- - _FP_FRACBITS_##sfs)); \
- } \
- } \
- } \
-} while (0)
-/* Truncate from a wider floating-point format to a narrower one.
- Input and output are semi-raw. */
-#define FP_TRUNC(dfs,sfs,dwc,swc,D,S) \
-do { \
- if (_FP_FRACBITS_##sfs < _FP_FRACBITS_##dfs \
- || _FP_EXPBIAS_##sfs < _FP_EXPBIAS_##dfs + _FP_FRACBITS_##dfs - 1) \
- abort(); \
- D##_s = S##_s; \
- if (_FP_EXP_NORMAL(sfs, swc, S)) \
- { \
- D##_e = S##_e + _FP_EXPBIAS_##dfs - _FP_EXPBIAS_##sfs; \
- if (D##_e >= _FP_EXPMAX_##dfs) \
- _FP_OVERFLOW_SEMIRAW(dfs, dwc, D); \
- else \
- { \
- if (D##_e <= 0) \
- { \
- if (D##_e <= 1 - _FP_FRACBITS_##dfs) \
- _FP_FRAC_SET_##swc(S, _FP_ZEROFRAC_##swc); \
- else \
- { \
- _FP_FRAC_HIGH_##sfs(S) |= _FP_IMPLBIT_SH_##sfs; \
- _FP_FRAC_SRS_##swc(S, (_FP_WFRACBITS_##sfs \
- - _FP_WFRACBITS_##dfs + 1 - D##_e), \
- _FP_WFRACBITS_##sfs); \
- } \
- D##_e = 0; \
- } \
- else \
- _FP_FRAC_SRS_##swc(S, (_FP_WFRACBITS_##sfs \
- - _FP_WFRACBITS_##dfs), \
- _FP_WFRACBITS_##sfs); \
- _FP_FRAC_COPY_##dwc##_##swc(D, S); \
- } \
- } \
- else \
- { \
- if (S##_e == 0) \
- { \
- D##_e = 0; \
- _FP_FRAC_SET_##dwc(D, _FP_ZEROFRAC_##dwc); \
- if (!_FP_FRAC_ZEROP_##swc(S)) \
- { \
- FP_SET_EXCEPTION(FP_EX_DENORM); \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- } \
- } \
- else \
- { \
- D##_e = _FP_EXPMAX_##dfs; \
- if (_FP_FRAC_ZEROP_##swc(S)) \
- _FP_FRAC_SET_##dwc(D, _FP_ZEROFRAC_##dwc); \
- else \
- { \
- _FP_CHECK_SIGNAN_SEMIRAW(sfs, swc, S); \
- _FP_FRAC_SRL_##swc(S, (_FP_WFRACBITS_##sfs \
- - _FP_WFRACBITS_##dfs)); \
- _FP_FRAC_COPY_##dwc##_##swc(D, S); \
- /* Semi-raw NaN must have all workbits cleared. */ \
- _FP_FRAC_LOW_##dwc(D) \
- &= ~(_FP_W_TYPE) ((1 << _FP_WORKBITS) - 1); \
- _FP_FRAC_HIGH_##dfs(D) |= _FP_QNANBIT_SH_##dfs; \
- } \
- } \
- } \
-} while (0)
+#define FP_CONV(dfs,sfs,dwc,swc,D,S) \
+ do { \
+ _FP_FRAC_CONV_##dwc##_##swc(dfs, sfs, D, S); \
+ D##_e = S##_e; \
+ D##_c = S##_c; \
+ D##_s = S##_s; \
+ } while (0)
/*
* Helper primitives.
@@ -1268,18 +725,40 @@ do { \
/* Count leading zeros in a word. */
#ifndef __FP_CLZ
-/* GCC 3.4 and later provide the builtins for us. */
-#define __FP_CLZ(r, x) \
- do { \
- if (sizeof (_FP_W_TYPE) == sizeof (unsigned int)) \
- r = __builtin_clz (x); \
- else if (sizeof (_FP_W_TYPE) == sizeof (unsigned long)) \
- r = __builtin_clzl (x); \
- else if (sizeof (_FP_W_TYPE) == sizeof (unsigned long long)) \
- r = __builtin_clzll (x); \
- else \
- abort (); \
+#if _FP_W_TYPE_SIZE < 64
+/* this is just to shut the compiler up about shifts > word length -- PMM 02/1998 */
+#define __FP_CLZ(r, x) \
+ do { \
+ _FP_W_TYPE _t = (x); \
+ r = _FP_W_TYPE_SIZE - 1; \
+ if (_t > 0xffff) r -= 16; \
+ if (_t > 0xffff) _t >>= 16; \
+ if (_t > 0xff) r -= 8; \
+ if (_t > 0xff) _t >>= 8; \
+ if (_t & 0xf0) r -= 4; \
+ if (_t & 0xf0) _t >>= 4; \
+ if (_t & 0xc) r -= 2; \
+ if (_t & 0xc) _t >>= 2; \
+ if (_t & 0x2) r -= 1; \
+ } while (0)
+#else /* not _FP_W_TYPE_SIZE < 64 */
+#define __FP_CLZ(r, x) \
+ do { \
+ _FP_W_TYPE _t = (x); \
+ r = _FP_W_TYPE_SIZE - 1; \
+ if (_t > 0xffffffff) r -= 32; \
+ if (_t > 0xffffffff) _t >>= 32; \
+ if (_t > 0xffff) r -= 16; \
+ if (_t > 0xffff) _t >>= 16; \
+ if (_t > 0xff) r -= 8; \
+ if (_t > 0xff) _t >>= 8; \
+ if (_t & 0xf0) r -= 4; \
+ if (_t & 0xf0) _t >>= 4; \
+ if (_t & 0xc) r -= 2; \
+ if (_t & 0xc) _t >>= 2; \
+ if (_t & 0x2) r -= 1; \
} while (0)
+#endif /* not _FP_W_TYPE_SIZE < 64 */
#endif /* ndef __FP_CLZ */
#define _FP_DIV_HELP_imm(q, r, n, d) \
diff --git a/soft-fp/quad.h b/soft-fp/quad.h
index d7840ff066..33ee4d4b20 100644
--- a/soft-fp/quad.h
+++ b/soft-fp/quad.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Definitions for IEEE Quad Precision.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,8 +19,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#if _FP_W_TYPE_SIZE < 32
#error "Here's a nickel, kid. Go buy yourself a real computer."
@@ -51,22 +42,16 @@
#define _FP_QNANBIT_Q \
((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-2) % _FP_W_TYPE_SIZE)
-#define _FP_QNANBIT_SH_Q \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-2+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_IMPLBIT_Q \
((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-1) % _FP_W_TYPE_SIZE)
-#define _FP_IMPLBIT_SH_Q \
- ((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-1+_FP_WORKBITS) % _FP_W_TYPE_SIZE)
#define _FP_OVERFLOW_Q \
((_FP_W_TYPE)1 << (_FP_WFRACBITS_Q % _FP_W_TYPE_SIZE))
-typedef float TFtype __attribute__((mode(TF)));
-
#if _FP_W_TYPE_SIZE < 64
union _FP_UNION_Q
{
- TFtype flt;
+ long double flt;
struct
{
#if __BYTE_ORDER == __BIG_ENDIAN
@@ -110,18 +95,6 @@ union _FP_UNION_Q
_FP_UNPACK_CANONICAL(Q,4,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_Q(X,val) \
- do { \
- _FP_UNPACK_RAW_4(Q,X,val); \
- _FP_UNPACK_SEMIRAW(Q,4,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_QP(X,val) \
- do { \
- _FP_UNPACK_RAW_4_P(Q,X,val); \
- _FP_UNPACK_SEMIRAW(Q,4,X); \
- } while (0)
-
#define FP_PACK_Q(val,X) \
do { \
_FP_PACK_CANONICAL(Q,4,X); \
@@ -135,19 +108,6 @@ union _FP_UNION_Q
_FP_PACK_RAW_4_P(Q,val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_Q(val,X) \
- do { \
- _FP_PACK_SEMIRAW(Q,4,X); \
- _FP_PACK_RAW_4(Q,val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_QP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(Q,4,X); \
- if (!FP_INHIBIT_RESULTS) \
- _FP_PACK_RAW_4_P(Q,val,X); \
- } while (0)
-
#define FP_ISSIGNAN_Q(X) _FP_ISSIGNAN(Q,4,X)
#define FP_NEG_Q(R,X) _FP_NEG(Q,4,R,X)
#define FP_ADD_Q(R,X,Y) _FP_ADD(Q,4,R,X,Y)
@@ -159,7 +119,6 @@ union _FP_UNION_Q
#define FP_CMP_Q(r,X,Y,un) _FP_CMP(Q,4,r,X,Y,un)
#define FP_CMP_EQ_Q(r,X,Y) _FP_CMP_EQ(Q,4,r,X,Y)
-#define FP_CMP_UNORD_Q(r,X,Y) _FP_CMP_UNORD(Q,4,r,X,Y)
#define FP_TO_INT_Q(r,X,rsz,rsg) _FP_TO_INT(Q,4,r,X,rsz,rsg)
#define FP_FROM_INT_Q(X,r,rs,rt) _FP_FROM_INT(Q,4,X,r,rs,rt)
@@ -170,7 +129,7 @@ union _FP_UNION_Q
#else /* not _FP_W_TYPE_SIZE < 64 */
union _FP_UNION_Q
{
- TFtype flt /* __attribute__((mode(TF))) */ ;
+ long double flt /* __attribute__((mode(TF))) */ ;
struct {
_FP_W_TYPE a, b;
} longs;
@@ -211,18 +170,6 @@ union _FP_UNION_Q
_FP_UNPACK_CANONICAL(Q,2,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_Q(X,val) \
- do { \
- _FP_UNPACK_RAW_2(Q,X,val); \
- _FP_UNPACK_SEMIRAW(Q,2,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_QP(X,val) \
- do { \
- _FP_UNPACK_RAW_2_P(Q,X,val); \
- _FP_UNPACK_SEMIRAW(Q,2,X); \
- } while (0)
-
#define FP_PACK_Q(val,X) \
do { \
_FP_PACK_CANONICAL(Q,2,X); \
@@ -236,19 +183,6 @@ union _FP_UNION_Q
_FP_PACK_RAW_2_P(Q,val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_Q(val,X) \
- do { \
- _FP_PACK_SEMIRAW(Q,2,X); \
- _FP_PACK_RAW_2(Q,val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_QP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(Q,2,X); \
- if (!FP_INHIBIT_RESULTS) \
- _FP_PACK_RAW_2_P(Q,val,X); \
- } while (0)
-
#define FP_ISSIGNAN_Q(X) _FP_ISSIGNAN(Q,2,X)
#define FP_NEG_Q(R,X) _FP_NEG(Q,2,R,X)
#define FP_ADD_Q(R,X,Y) _FP_ADD(Q,2,R,X,Y)
@@ -260,7 +194,6 @@ union _FP_UNION_Q
#define FP_CMP_Q(r,X,Y,un) _FP_CMP(Q,2,r,X,Y,un)
#define FP_CMP_EQ_Q(r,X,Y) _FP_CMP_EQ(Q,2,r,X,Y)
-#define FP_CMP_UNORD_Q(r,X,Y) _FP_CMP_UNORD(Q,2,r,X,Y)
#define FP_TO_INT_Q(r,X,rsz,rsg) _FP_TO_INT(Q,2,r,X,rsz,rsg)
#define FP_FROM_INT_Q(X,r,rs,rt) _FP_FROM_INT(Q,2,X,r,rs,rt)
diff --git a/soft-fp/single.h b/soft-fp/single.h
index 9c3734adf4..b571d5058a 100644
--- a/soft-fp/single.h
+++ b/soft-fp/single.h
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Definitions for IEEE Single Precision.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +12,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,36 +19,30 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#if _FP_W_TYPE_SIZE < 32
#error "Here's a nickel kid. Go buy yourself a real computer."
#endif
-#define _FP_FRACTBITS_S _FP_W_TYPE_SIZE
-
#define _FP_FRACBITS_S 24
-#define _FP_FRACXBITS_S (_FP_FRACTBITS_S - _FP_FRACBITS_S)
+#define _FP_FRACXBITS_S (_FP_W_TYPE_SIZE - _FP_FRACBITS_S)
#define _FP_WFRACBITS_S (_FP_WORKBITS + _FP_FRACBITS_S)
-#define _FP_WFRACXBITS_S (_FP_FRACTBITS_S - _FP_WFRACBITS_S)
+#define _FP_WFRACXBITS_S (_FP_W_TYPE_SIZE - _FP_WFRACBITS_S)
#define _FP_EXPBITS_S 8
#define _FP_EXPBIAS_S 127
#define _FP_EXPMAX_S 255
#define _FP_QNANBIT_S ((_FP_W_TYPE)1 << (_FP_FRACBITS_S-2))
-#define _FP_QNANBIT_SH_S ((_FP_W_TYPE)1 << (_FP_FRACBITS_S-2+_FP_WORKBITS))
#define _FP_IMPLBIT_S ((_FP_W_TYPE)1 << (_FP_FRACBITS_S-1))
-#define _FP_IMPLBIT_SH_S ((_FP_W_TYPE)1 << (_FP_FRACBITS_S-1+_FP_WORKBITS))
#define _FP_OVERFLOW_S ((_FP_W_TYPE)1 << (_FP_WFRACBITS_S))
/* The implementation of _FP_MUL_MEAT_S and _FP_DIV_MEAT_S should be
chosen by the target machine. */
-typedef float SFtype __attribute__((mode(SF)));
-
union _FP_UNION_S
{
- SFtype flt;
+ float flt;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned sign : 1;
@@ -93,18 +78,6 @@ union _FP_UNION_S
_FP_UNPACK_CANONICAL(S,1,X); \
} while (0)
-#define FP_UNPACK_SEMIRAW_S(X,val) \
- do { \
- _FP_UNPACK_RAW_1(S,X,val); \
- _FP_UNPACK_SEMIRAW(S,1,X); \
- } while (0)
-
-#define FP_UNPACK_SEMIRAW_SP(X,val) \
- do { \
- _FP_UNPACK_RAW_1_P(S,X,val); \
- _FP_UNPACK_SEMIRAW(S,1,X); \
- } while (0)
-
#define FP_PACK_S(val,X) \
do { \
_FP_PACK_CANONICAL(S,1,X); \
@@ -118,19 +91,6 @@ union _FP_UNION_S
_FP_PACK_RAW_1_P(S,val,X); \
} while (0)
-#define FP_PACK_SEMIRAW_S(val,X) \
- do { \
- _FP_PACK_SEMIRAW(S,1,X); \
- _FP_PACK_RAW_1(S,val,X); \
- } while (0)
-
-#define FP_PACK_SEMIRAW_SP(val,X) \
- do { \
- _FP_PACK_SEMIRAW(S,1,X); \
- if (!FP_INHIBIT_RESULTS) \
- _FP_PACK_RAW_1_P(S,val,X); \
- } while (0)
-
#define FP_ISSIGNAN_S(X) _FP_ISSIGNAN(S,1,X)
#define FP_NEG_S(R,X) _FP_NEG(S,1,R,X)
#define FP_ADD_S(R,X,Y) _FP_ADD(S,1,R,X,Y)
@@ -142,7 +102,6 @@ union _FP_UNION_S
#define FP_CMP_S(r,X,Y,un) _FP_CMP(S,1,r,X,Y,un)
#define FP_CMP_EQ_S(r,X,Y) _FP_CMP_EQ(S,1,r,X,Y)
-#define FP_CMP_UNORD_S(r,X,Y) _FP_CMP_UNORD(S,1,r,X,Y)
#define FP_TO_INT_S(r,X,rsz,rsg) _FP_TO_INT(S,1,r,X,rsz,rsg)
#define FP_FROM_INT_S(X,r,rs,rt) _FP_FROM_INT(S,1,X,r,rs,rt)
diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h
index dbf080e7f4..18779f88d8 100644
--- a/soft-fp/soft-fp.h
+++ b/soft-fp/soft-fp.h
@@ -1,6 +1,5 @@
/* Software floating-point emulation.
- Copyright (C) 1997,1998,1999,2000,2002,2003,2005,2006
- Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -12,15 +11,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -28,25 +18,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#ifndef SOFT_FP_H
#define SOFT_FP_H
-#ifdef _LIBC
-#include <sfp-machine.h>
-#else
#include "sfp-machine.h"
-#endif
/* Allow sfp-machine to have its own byte order definitions. */
#ifndef __BYTE_ORDER
-#ifdef _LIBC
#include <endian.h>
-#else
-#error "endianness not defined by sfp-machine.h"
-#endif
#endif
#define _FP_WORKBITS 3
@@ -189,21 +171,8 @@ typedef unsigned int UHWtype __attribute__((mode(HI)));
typedef USItype UHWtype;
#endif
-#define SI_BITS (__CHAR_BIT__ * (int)sizeof(SItype))
-#define DI_BITS (__CHAR_BIT__ * (int)sizeof(DItype))
-
#ifndef umul_ppmm
-#ifdef _LIBC
#include <stdlib/longlong.h>
-#else
-#include "longlong.h"
-#endif
-#endif
-
-#ifdef _LIBC
-#include <stdlib.h>
-#else
-extern void abort (void);
#endif
#endif
diff --git a/soft-fp/sqrtdf2.c b/soft-fp/sqrtdf2.c
index 90601a3748..48efad9349 100644
--- a/soft-fp/sqrtdf2.c
+++ b/soft-fp/sqrtdf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return sqrt(a)
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __sqrtdf2(DFtype a)
+double __sqrtdf2(double a)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_D(A, a);
diff --git a/soft-fp/sqrtsf2.c b/soft-fp/sqrtsf2.c
index 9102b8c3a7..1c8aead6eb 100644
--- a/soft-fp/sqrtsf2.c
+++ b/soft-fp/sqrtsf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return sqrt(a)
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __sqrtsf2(SFtype a)
+float __sqrtsf2(float a)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
FP_UNPACK_S(A, a);
diff --git a/soft-fp/sqrttf2.c b/soft-fp/sqrttf2.c
index 5026ae19ad..241f42dbb4 100644
--- a/soft-fp/sqrttf2.c
+++ b/soft-fp/sqrttf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return sqrt(a)
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,17 +17,17 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __sqrttf2(TFtype a)
+long double __sqrttf2(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
FP_UNPACK_Q(A, a);
diff --git a/soft-fp/subdf3.c b/soft-fp/subdf3.c
index 3978b52998..11a33395f2 100644
--- a/soft-fp/subdf3.c
+++ b/soft-fp/subdf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a - b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
-DFtype __subdf3(DFtype a, DFtype b)
+double __subdf3(double a, double b)
{
FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_D(A, a);
- FP_UNPACK_SEMIRAW_D(B, b);
+ FP_UNPACK_D(A, a);
+ FP_UNPACK_D(B, b);
FP_SUB_D(R, A, B);
- FP_PACK_SEMIRAW_D(r, R);
+ FP_PACK_D(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/subsf3.c b/soft-fp/subsf3.c
index f1cbdd1ff1..84d418b612 100644
--- a/soft-fp/subsf3.c
+++ b/soft-fp/subsf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a - b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
-SFtype __subsf3(SFtype a, SFtype b)
+float __subsf3(float a, float b)
{
FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_S(A, a);
- FP_UNPACK_SEMIRAW_S(B, b);
+ FP_UNPACK_S(A, a);
+ FP_UNPACK_S(B, b);
FP_SUB_S(R, A, B);
- FP_PACK_SEMIRAW_S(r, R);
+ FP_PACK_S(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/subtf3.c b/soft-fp/subtf3.c
index 7ba4c8c5ea..448d398a95 100644
--- a/soft-fp/subtf3.c
+++ b/soft-fp/subtf3.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Return a - b
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,23 +17,23 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "quad.h"
-TFtype __subtf3(TFtype a, TFtype b)
+long double __subtf3(long double a, long double b)
{
FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(R);
- TFtype r;
+ long double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
- FP_UNPACK_SEMIRAW_Q(B, b);
+ FP_UNPACK_Q(A, a);
+ FP_UNPACK_Q(B, b);
FP_SUB_Q(R, A, B);
- FP_PACK_SEMIRAW_Q(r, R);
+ FP_PACK_Q(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/truncdfsf2.c b/soft-fp/truncdfsf2.c
index bd953912e9..f7459513d6 100644
--- a/soft-fp/truncdfsf2.c
+++ b/soft-fp/truncdfsf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Truncate IEEE double into IEEE single
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
#include "double.h"
-SFtype __truncdfsf2(DFtype a)
+float __truncdfsf2(double a)
{
FP_DECL_EX;
FP_DECL_D(A);
FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_D(A, a);
+ FP_UNPACK_D(A, a);
#if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
- FP_TRUNC(S,D,1,2,R,A);
+ FP_CONV(S,D,1,2,R,A);
#else
- FP_TRUNC(S,D,1,1,R,A);
+ FP_CONV(S,D,1,1,R,A);
#endif
- FP_PACK_SEMIRAW_S(r, R);
+ FP_PACK_S(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/trunctfdf2.c b/soft-fp/trunctfdf2.c
index c3827b08ab..18ce1d56e8 100644
--- a/soft-fp/trunctfdf2.c
+++ b/soft-fp/trunctfdf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Truncate IEEE quad into IEEE double
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "double.h"
#include "quad.h"
-DFtype __trunctfdf2(TFtype a)
+double __trunctfdf2(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
FP_DECL_D(R);
- DFtype r;
+ double r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
+ FP_UNPACK_Q(A, a);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_TRUNC(D,Q,2,4,R,A);
+ FP_CONV(D,Q,2,4,R,A);
#else
- FP_TRUNC(D,Q,1,2,R,A);
+ FP_CONV(D,Q,1,2,R,A);
#endif
- FP_PACK_SEMIRAW_D(r, R);
+ FP_PACK_D(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/trunctfsf2.c b/soft-fp/trunctfsf2.c
index 676c937e20..32d658ab67 100644
--- a/soft-fp/trunctfsf2.c
+++ b/soft-fp/trunctfsf2.c
@@ -1,6 +1,6 @@
/* Software floating-point emulation.
Truncate IEEE quad into IEEE single
- Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com) and
Jakub Jelinek (jj@ultra.linux.cz).
@@ -10,15 +10,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -26,28 +17,28 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "soft-fp.h"
#include "single.h"
#include "quad.h"
-SFtype __trunctfsf2(TFtype a)
+float __trunctfsf2(long double a)
{
FP_DECL_EX;
FP_DECL_Q(A);
FP_DECL_S(R);
- SFtype r;
+ float r;
FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
+ FP_UNPACK_Q(A, a);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_TRUNC(S,Q,1,4,R,A);
+ FP_CONV(S,Q,1,4,R,A);
#else
- FP_TRUNC(S,Q,1,2,R,A);
+ FP_CONV(S,Q,1,2,R,A);
#endif
- FP_PACK_SEMIRAW_S(r, R);
+ FP_PACK_S(r, R);
FP_HANDLE_EXCEPTIONS;
return r;
diff --git a/soft-fp/unorddf2.c b/soft-fp/unorddf2.c
deleted file mode 100644
index c83a563275..0000000000
--- a/soft-fp/unorddf2.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a or b is a NaN, 0 otherwise.
- Copyright (C) 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Joseph Myers (joseph@codesourcery.com).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "double.h"
-
-int
-__unorddf2(DFtype a, DFtype b)
-{
- FP_DECL_D(A); FP_DECL_D(B);
- int r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_UNORD_D(r, A, B);
-
- return r;
-}
diff --git a/soft-fp/unordsf2.c b/soft-fp/unordsf2.c
deleted file mode 100644
index 8de7563566..0000000000
--- a/soft-fp/unordsf2.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a or b is a NaN, 0 otherwise.
- Copyright (C) 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Joseph Myers (joseph@codesourcery.com).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "single.h"
-
-int
-__unordsf2(SFtype a, SFtype b)
-{
- FP_DECL_S(A);
- FP_DECL_S(B);
- int r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_UNORD_S(r, A, B);
-
- return r;
-}
diff --git a/soft-fp/unordtf2.c b/soft-fp/unordtf2.c
deleted file mode 100644
index 134b1d09b8..0000000000
--- a/soft-fp/unordtf2.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a or b is a NaN, 0 otherwise.
- Copyright (C) 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Joseph Myers (joseph@codesourcery.com).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-int
-__unordtf2(TFtype a, TFtype b)
-{
- FP_DECL_Q(A);
- FP_DECL_Q(B);
- int r;
-
- FP_UNPACK_RAW_Q(A, a);
- FP_UNPACK_RAW_Q(B, b);
- FP_CMP_UNORD_Q(r, A, B);
-
- return r;
-}