double.h, [...]: Update from glibc CVS.
* config/soft-fp/double.h, config/soft-fp/extended.h, config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c, config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c, config/soft-fp/op-2.h, config/soft-fp/op-4.h, config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from glibc CVS. From-SVN: r124388
This commit is contained in:
parent
97797e00e7
commit
13cc6d1bd3
11 changed files with 88 additions and 75 deletions
|
@ -1,3 +1,12 @@
|
|||
2007-05-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* config/soft-fp/double.h, config/soft-fp/extended.h,
|
||||
config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
|
||||
config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
|
||||
config/soft-fp/op-2.h, config/soft-fp/op-4.h,
|
||||
config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
|
||||
glibc CVS.
|
||||
|
||||
2007-05-03 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_override_options): Don't se
|
||||
|
|
|
@ -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,2006,2007 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),
|
||||
|
@ -168,13 +168,13 @@ union _FP_UNION_D
|
|||
DFtype flt;
|
||||
struct {
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_D;
|
||||
unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_D;
|
||||
_FP_W_TYPE frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
|
||||
#else
|
||||
unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
|
||||
unsigned exp : _FP_EXPBITS_D;
|
||||
unsigned sign : 1;
|
||||
_FP_W_TYPE frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
|
||||
unsigned exp : _FP_EXPBITS_D;
|
||||
unsigned sign : 1;
|
||||
#endif
|
||||
} bits __attribute__((packed));
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Software floating-point emulation.
|
||||
Definitions for IEEE Extended Precision.
|
||||
Copyright (C) 1999,2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999,2006,2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek (jj@ultra.linux.cz).
|
||||
|
||||
|
@ -94,12 +94,6 @@ union _FP_UNION_E
|
|||
X##_f[1] = _flo.bits.frac1; \
|
||||
X##_e = _flo.bits.exp; \
|
||||
X##_s = _flo.bits.sign; \
|
||||
if (!X##_e && (X##_f[1] || X##_f[0]) \
|
||||
&& !(X##_f[1] & _FP_IMPLBIT_E)) \
|
||||
{ \
|
||||
X##_e++; \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define FP_UNPACK_RAW_EP(X, val) \
|
||||
|
@ -112,12 +106,6 @@ union _FP_UNION_E
|
|||
X##_f[1] = _flo->bits.frac1; \
|
||||
X##_e = _flo->bits.exp; \
|
||||
X##_s = _flo->bits.sign; \
|
||||
if (!X##_e && (X##_f[1] || X##_f[0]) \
|
||||
&& !(X##_f[1] & _FP_IMPLBIT_E)) \
|
||||
{ \
|
||||
X##_e++; \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define FP_PACK_RAW_E(val, X) \
|
||||
|
@ -164,13 +152,13 @@ union _FP_UNION_E
|
|||
|
||||
#define FP_UNPACK_SEMIRAW_E(X,val) \
|
||||
do { \
|
||||
_FP_UNPACK_RAW_E(X,val); \
|
||||
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_RAW_EP(X,val); \
|
||||
_FP_UNPACK_SEMIRAW(E,4,X); \
|
||||
} while (0)
|
||||
|
||||
|
@ -189,13 +177,13 @@ union _FP_UNION_E
|
|||
#define FP_PACK_SEMIRAW_E(val,X) \
|
||||
do { \
|
||||
_FP_PACK_SEMIRAW(E,4,X); \
|
||||
_FP_PACK_RAW_E(val,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); \
|
||||
FP_PACK_RAW_EP(val,X); \
|
||||
} while (0)
|
||||
|
||||
#define FP_ISSIGNAN_E(X) _FP_ISSIGNAN(E,4,X)
|
||||
|
@ -277,14 +265,14 @@ union _FP_UNION_E
|
|||
XFtype flt;
|
||||
struct {
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned long pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_E;
|
||||
unsigned long frac : _FP_W_TYPE_SIZE;
|
||||
_FP_W_TYPE pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_E;
|
||||
_FP_W_TYPE frac : _FP_W_TYPE_SIZE;
|
||||
#else
|
||||
unsigned long frac : _FP_W_TYPE_SIZE;
|
||||
unsigned exp : _FP_EXPBITS_E;
|
||||
unsigned sign : 1;
|
||||
_FP_W_TYPE frac : _FP_W_TYPE_SIZE;
|
||||
unsigned exp : _FP_EXPBITS_E;
|
||||
unsigned sign : 1;
|
||||
#endif
|
||||
} bits;
|
||||
};
|
||||
|
@ -299,11 +287,6 @@ union _FP_UNION_E
|
|||
X##_f1 = 0; \
|
||||
X##_e = _flo.bits.exp; \
|
||||
X##_s = _flo.bits.sign; \
|
||||
if (!X##_e && X##_f0 && !(X##_f0 & _FP_IMPLBIT_E)) \
|
||||
{ \
|
||||
X##_e++; \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define FP_UNPACK_RAW_EP(X, val) \
|
||||
|
@ -315,11 +298,6 @@ union _FP_UNION_E
|
|||
X##_f1 = 0; \
|
||||
X##_e = _flo->bits.exp; \
|
||||
X##_s = _flo->bits.sign; \
|
||||
if (!X##_e && X##_f0 && !(X##_f0 & _FP_IMPLBIT_E)) \
|
||||
{ \
|
||||
X##_e++; \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define FP_PACK_RAW_E(val, X) \
|
||||
|
@ -365,13 +343,13 @@ union _FP_UNION_E
|
|||
|
||||
#define FP_UNPACK_SEMIRAW_E(X,val) \
|
||||
do { \
|
||||
_FP_UNPACK_RAW_E(X,val); \
|
||||
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_RAW_EP(X,val); \
|
||||
_FP_UNPACK_SEMIRAW(E,2,X); \
|
||||
} while (0)
|
||||
|
||||
|
@ -390,13 +368,13 @@ union _FP_UNION_E
|
|||
#define FP_PACK_SEMIRAW_E(val,X) \
|
||||
do { \
|
||||
_FP_PACK_SEMIRAW(E,2,X); \
|
||||
_FP_PACK_RAW_E(val,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); \
|
||||
FP_PACK_RAW_EP(val,X); \
|
||||
} while (0)
|
||||
|
||||
#define FP_ISSIGNAN_E(X) _FP_ISSIGNAN(E,2,X)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Software floating-point emulation.
|
||||
Convert a 64bit unsigned integer to IEEE double
|
||||
Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1999, 2006, 2007 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).
|
||||
|
@ -32,8 +32,7 @@
|
|||
#include "soft-fp.h"
|
||||
#include "double.h"
|
||||
|
||||
double
|
||||
__floatundidf(UDItype i)
|
||||
DFtype __floatundidf(UDItype i)
|
||||
{
|
||||
FP_DECL_EX;
|
||||
FP_DECL_D(A);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Software floating-point emulation.
|
||||
Convert a 64bit unsigned integer to IEEE single
|
||||
Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1999, 2006, 2007 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).
|
||||
|
@ -32,8 +32,7 @@
|
|||
#include "soft-fp.h"
|
||||
#include "single.h"
|
||||
|
||||
float
|
||||
__floatundisf(UDItype i)
|
||||
SFtype __floatundisf(UDItype i)
|
||||
{
|
||||
FP_DECL_EX;
|
||||
FP_DECL_S(A);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Software floating-point emulation.
|
||||
Convert a 32bit unsigned integer to IEEE double
|
||||
Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1999, 2006, 2007 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).
|
||||
|
@ -32,8 +32,7 @@
|
|||
#include "soft-fp.h"
|
||||
#include "double.h"
|
||||
|
||||
double
|
||||
__floatunsidf(USItype i)
|
||||
DFtype __floatunsidf(USItype i)
|
||||
{
|
||||
FP_DECL_EX;
|
||||
FP_DECL_D(A);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Software floating-point emulation.
|
||||
Convert a 32bit unsigned integer to IEEE single
|
||||
Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1999, 2006, 2007 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).
|
||||
|
@ -32,8 +32,7 @@
|
|||
#include "soft-fp.h"
|
||||
#include "single.h"
|
||||
|
||||
float
|
||||
__floatunsisf(USItype i)
|
||||
SFtype __floatunsisf(USItype i)
|
||||
{
|
||||
FP_DECL_EX;
|
||||
FP_DECL_S(A);
|
||||
|
|
|
@ -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,2006,2007 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),
|
||||
|
@ -613,3 +613,5 @@
|
|||
#define _FP_FRAC_COPY_1_2(D, S) (D##_f = S##_f0)
|
||||
|
||||
#define _FP_FRAC_COPY_2_1(D, S) ((D##_f0 = S##_f), (D##_f1 = 0))
|
||||
|
||||
#define _FP_FRAC_COPY_2_2(D,S) _FP_FRAC_COPY_2(D,S)
|
||||
|
|
|
@ -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,2006,2007 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),
|
||||
|
@ -684,3 +684,5 @@ do { \
|
|||
D##_f[1] = S##_f1; \
|
||||
D##_f[2] = D##_f[3] = 0; \
|
||||
} while (0)
|
||||
|
||||
#define _FP_FRAC_COPY_4_4(D,S) _FP_FRAC_COPY_4(D,S)
|
||||
|
|
|
@ -1153,7 +1153,8 @@ 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) \
|
||||
|| (_FP_EXPBIAS_##dfs < _FP_EXPBIAS_##sfs + _FP_FRACBITS_##sfs - 1 \
|
||||
&& _FP_EXPBIAS_##dfs != _FP_EXPBIAS_##sfs)) \
|
||||
abort(); \
|
||||
D##_s = S##_s; \
|
||||
_FP_FRAC_COPY_##dwc##_##swc(D, S); \
|
||||
|
@ -1168,6 +1169,14 @@ do { \
|
|||
{ \
|
||||
if (_FP_FRAC_ZEROP_##swc(S)) \
|
||||
D##_e = 0; \
|
||||
else if (_FP_EXPBIAS_##dfs \
|
||||
< _FP_EXPBIAS_##sfs + _FP_FRACBITS_##sfs - 1) \
|
||||
{ \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
_FP_FRAC_SLL_##dwc(D, (_FP_FRACBITS_##dfs \
|
||||
- _FP_FRACBITS_##sfs)); \
|
||||
D##_e = 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
int _lz; \
|
||||
|
@ -1199,7 +1208,8 @@ do { \
|
|||
#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) \
|
||||
|| (_FP_EXPBIAS_##sfs < _FP_EXPBIAS_##dfs + _FP_FRACBITS_##dfs - 1 \
|
||||
&& _FP_EXPBIAS_##sfs != _FP_EXPBIAS_##dfs)) \
|
||||
abort(); \
|
||||
D##_s = S##_s; \
|
||||
if (_FP_EXP_NORMAL(sfs, swc, S)) \
|
||||
|
@ -1211,8 +1221,11 @@ do { \
|
|||
{ \
|
||||
if (D##_e <= 0) \
|
||||
{ \
|
||||
if (D##_e <= 1 - _FP_FRACBITS_##dfs) \
|
||||
_FP_FRAC_SET_##swc(S, _FP_ZEROFRAC_##swc); \
|
||||
if (D##_e < 1 - _FP_FRACBITS_##dfs) \
|
||||
{ \
|
||||
_FP_FRAC_SET_##swc(S, _FP_ZEROFRAC_##swc); \
|
||||
_FP_FRAC_LOW_##swc(S) |= 1; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
_FP_FRAC_HIGH_##sfs(S) |= _FP_IMPLBIT_SH_##sfs; \
|
||||
|
@ -1234,11 +1247,24 @@ do { \
|
|||
if (S##_e == 0) \
|
||||
{ \
|
||||
D##_e = 0; \
|
||||
_FP_FRAC_SET_##dwc(D, _FP_ZEROFRAC_##dwc); \
|
||||
if (!_FP_FRAC_ZEROP_##swc(S)) \
|
||||
if (_FP_FRAC_ZEROP_##swc(S)) \
|
||||
_FP_FRAC_SET_##dwc(D, _FP_ZEROFRAC_##dwc); \
|
||||
else \
|
||||
{ \
|
||||
FP_SET_EXCEPTION(FP_EX_DENORM); \
|
||||
FP_SET_EXCEPTION(FP_EX_INEXACT); \
|
||||
if (_FP_EXPBIAS_##sfs \
|
||||
< _FP_EXPBIAS_##dfs + _FP_FRACBITS_##dfs - 1) \
|
||||
{ \
|
||||
_FP_FRAC_SRS_##swc(S, (_FP_WFRACBITS_##sfs \
|
||||
- _FP_WFRACBITS_##dfs), \
|
||||
_FP_WFRACBITS_##sfs); \
|
||||
_FP_FRAC_COPY_##dwc##_##swc(D, S); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
_FP_FRAC_SET_##dwc(D, _FP_ZEROFRAC_##dwc); \
|
||||
_FP_FRAC_LOW_##dwc(D) |= 1; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
|
|
|
@ -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,2006,2007 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),
|
||||
|
@ -176,15 +176,15 @@ union _FP_UNION_Q
|
|||
} longs;
|
||||
struct {
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_Q;
|
||||
unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
|
||||
unsigned long frac0 : _FP_W_TYPE_SIZE;
|
||||
unsigned sign : 1;
|
||||
unsigned exp : _FP_EXPBITS_Q;
|
||||
_FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) - _FP_W_TYPE_SIZE;
|
||||
_FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
|
||||
#else
|
||||
unsigned long frac0 : _FP_W_TYPE_SIZE;
|
||||
unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
|
||||
unsigned exp : _FP_EXPBITS_Q;
|
||||
unsigned sign : 1;
|
||||
_FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
|
||||
_FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) - _FP_W_TYPE_SIZE;
|
||||
unsigned exp : _FP_EXPBITS_Q;
|
||||
unsigned sign : 1;
|
||||
#endif
|
||||
} bits;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue