]> gcc.gnu.org Git - gcc.git/commitdiff
long_double.h (FIXUNS_TRUNCTFDI2_LIBCALL): New define.
authorSteve Ellcey <sje@cup.hp.com>
Tue, 16 Jul 2002 19:39:27 +0000 (19:39 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Tue, 16 Jul 2002 19:39:27 +0000 (19:39 +0000)
* 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

gcc/ChangeLog
gcc/config/pa/long_double.h
gcc/config/pa/quadlib.c

index eb97ffcba5a17ae9f895aa75bab7fb3a0723d161..80873770c5f2d79e7753a040e2ae705213fbaee0 100644 (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
index 9d21eea6bc4c348e846b0c41810405608c1b6d64..5d2c6199bc8580eaa1a4d50669b950762b5dc992 100644 (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);         \
index 358b9b448bbdeb656e02268d501045411b20f3d1..05d632a25c637bb1450d920001d07ceb5e8aae39 100644 (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];
+}
This page took 0.097343 seconds and 5 git commands to generate.