Mercurial > hg > CbC > CbC_gcc
annotate gcc/double-int.h @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
rev | line source |
---|---|
0 | 1 /* Operations with long integers. |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
2 Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc. |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
3 |
0 | 4 This file is part of GCC. |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
5 |
0 | 6 GCC is free software; you can redistribute it and/or modify it |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 3, or (at your option) any | |
9 later version. | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
10 |
0 | 11 GCC is distributed in the hope that it will be useful, but WITHOUT |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
15 |
0 | 16 You should have received a copy of the GNU General Public License |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 #ifndef DOUBLE_INT_H | |
21 #define DOUBLE_INT_H | |
22 | |
23 #ifndef GENERATOR_FILE | |
24 #include <gmp.h> | |
25 #endif | |
26 #include "coretypes.h" | |
27 | |
28 /* A large integer is currently represented as a pair of HOST_WIDE_INTs. | |
29 It therefore represents a number with precision of | |
30 2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the | |
31 internal representation will change, if numbers with greater precision | |
32 are needed, so the users should not rely on it). The representation does | |
33 not contain any information about signedness of the represented value, so | |
34 it can be used to represent both signed and unsigned numbers. For | |
35 operations where the results depend on signedness (division, comparisons), | |
36 it must be specified separately. For each such operation, there are three | |
37 versions of the function -- double_int_op, that takes an extra UNS argument | |
38 giving the signedness of the values, and double_int_sop and double_int_uop | |
39 that stand for its specializations for signed and unsigned values. | |
40 | |
41 You may also represent with numbers in smaller precision using double_int. | |
42 You however need to use double_int_ext (that fills in the bits of the | |
43 number over the prescribed precision with zeros or with the sign bit) before | |
44 operations that do not perform arithmetics modulo 2^precision (comparisons, | |
45 division), and possibly before storing the results, if you want to keep | |
46 them in some canonical form). In general, the signedness of double_int_ext | |
47 should match the signedness of the operation. | |
48 | |
49 ??? The components of double_int differ in signedness mostly for | |
50 historical reasons (they replace an older structure used to represent | |
51 numbers with precision higher than HOST_WIDE_INT). It might be less | |
52 confusing to have them both signed or both unsigned. */ | |
53 | |
54 typedef struct | |
55 { | |
56 unsigned HOST_WIDE_INT low; | |
57 HOST_WIDE_INT high; | |
58 } double_int; | |
59 | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
60 #define HOST_BITS_PER_DOUBLE_INT (2 * HOST_BITS_PER_WIDE_INT) |
0 | 61 |
62 /* Constructors and conversions. */ | |
63 | |
64 /* Constructs double_int from integer CST. The bits over the precision of | |
65 HOST_WIDE_INT are filled with the sign bit. */ | |
66 | |
67 static inline double_int | |
68 shwi_to_double_int (HOST_WIDE_INT cst) | |
69 { | |
70 double_int r; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
71 |
0 | 72 r.low = (unsigned HOST_WIDE_INT) cst; |
73 r.high = cst < 0 ? -1 : 0; | |
74 | |
75 return r; | |
76 } | |
77 | |
78 /* Some useful constants. */ | |
79 | |
80 #define double_int_minus_one (shwi_to_double_int (-1)) | |
81 #define double_int_zero (shwi_to_double_int (0)) | |
82 #define double_int_one (shwi_to_double_int (1)) | |
83 #define double_int_two (shwi_to_double_int (2)) | |
84 #define double_int_ten (shwi_to_double_int (10)) | |
85 | |
86 /* Constructs double_int from unsigned integer CST. The bits over the | |
87 precision of HOST_WIDE_INT are filled with zeros. */ | |
88 | |
89 static inline double_int | |
90 uhwi_to_double_int (unsigned HOST_WIDE_INT cst) | |
91 { | |
92 double_int r; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
93 |
0 | 94 r.low = cst; |
95 r.high = 0; | |
96 | |
97 return r; | |
98 } | |
99 | |
100 /* The following operations perform arithmetics modulo 2^precision, | |
101 so you do not need to call double_int_ext between them, even if | |
102 you are representing numbers with precision less than | |
103 2 * HOST_BITS_PER_WIDE_INT bits. */ | |
104 | |
105 double_int double_int_mul (double_int, double_int); | |
106 double_int double_int_add (double_int, double_int); | |
107 double_int double_int_neg (double_int); | |
108 | |
109 /* You must ensure that double_int_ext is called on the operands | |
110 of the following operations, if the precision of the numbers | |
111 is less than 2 * HOST_BITS_PER_WIDE_INT bits. */ | |
112 bool double_int_fits_in_hwi_p (double_int, bool); | |
113 bool double_int_fits_in_shwi_p (double_int); | |
114 bool double_int_fits_in_uhwi_p (double_int); | |
115 HOST_WIDE_INT double_int_to_shwi (double_int); | |
116 unsigned HOST_WIDE_INT double_int_to_uhwi (double_int); | |
117 double_int double_int_div (double_int, double_int, bool, unsigned); | |
118 double_int double_int_sdiv (double_int, double_int, unsigned); | |
119 double_int double_int_udiv (double_int, double_int, unsigned); | |
120 double_int double_int_mod (double_int, double_int, bool, unsigned); | |
121 double_int double_int_smod (double_int, double_int, unsigned); | |
122 double_int double_int_umod (double_int, double_int, unsigned); | |
123 double_int double_int_divmod (double_int, double_int, bool, unsigned, double_int *); | |
124 double_int double_int_sdivmod (double_int, double_int, unsigned, double_int *); | |
125 double_int double_int_udivmod (double_int, double_int, unsigned, double_int *); | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
126 double_int double_int_setbit (double_int, unsigned); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
127 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
128 /* Logical operations. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
129 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
130 /* Returns ~A. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
131 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
132 static inline double_int |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
133 double_int_not (double_int a) |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
134 { |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
135 a.low = ~a.low; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
136 a.high = ~ a.high; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
137 return a; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
138 } |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
139 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
140 /* Returns A | B. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
141 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
142 static inline double_int |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
143 double_int_ior (double_int a, double_int b) |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
144 { |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
145 a.low |= b.low; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
146 a.high |= b.high; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
147 return a; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
148 } |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
149 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
150 /* Shift operations. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
151 double_int double_int_lshift (double_int, HOST_WIDE_INT, unsigned int, bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
152 double_int double_int_rshift (double_int, HOST_WIDE_INT, unsigned int, bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
153 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
154 /* Returns true if CST is negative. Of course, CST is considered to |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
155 be signed. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
156 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
157 static inline bool |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
158 double_int_negative_p (double_int cst) |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
159 { |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
160 return cst.high < 0; |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
161 } |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
162 |
0 | 163 int double_int_cmp (double_int, double_int, bool); |
164 int double_int_scmp (double_int, double_int); | |
165 int double_int_ucmp (double_int, double_int); | |
166 void dump_double_int (FILE *, double_int, bool); | |
167 | |
168 /* Zero and sign extension of numbers in smaller precisions. */ | |
169 | |
170 double_int double_int_ext (double_int, unsigned, bool); | |
171 double_int double_int_sext (double_int, unsigned); | |
172 double_int double_int_zext (double_int, unsigned); | |
173 double_int double_int_mask (unsigned); | |
174 | |
175 #define ALL_ONES (~((unsigned HOST_WIDE_INT) 0)) | |
176 | |
177 /* The operands of the following comparison functions must be processed | |
178 with double_int_ext, if their precision is less than | |
179 2 * HOST_BITS_PER_WIDE_INT bits. */ | |
180 | |
181 /* Returns true if CST is zero. */ | |
182 | |
183 static inline bool | |
184 double_int_zero_p (double_int cst) | |
185 { | |
186 return cst.low == 0 && cst.high == 0; | |
187 } | |
188 | |
189 /* Returns true if CST is one. */ | |
190 | |
191 static inline bool | |
192 double_int_one_p (double_int cst) | |
193 { | |
194 return cst.low == 1 && cst.high == 0; | |
195 } | |
196 | |
197 /* Returns true if CST is minus one. */ | |
198 | |
199 static inline bool | |
200 double_int_minus_one_p (double_int cst) | |
201 { | |
202 return (cst.low == ALL_ONES && cst.high == -1); | |
203 } | |
204 | |
205 /* Returns true if CST1 == CST2. */ | |
206 | |
207 static inline bool | |
208 double_int_equal_p (double_int cst1, double_int cst2) | |
209 { | |
210 return cst1.low == cst2.low && cst1.high == cst2.high; | |
211 } | |
212 | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
213 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
214 /* Legacy interface with decomposed high/low parts. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
215 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
216 extern tree force_fit_type_double (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
217 int, bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
218 extern int fit_double_type (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
219 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
220 const_tree); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
221 extern int add_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
222 unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
223 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
224 bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
225 #define add_double(l1,h1,l2,h2,lv,hv) \ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
226 add_double_with_sign (l1, h1, l2, h2, lv, hv, false) |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
227 extern int neg_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
228 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
229 extern int mul_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
230 unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
231 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
232 bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
233 #define mul_double(l1,h1,l2,h2,lv,hv) \ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
234 mul_double_with_sign (l1, h1, l2, h2, lv, hv, false) |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
235 extern void lshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
236 HOST_WIDE_INT, unsigned int, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
237 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
238 extern void rshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
239 HOST_WIDE_INT, unsigned int, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
240 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, bool); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
241 extern void lrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
242 HOST_WIDE_INT, unsigned int, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
243 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
244 extern void rrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
245 HOST_WIDE_INT, unsigned int, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
246 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
247 extern int div_and_round_double (unsigned, int, unsigned HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
248 HOST_WIDE_INT, unsigned HOST_WIDE_INT, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
249 HOST_WIDE_INT, unsigned HOST_WIDE_INT *, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
250 HOST_WIDE_INT *, unsigned HOST_WIDE_INT *, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
251 HOST_WIDE_INT *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
252 |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
253 |
0 | 254 #ifndef GENERATOR_FILE |
255 /* Conversion to and from GMP integer representations. */ | |
256 | |
257 void mpz_set_double_int (mpz_t, double_int, bool); | |
258 double_int mpz_get_double_int (const_tree, mpz_t, bool); | |
259 #endif | |
260 | |
261 #endif /* DOUBLE_INT_H */ |