aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/quadlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/pa/quadlib.c')
-rw-r--r--gcc/config/pa/quadlib.c245
1 files changed, 0 insertions, 245 deletions
diff --git a/gcc/config/pa/quadlib.c b/gcc/config/pa/quadlib.c
deleted file mode 100644
index 2c11600..0000000
--- a/gcc/config/pa/quadlib.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* Subroutines for long double support.
- Copyright (C) 2000, 2002, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* HPUX TFmode compare requires a library call to _U_Qfcmp. It takes
- a magic number as its third argument which indicates what to do.
- The return value is an integer to be compared against zero. The
- comparison conditions are the same as those listed in Table 8-12
- of the PA-RISC 2.0 Architecture book for the fcmp instruction. */
-
-/* Raise FP_INVALID on SNaN as a side effect. */
-#define QCMP_INV 1
-
-/* Comparison relations. */
-#define QCMP_UNORD 2
-#define QCMP_EQ 4
-#define QCMP_LT 8
-#define QCMP_GT 16
-
-int _U_Qfcmp (long double a, long double b, int);
-long _U_Qfcnvfxt_quad_to_sgl (long double);
-
-int _U_Qfeq (long double, long double);
-int _U_Qfne (long double, long double);
-int _U_Qfgt (long double, long double);
-int _U_Qfge (long double, long double);
-int _U_Qflt (long double, long double);
-int _U_Qfle (long double, long double);
-int _U_Qfltgt (long double, long double);
-int _U_Qfunle (long double, long double);
-int _U_Qfunlt (long double, long double);
-int _U_Qfunge (long double, long double);
-int _U_Qfungt (long double, long double);
-int _U_Qfuneq (long double, long double);
-int _U_Qfunord (long double, long double);
-int _U_Qford (long double, long double);
-
-int _U_Qfcomp (long double, long double);
-
-long double _U_Qfneg (long double);
-long double _U_Qfcopysign (long double, long double);
-
-#ifdef __LP64__
-int __U_Qfcnvfxt_quad_to_sgl (long double);
-#endif
-unsigned int _U_Qfcnvfxt_quad_to_usgl(long double);
-long double _U_Qfcnvxf_usgl_to_quad (unsigned int);
-unsigned long long _U_Qfcnvfxt_quad_to_udbl(long double);
-long double _U_Qfcnvxf_udbl_to_quad (unsigned long long);
-
-int
-_U_Qfeq (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_EQ) != 0);
-}
-
-int
-_U_Qfne (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_EQ) == 0);
-}
-
-int
-_U_Qfgt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_GT) != 0);
-}
-
-int
-_U_Qfge (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_GT) != 0);
-}
-
-int
-_U_Qflt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT) != 0);
-}
-
-int
-_U_Qfle (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT) != 0);
-}
-
-int
-_U_Qfltgt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT | QCMP_GT) != 0);
-}
-
-int
-_U_Qfunle (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_LT) != 0);
-}
-
-int
-_U_Qfunlt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_LT) != 0);
-}
-
-int
-_U_Qfunge (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0);
-}
-
-int
-_U_Qfungt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_GT) != 0);
-}
-
-int
-_U_Qfuneq (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ) != 0);
-}
-
-int
-_U_Qfunord (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD) != 0);
-}
-
-int
-_U_Qford (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT | QCMP_GT) != 0);
-}
-
-int
-_U_Qfcomp (long double a, long double b)
-{
- if (_U_Qfcmp (a, b, QCMP_EQ) == 0)
- return 0;
-
- return (_U_Qfcmp (a, b, QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0 ? 1 : -1);
-}
-
-/* Negate long double A. */
-long double
-_U_Qfneg (long double a)
-{
- union
- {
- long double ld;
- int i[4];
- } u;
-
- u.ld = a;
- u.i[0] ^= 0x80000000;
- return u.ld;
-}
-
-/* Return long double A with sign changed to sign of long double B. */
-long double
-_U_Qfcopysign (long double a, long double b)
-{
- union
- {
- long double ld;
- int i[4];
- } ua, ub;
-
- ua.ld = a;
- ub.ld = b;
- ua.i[0] &= 0x7fffffff;
- ua.i[0] |= (0x80000000 & ub.i[0]);
- return ua.ld;
-}
-
-#ifdef __LP64__
-/* This routine is only necessary for the PA64 port; for reasons unknown
- _U_Qfcnvfxt_quad_to_sgl returns the integer in the high 32bits of the
- return value. Ugh. */
-int
-__U_Qfcnvfxt_quad_to_sgl (long double a)
-{
- return _U_Qfcnvfxt_quad_to_sgl (a) >> 32;
-}
-#endif
-
-/* HP only has signed conversion in the C library, so need to synthesize
- unsigned versions. */
-unsigned int
-_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);
-}
-
-long double
-_U_Qfcnvxf_usgl_to_quad (unsigned int a)
-{
- extern long double _U_Qfcnvxf_dbl_to_quad (long long);
- return _U_Qfcnvxf_dbl_to_quad ((long long) a);
-}
-
-typedef union {
- unsigned long long 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];
-}
-
-long double
-_U_Qfcnvxf_udbl_to_quad (unsigned long long a)
-{
- extern long double _U_Qfcnvxf_quad_to_quad (quad_type a);
- quad_type u;
- u.u[0] = 0;
- u.u[1] = a;
- return _U_Qfcnvxf_quad_to_quad (u);
-}