long_double.h (FIXUNS_TRUNCTFDI2_LIBCALL): New define.

* gcc/config/pa/long_double.h (FIXUNS_TRUNCTFDI2_LIBCALL): New define.
	(fixunstfdi_libfunc): Change to use FIXUNS_TRUNCTFDI2_LIBCALL.
	* gcc/config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_udbl): New function.

From-SVN: r55490
This commit is contained in:
Steve Ellcey 2002-07-16 19:39:27 +00:00 committed by Steve Ellcey
parent 5d7c281902
commit 6acb6d3ef0
3 changed files with 26 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2002-07-16 Steve Ellcey <sje@cup.hp.com>
* gcc/config/pa/long_double.h (FIXUNS_TRUNCTFDI2_LIBCALL): New define.
(fixunstfdi_libfunc): Change to use FIXUNS_TRUNCTFDI2_LIBCALL.
* gcc/config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_udbl): New function.
2002-07-16 Ian Dall <ian@sibyl.beware.dropbear.id.au>
* doc/invoke.texi (NS32K Options): Document -mieee-compare option

View File

@ -1,5 +1,5 @@
/* Definitions of long double support for GNU compiler.
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -42,6 +42,7 @@ Boston, MA 02111-1307, USA. */
#define FIX_TRUNCTFSI2_LIBCALL \
(TARGET_64BIT ? "__U_Qfcnvfxt_quad_to_sgl" : "_U_Qfcnvfxt_quad_to_sgl")
#define FIXUNS_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxt_quad_to_usgl"
#define FIXUNS_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_udbl"
#define FIX_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_dbl"
#define EQTF2_LIBCALL "_U_Qfeq"
#define NETF2_LIBCALL "_U_Qfne"
@ -80,7 +81,7 @@ Boston, MA 02111-1307, USA. */
fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);\
fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);\
fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL);\
fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL); \
fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL);\
eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL); \

View File

@ -1,5 +1,5 @@
/* Subroutines for long double support.
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -42,6 +42,7 @@ long double _U_Qfneg (long double);
int __U_Qfcnvfxt_quad_to_sgl (long double);
#endif
unsigned int _U_Qfcnvfxt_quad_to_usgl(long double);
unsigned long long _U_Qfcnvfxt_quad_to_udbl(long double);
int
_U_Qfeq (long double a, long double b)
@ -114,3 +115,19 @@ _U_Qfcnvfxt_quad_to_usgl(long double a)
extern long long _U_Qfcnvfxt_quad_to_dbl (long double a);
return (unsigned int) _U_Qfcnvfxt_quad_to_dbl (a);
}
/* HP only has signed conversion in library, so need to synthesize an
unsigned version */
typedef union {
long long unsigned int u[2];
long double d[1];
} quad_type;
unsigned long long
_U_Qfcnvfxt_quad_to_udbl(long double a)
{
extern quad_type _U_Qfcnvfxt_quad_to_quad (long double a);
quad_type u;
u = _U_Qfcnvfxt_quad_to_quad(a);
return u.u[1];
}