]>
Commit | Line | Data |
---|---|---|
a7a1d270 JL |
1 | /* Subroutines for long double support. |
2 | Copyright (C) 2000 Free Software Foundation, Inc. | |
3 | ||
4 | This file is part of GNU CC. | |
5 | ||
6 | GNU CC is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 2, or (at your option) | |
9 | any later version. | |
10 | ||
f7af368f JL |
11 | In addition to the permissions in the GNU General Public License, the |
12 | Free Software Foundation gives you unlimited permission to link the | |
13 | compiled version of this file into combinations with other programs, | |
14 | and to distribute those combinations without any restriction coming | |
15 | from the use of this file. (The General Public License restrictions | |
16 | do apply in other respects; for example, they cover modification of | |
17 | the file, and distribution when not linked into a combine | |
18 | executable.) | |
19 | ||
a7a1d270 JL |
20 | GNU CC is distributed in the hope that it will be useful, |
21 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 | GNU General Public License for more details. | |
24 | ||
25 | You should have received a copy of the GNU General Public License | |
26 | along with GNU CC; see the file COPYING. If not, write to | |
27 | the Free Software Foundation, 59 Temple Place - Suite 330, | |
28 | Boston, MA 02111-1307, USA. */ | |
29 | ||
30 | int _U_Qfcmp (long double a, long double b, int); | |
31 | long _U_Qfcnvfxt_quad_to_sgl (long double); | |
32 | ||
33 | int | |
34 | _U_Qfeq (long double a, long double b) | |
35 | { | |
36 | return (_U_Qfcmp (a, b, 4) != 0); | |
37 | } | |
38 | ||
39 | int | |
40 | _U_Qfne (long double a, long double b) | |
41 | { | |
42 | return (_U_Qfcmp (a, b, 4) == 0); | |
43 | } | |
44 | ||
45 | int | |
46 | _U_Qfgt (long double a, long double b) | |
47 | { | |
48 | return (_U_Qfcmp (a, b, 17) != 0); | |
49 | } | |
50 | ||
51 | int | |
52 | _U_Qfge (long double a, long double b) | |
53 | { | |
54 | return (_U_Qfcmp (a, b, 21) != 0); | |
55 | } | |
56 | ||
57 | int | |
58 | _U_Qflt (long double a, long double b) | |
59 | { | |
60 | return (_U_Qfcmp (a, b, 9) != 0); | |
61 | } | |
62 | ||
63 | int | |
64 | _U_Qfle (long double a, long double b) | |
65 | { | |
66 | return (_U_Qfcmp (a, b, 13) != 0); | |
67 | } | |
68 | ||
69 | int | |
70 | _U_Qfcomp (long double a, long double b) | |
71 | { | |
72 | if (_U_Qfcmp (a, b, 4) == 0) | |
73 | return 0; | |
74 | ||
75 | return (_U_Qfcmp (a, b, 22) != 0 ? 1 : -1); | |
76 | } | |
77 | ||
78 | ||
79 | long double | |
80 | _U_Qfneg (long double a) | |
81 | { | |
82 | return (0.0L - a); | |
83 | } | |
84 | ||
85 | #ifdef __LP64__ | |
86 | /* This routine is only necessary for the PA64 port; for reasons unknown | |
87 | _U_Qfcnvfxt_quad_to_sgl returns the integer in the high 32bits of the | |
88 | return value. Ugh. */ | |
89 | int | |
90 | __U_Qfcnvfxt_quad_to_sgl (long double a) | |
91 | { | |
92 | return _U_Qfcnvfxt_quad_to_sgl (a) >> 32; | |
93 | } | |
94 | #endif |