]>
Commit | Line | Data |
---|---|---|
99dee823 | 1 | /* Copyright (C) 2007-2021 Free Software Foundation, Inc. |
200359e8 L |
2 | |
3 | This file is part of GCC. | |
4 | ||
5 | GCC is free software; you can redistribute it and/or modify it under | |
6 | the terms of the GNU General Public License as published by the Free | |
748086b7 | 7 | Software Foundation; either version 3, or (at your option) any later |
200359e8 L |
8 | version. |
9 | ||
200359e8 L |
10 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
11 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 | for more details. | |
14 | ||
748086b7 JJ |
15 | Under Section 7 of GPL version 3, you are granted additional |
16 | permissions described in the GCC Runtime Library Exception, version | |
17 | 3.1, as published by the Free Software Foundation. | |
18 | ||
19 | You should have received a copy of the GNU General Public License and | |
20 | a copy of the GCC Runtime Library Exception along with this program; | |
21 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
22 | <http://www.gnu.org/licenses/>. */ | |
200359e8 L |
23 | |
24 | #ifndef _BID_CONF_H | |
25 | #define _BID_CONF_H | |
26 | ||
b2a00c89 L |
27 | // Name Changes |
28 | ||
29 | #define _IDEC_glbflags __bid_IDEC_glbflags | |
30 | #define _IDEC_glbround __bid_IDEC_glbround | |
31 | #define _IDEC_glbexcepthandling __bid_IDEC_glbexcepthandling | |
32 | #define _IDEC_glbexceptionmasks __bid_IDEC_glbexceptionmasks | |
33 | #define bid64_add __bid64_add | |
34 | #define bid64_sub __bid64_sub | |
35 | #define bid64_mul __bid64_mul | |
36 | #define bid64_div __bid64_div | |
37 | #define bid64dq_div __bid64dq_div | |
38 | #define bid64qd_div __bid64qd_div | |
39 | #define bid64qq_div __bid64qq_div | |
40 | #define bid64q_sqrt __bid64q_sqrt | |
41 | #define bid64_sqrt __bid64_sqrt | |
42 | #define bid64_rem __bid64_rem | |
43 | #define bid64_fma __bid64_fma | |
44 | #define bid64_scalb __bid64_scalb | |
45 | #define round128_19_38 __bid_round128_19_38 | |
46 | #define round192_39_57 __bid_round192_39_57 | |
47 | #define round256_58_76 __bid_round256_58_76 | |
48 | #define round64_2_18 __bid_round64_2_18 | |
49 | #define bid64_nextafter __bid64_nextafter | |
50 | #define bid64_nextdown __bid64_nextdown | |
51 | #define bid64_nextup __bid64_nextup | |
52 | #define b2d __bid_b2d | |
53 | #define b2d2 __bid_b2d2 | |
54 | #define b2d3 __bid_b2d3 | |
55 | #define b2d4 __bid_b2d4 | |
56 | #define b2d5 __bid_b2d5 | |
57 | #define bid128_canonize __bid128_canonize | |
58 | #define bid32_canonize __bid32_canonize | |
59 | #define bid64_canonize __bid64_canonize | |
60 | #define bid_to_bid128 __bid_to_bid128 | |
61 | #define bid_to_bid32 __bid_to_bid32 | |
62 | #define bid_to_bid64 __bid_to_bid64 | |
63 | #define bid_to_dpd128 __bid_to_dpd128 | |
64 | #define bid_to_dpd32 __bid_to_dpd32 | |
65 | #define bid_to_dpd64 __bid_to_dpd64 | |
66 | #define d2b __bid_d2b | |
67 | #define d2b2 __bid_d2b2 | |
68 | #define d2b3 __bid_d2b3 | |
69 | #define d2b4 __bid_d2b4 | |
70 | #define d2b5 __bid_d2b5 | |
71 | #define d2b6 __bid_d2b6 | |
72 | #define dpd_to_bid128 __bid_dpd_to_bid128 | |
73 | #define dpd_to_bid32 __bid_dpd_to_bid32 | |
74 | #define dpd_to_bid64 __bid_dpd_to_bid64 | |
75 | #define bid128_nextafter __bid128_nextafter | |
76 | #define bid128_nextdown __bid128_nextdown | |
77 | #define bid128_nextup __bid128_nextup | |
78 | #define bid64_logb __bid64_logb | |
79 | #define bid64_quantize __bid64_quantize | |
80 | #define estimate_bin_expon __bid_estimate_bin_expon | |
81 | #define estimate_decimal_digits __bid_estimate_decimal_digits | |
82 | #define power10_index_binexp __bid_power10_index_binexp | |
83 | #define power10_index_binexp_128 __bid_power10_index_binexp_128 | |
84 | #define power10_table_128 __bid_power10_table_128 | |
85 | #define reciprocals10_128 __bid_reciprocals10_128 | |
86 | #define reciprocals10_64 __bid_reciprocals10_64 | |
87 | #define recip_scale __bid_recip_scale | |
88 | #define round_const_table __bid_round_const_table | |
89 | #define round_const_table_128 __bid_round_const_table_128 | |
90 | #define short_recip_scale __bid_short_recip_scale | |
91 | #define bid64_from_string __bid64_from_string | |
92 | #define bid64_to_string __bid64_to_string | |
93 | #define Inv_Tento9 __bid_Inv_Tento9 | |
94 | #define midi_tbl __bid_midi_tbl | |
95 | #define Tento3 __bid_Tento3 | |
96 | #define Tento6 __bid_Tento6 | |
97 | #define Tento9 __bid_Tento9 | |
98 | #define Twoto30_m_10to9 __bid_Twoto30_m_10to9 | |
99 | #define Twoto60 __bid_Twoto60 | |
100 | #define Twoto60_m_10to18 __bid_Twoto60_m_10to18 | |
101 | #define convert_table __bid_convert_table | |
102 | #define factors __bid_factors | |
103 | #define packed_10000_zeros __bid_packed_10000_zeros | |
104 | #define char_table2 __bid_char_table2 | |
105 | #define char_table3 __bid_char_table3 | |
106 | #define Ex128m128 __bid_Ex128m128 | |
107 | #define Ex192m192 __bid_Ex192m192 | |
108 | #define Ex256m256 __bid_Ex256m256 | |
109 | #define Ex64m64 __bid_Ex64m64 | |
110 | #define half128 __bid_half128 | |
111 | #define half192 __bid_half192 | |
112 | #define half256 __bid_half256 | |
113 | #define half64 __bid_half64 | |
114 | #define Kx128 __bid_Kx128 | |
115 | #define Kx192 __bid_Kx192 | |
116 | #define Kx256 __bid_Kx256 | |
117 | #define Kx64 __bid_Kx64 | |
118 | #define mask128 __bid_mask128 | |
119 | #define mask192 __bid_mask192 | |
120 | #define mask256 __bid_mask256 | |
121 | #define mask64 __bid_mask64 | |
122 | #define maskhigh128 __bid_maskhigh128 | |
123 | #define maskhigh128M __bid_maskhigh128M | |
124 | #define maskhigh192M __bid_maskhigh192M | |
125 | #define maskhigh256M __bid_maskhigh256M | |
126 | #define midpoint128 __bid_midpoint128 | |
127 | #define midpoint192 __bid_midpoint192 | |
128 | #define midpoint256 __bid_midpoint256 | |
129 | #define midpoint64 __bid_midpoint64 | |
130 | #define nr_digits __bid_nr_digits | |
131 | #define onehalf128 __bid_onehalf128 | |
132 | #define onehalf128M __bid_onehalf128M | |
133 | #define onehalf192M __bid_onehalf192M | |
134 | #define onehalf256M __bid_onehalf256M | |
135 | #define shiftright128 __bid_shiftright128 | |
136 | #define shiftright128M __bid_shiftright128M | |
137 | #define shiftright192M __bid_shiftright192M | |
138 | #define shiftright256M __bid_shiftright256M | |
139 | #define shift_ten2m3k128 __bid_shift_ten2m3k128 | |
140 | #define shift_ten2m3k64 __bid_shift_ten2m3k64 | |
141 | #define ten2k128 __bid_ten2k128 | |
142 | #define ten2k256 __bid_ten2k256 | |
143 | #define ten2k64 __bid_ten2k64 | |
144 | #define ten2m3k128 __bid_ten2m3k128 | |
145 | #define ten2m3k64 __bid_ten2m3k64 | |
146 | #define ten2mk128 __bid_ten2mk128 | |
147 | #define ten2mk128M __bid_ten2mk128M | |
148 | #define ten2mk128trunc __bid_ten2mk128trunc | |
149 | #define ten2mk128truncM __bid_ten2mk128truncM | |
150 | #define ten2mk192M __bid_ten2mk192M | |
151 | #define ten2mk192truncM __bid_ten2mk192truncM | |
152 | #define ten2mk256M __bid_ten2mk256M | |
153 | #define ten2mk256truncM __bid_ten2mk256truncM | |
154 | #define ten2mk64 __bid_ten2mk64 | |
155 | #define ten2mxtrunc128 __bid_ten2mxtrunc128 | |
156 | #define ten2mxtrunc192 __bid_ten2mxtrunc192 | |
157 | #define ten2mxtrunc256 __bid_ten2mxtrunc256 | |
158 | #define ten2mxtrunc64 __bid_ten2mxtrunc64 | |
159 | #define bid128_add __bid128_add | |
160 | #define bid128dd_add __bid128dd_add | |
161 | #define bid128dd_sub __bid128dd_sub | |
162 | #define bid128dq_add __bid128dq_add | |
163 | #define bid128dq_sub __bid128dq_sub | |
164 | #define bid128qd_add __bid128qd_add | |
165 | #define bid128qd_sub __bid128qd_sub | |
166 | #define bid128_sub __bid128_sub | |
167 | #define bid64dq_add __bid64dq_add | |
168 | #define bid64dq_sub __bid64dq_sub | |
169 | #define bid64qd_add __bid64qd_add | |
170 | #define bid64qd_sub __bid64qd_sub | |
171 | #define bid64qq_add __bid64qq_add | |
172 | #define bid64qq_sub __bid64qq_sub | |
173 | #define bid128dd_mul __bid128dd_mul | |
174 | #define bid128dq_mul __bid128dq_mul | |
175 | #define bid128_mul __bid128_mul | |
176 | #define bid128qd_mul __bid128qd_mul | |
177 | #define bid64dq_mul __bid64dq_mul | |
178 | #define bid64qd_mul __bid64qd_mul | |
179 | #define bid64qq_mul __bid64qq_mul | |
180 | #define bid128dd_div __bid128dd_div | |
181 | #define bid128_div __bid128_div | |
182 | #define bid128dq_div __bid128dq_div | |
183 | #define bid128qd_div __bid128qd_div | |
184 | #define bid128d_sqrt __bid128d_sqrt | |
185 | #define bid128_sqrt __bid128_sqrt | |
186 | #define bid128ddd_fma __bid128ddd_fma | |
187 | #define bid128ddq_fma __bid128ddq_fma | |
188 | #define bid128dqd_fma __bid128dqd_fma | |
189 | #define bid128dqq_fma __bid128dqq_fma | |
190 | #define bid128_fma __bid128_fma | |
191 | #define bid128qdd_fma __bid128qdd_fma | |
192 | #define bid128qdq_fma __bid128qdq_fma | |
193 | #define bid128qqd_fma __bid128qqd_fma | |
194 | #define bid64ddq_fma __bid64ddq_fma | |
195 | #define bid64dqd_fma __bid64dqd_fma | |
196 | #define bid64dqq_fma __bid64dqq_fma | |
197 | #define bid64qdd_fma __bid64qdd_fma | |
198 | #define bid64qdq_fma __bid64qdq_fma | |
199 | #define bid64qqd_fma __bid64qqd_fma | |
200 | #define bid64qqq_fma __bid64qqq_fma | |
201 | #define bid128_round_integral_exact __bid128_round_integral_exact | |
202 | #define bid128_round_integral_nearest_away __bid128_round_integral_nearest_away | |
203 | #define bid128_round_integral_nearest_even __bid128_round_integral_nearest_even | |
204 | #define bid128_round_integral_negative __bid128_round_integral_negative | |
205 | #define bid128_round_integral_positive __bid128_round_integral_positive | |
206 | #define bid128_round_integral_zero __bid128_round_integral_zero | |
207 | #define bid64_round_integral_exact __bid64_round_integral_exact | |
208 | #define bid64_round_integral_nearest_away __bid64_round_integral_nearest_away | |
209 | #define bid64_round_integral_nearest_even __bid64_round_integral_nearest_even | |
210 | #define bid64_round_integral_negative __bid64_round_integral_negative | |
211 | #define bid64_round_integral_positive __bid64_round_integral_positive | |
212 | #define bid64_round_integral_zero __bid64_round_integral_zero | |
213 | #define bid128_quantize __bid128_quantize | |
214 | #define bid128_scalb __bid128_scalb | |
215 | #define bid64_maxnum __bid64_maxnum | |
216 | #define bid64_maxnum_mag __bid64_maxnum_mag | |
217 | #define bid64_minnum __bid64_minnum | |
218 | #define bid64_minnum_mag __bid64_minnum_mag | |
219 | #define bid128_maxnum __bid128_maxnum | |
220 | #define bid128_maxnum_mag __bid128_maxnum_mag | |
221 | #define bid128_minnum __bid128_minnum | |
222 | #define bid128_minnum_mag __bid128_minnum_mag | |
223 | #define bid128_rem __bid128_rem | |
224 | #define bid128_logb __bid128_logb | |
225 | #define getDecimalRoundingDirection __bid_getDecimalRoundingDirection | |
226 | #define is754 __bid_is754 | |
227 | #define is754R __bid_is754R | |
228 | #define signalException __bid_signalException | |
229 | #define lowerFlags __bid_lowerFlags | |
230 | #define restoreFlags __bid_restoreFlags | |
231 | #define saveFlags __bid_saveFlags | |
232 | #define setDecimalRoundingDirection __bid_setDecimalRoundingDirection | |
233 | #define testFlags __bid_testFlags | |
234 | #define testSavedFlags __bid_testSavedFlags | |
235 | #define bid32_to_bid64 __bid32_to_bid64 | |
236 | #define bid64_to_bid32 __bid64_to_bid32 | |
237 | #define bid128_to_string __bid128_to_string | |
238 | #define mod10_18_tbl __bid_mod10_18_tbl | |
239 | #define bid128_to_bid32 __bid128_to_bid32 | |
240 | #define bid32_to_bid128 __bid32_to_bid128 | |
241 | #define bid128_to_bid64 __bid128_to_bid64 | |
242 | #define bid64_to_bid128 __bid64_to_bid128 | |
243 | #define bid128_from_string __bid128_from_string | |
244 | #define bid128_from_int32 __bid128_from_int32 | |
245 | #define bid128_from_int64 __bid128_from_int64 | |
246 | #define bid128_from_uint32 __bid128_from_uint32 | |
247 | #define bid128_from_uint64 __bid128_from_uint64 | |
248 | #define bid64_from_int32 __bid64_from_int32 | |
249 | #define bid64_from_int64 __bid64_from_int64 | |
250 | #define bid64_from_uint32 __bid64_from_uint32 | |
251 | #define bid64_from_uint64 __bid64_from_uint64 | |
252 | #define bid64_abs __bid64_abs | |
253 | #define bid64_class __bid64_class | |
254 | #define bid64_copy __bid64_copy | |
255 | #define bid64_copySign __bid64_copySign | |
256 | #define bid64_isCanonical __bid64_isCanonical | |
257 | #define bid64_isFinite __bid64_isFinite | |
258 | #define bid64_isInf __bid64_isInf | |
259 | #define bid64_isNaN __bid64_isNaN | |
260 | #define bid64_isNormal __bid64_isNormal | |
261 | #define bid64_isSignaling __bid64_isSignaling | |
262 | #define bid64_isSigned __bid64_isSigned | |
263 | #define bid64_isSubnormal __bid64_isSubnormal | |
264 | #define bid64_isZero __bid64_isZero | |
265 | #define bid64_negate __bid64_negate | |
266 | #define bid64_radix __bid64_radix | |
267 | #define bid64_sameQuantum __bid64_sameQuantum | |
268 | #define bid64_totalOrder __bid64_totalOrder | |
269 | #define bid64_totalOrderMag __bid64_totalOrderMag | |
270 | #define bid128_abs __bid128_abs | |
271 | #define bid128_class __bid128_class | |
272 | #define bid128_copy __bid128_copy | |
273 | #define bid128_copySign __bid128_copySign | |
274 | #define bid128_isCanonical __bid128_isCanonical | |
275 | #define bid128_isFinite __bid128_isFinite | |
276 | #define bid128_isInf __bid128_isInf | |
277 | #define bid128_isNaN __bid128_isNaN | |
278 | #define bid128_isNormal __bid128_isNormal | |
279 | #define bid128_isSignaling __bid128_isSignaling | |
280 | #define bid128_isSigned __bid128_isSigned | |
281 | #define bid128_isSubnormal __bid128_isSubnormal | |
282 | #define bid128_isZero __bid128_isZero | |
283 | #define bid128_negate __bid128_negate | |
284 | #define bid128_radix __bid128_radix | |
285 | #define bid128_sameQuantum __bid128_sameQuantum | |
286 | #define bid128_totalOrder __bid128_totalOrder | |
287 | #define bid128_totalOrderMag __bid128_totalOrderMag | |
288 | #define bid64_quiet_equal __bid64_quiet_equal | |
289 | #define bid64_quiet_greater __bid64_quiet_greater | |
290 | #define bid64_quiet_greater_equal __bid64_quiet_greater_equal | |
291 | #define bid64_quiet_greater_unordered __bid64_quiet_greater_unordered | |
292 | #define bid64_quiet_less __bid64_quiet_less | |
293 | #define bid64_quiet_less_equal __bid64_quiet_less_equal | |
294 | #define bid64_quiet_less_unordered __bid64_quiet_less_unordered | |
295 | #define bid64_quiet_not_equal __bid64_quiet_not_equal | |
296 | #define bid64_quiet_not_greater __bid64_quiet_not_greater | |
297 | #define bid64_quiet_not_less __bid64_quiet_not_less | |
298 | #define bid64_quiet_ordered __bid64_quiet_ordered | |
299 | #define bid64_quiet_unordered __bid64_quiet_unordered | |
300 | #define bid64_signaling_greater __bid64_signaling_greater | |
301 | #define bid64_signaling_greater_equal __bid64_signaling_greater_equal | |
302 | #define bid64_signaling_greater_unordered __bid64_signaling_greater_unordered | |
303 | #define bid64_signaling_less __bid64_signaling_less | |
304 | #define bid64_signaling_less_equal __bid64_signaling_less_equal | |
305 | #define bid64_signaling_less_unordered __bid64_signaling_less_unordered | |
306 | #define bid64_signaling_not_greater __bid64_signaling_not_greater | |
307 | #define bid64_signaling_not_less __bid64_signaling_not_less | |
308 | #define bid128_quiet_equal __bid128_quiet_equal | |
309 | #define bid128_quiet_greater __bid128_quiet_greater | |
310 | #define bid128_quiet_greater_equal __bid128_quiet_greater_equal | |
311 | #define bid128_quiet_greater_unordered __bid128_quiet_greater_unordered | |
312 | #define bid128_quiet_less __bid128_quiet_less | |
313 | #define bid128_quiet_less_equal __bid128_quiet_less_equal | |
314 | #define bid128_quiet_less_unordered __bid128_quiet_less_unordered | |
315 | #define bid128_quiet_not_equal __bid128_quiet_not_equal | |
316 | #define bid128_quiet_not_greater __bid128_quiet_not_greater | |
317 | #define bid128_quiet_not_less __bid128_quiet_not_less | |
318 | #define bid128_quiet_ordered __bid128_quiet_ordered | |
319 | #define bid128_quiet_unordered __bid128_quiet_unordered | |
320 | #define bid128_signaling_greater __bid128_signaling_greater | |
321 | #define bid128_signaling_greater_equal __bid128_signaling_greater_equal | |
322 | #define bid128_signaling_greater_unordered __bid128_signaling_greater_unordered | |
323 | #define bid128_signaling_less __bid128_signaling_less | |
324 | #define bid128_signaling_less_equal __bid128_signaling_less_equal | |
325 | #define bid128_signaling_less_unordered __bid128_signaling_less_unordered | |
326 | #define bid128_signaling_not_greater __bid128_signaling_not_greater | |
327 | #define bid128_signaling_not_less __bid128_signaling_not_less | |
328 | #define bid64_to_int32_ceil __bid64_to_int32_ceil | |
329 | #define bid64_to_int32_floor __bid64_to_int32_floor | |
330 | #define bid64_to_int32_int __bid64_to_int32_int | |
331 | #define bid64_to_int32_rnint __bid64_to_int32_rnint | |
332 | #define bid64_to_int32_rninta __bid64_to_int32_rninta | |
333 | #define bid64_to_int32_xceil __bid64_to_int32_xceil | |
334 | #define bid64_to_int32_xfloor __bid64_to_int32_xfloor | |
335 | #define bid64_to_int32_xint __bid64_to_int32_xint | |
336 | #define bid64_to_int32_xrnint __bid64_to_int32_xrnint | |
337 | #define bid64_to_int32_xrninta __bid64_to_int32_xrninta | |
338 | #define bid64_to_uint32_ceil __bid64_to_uint32_ceil | |
339 | #define bid64_to_uint32_floor __bid64_to_uint32_floor | |
340 | #define bid64_to_uint32_int __bid64_to_uint32_int | |
341 | #define bid64_to_uint32_rnint __bid64_to_uint32_rnint | |
342 | #define bid64_to_uint32_rninta __bid64_to_uint32_rninta | |
343 | #define bid64_to_uint32_xceil __bid64_to_uint32_xceil | |
344 | #define bid64_to_uint32_xfloor __bid64_to_uint32_xfloor | |
345 | #define bid64_to_uint32_xint __bid64_to_uint32_xint | |
346 | #define bid64_to_uint32_xrnint __bid64_to_uint32_xrnint | |
347 | #define bid64_to_uint32_xrninta __bid64_to_uint32_xrninta | |
348 | #define bid64_to_int64_ceil __bid64_to_int64_ceil | |
349 | #define bid64_to_int64_floor __bid64_to_int64_floor | |
350 | #define bid64_to_int64_int __bid64_to_int64_int | |
351 | #define bid64_to_int64_rnint __bid64_to_int64_rnint | |
352 | #define bid64_to_int64_rninta __bid64_to_int64_rninta | |
353 | #define bid64_to_int64_xceil __bid64_to_int64_xceil | |
354 | #define bid64_to_int64_xfloor __bid64_to_int64_xfloor | |
355 | #define bid64_to_int64_xint __bid64_to_int64_xint | |
356 | #define bid64_to_int64_xrnint __bid64_to_int64_xrnint | |
357 | #define bid64_to_int64_xrninta __bid64_to_int64_xrninta | |
358 | #define bid64_to_uint64_ceil __bid64_to_uint64_ceil | |
359 | #define bid64_to_uint64_floor __bid64_to_uint64_floor | |
360 | #define bid64_to_uint64_int __bid64_to_uint64_int | |
361 | #define bid64_to_uint64_rnint __bid64_to_uint64_rnint | |
362 | #define bid64_to_uint64_rninta __bid64_to_uint64_rninta | |
363 | #define bid64_to_uint64_xceil __bid64_to_uint64_xceil | |
364 | #define bid64_to_uint64_xfloor __bid64_to_uint64_xfloor | |
365 | #define bid64_to_uint64_xint __bid64_to_uint64_xint | |
366 | #define bid64_to_uint64_xrnint __bid64_to_uint64_xrnint | |
367 | #define bid64_to_uint64_xrninta __bid64_to_uint64_xrninta | |
368 | #define bid128_to_int32_ceil __bid128_to_int32_ceil | |
369 | #define bid128_to_int32_floor __bid128_to_int32_floor | |
370 | #define bid128_to_int32_int __bid128_to_int32_int | |
371 | #define bid128_to_int32_rnint __bid128_to_int32_rnint | |
372 | #define bid128_to_int32_rninta __bid128_to_int32_rninta | |
373 | #define bid128_to_int32_xceil __bid128_to_int32_xceil | |
374 | #define bid128_to_int32_xfloor __bid128_to_int32_xfloor | |
375 | #define bid128_to_int32_xint __bid128_to_int32_xint | |
376 | #define bid128_to_int32_xrnint __bid128_to_int32_xrnint | |
377 | #define bid128_to_int32_xrninta __bid128_to_int32_xrninta | |
378 | #define bid128_to_uint32_ceil __bid128_to_uint32_ceil | |
379 | #define bid128_to_uint32_floor __bid128_to_uint32_floor | |
380 | #define bid128_to_uint32_int __bid128_to_uint32_int | |
381 | #define bid128_to_uint32_rnint __bid128_to_uint32_rnint | |
382 | #define bid128_to_uint32_rninta __bid128_to_uint32_rninta | |
383 | #define bid128_to_uint32_xceil __bid128_to_uint32_xceil | |
384 | #define bid128_to_uint32_xfloor __bid128_to_uint32_xfloor | |
385 | #define bid128_to_uint32_xint __bid128_to_uint32_xint | |
386 | #define bid128_to_uint32_xrnint __bid128_to_uint32_xrnint | |
387 | #define bid128_to_uint32_xrninta __bid128_to_uint32_xrninta | |
388 | #define bid128_to_int64_ceil __bid128_to_int64_ceil | |
389 | #define bid128_to_int64_floor __bid128_to_int64_floor | |
390 | #define bid128_to_int64_int __bid128_to_int64_int | |
391 | #define bid128_to_int64_rnint __bid128_to_int64_rnint | |
392 | #define bid128_to_int64_rninta __bid128_to_int64_rninta | |
393 | #define bid128_to_int64_xceil __bid128_to_int64_xceil | |
394 | #define bid128_to_int64_xfloor __bid128_to_int64_xfloor | |
395 | #define bid128_to_int64_xint __bid128_to_int64_xint | |
396 | #define bid128_to_int64_xrnint __bid128_to_int64_xrnint | |
397 | #define bid128_to_int64_xrninta __bid128_to_int64_xrninta | |
398 | #define bid128_to_uint64_ceil __bid128_to_uint64_ceil | |
399 | #define bid128_to_uint64_floor __bid128_to_uint64_floor | |
400 | #define bid128_to_uint64_int __bid128_to_uint64_int | |
401 | #define bid128_to_uint64_rnint __bid128_to_uint64_rnint | |
402 | #define bid128_to_uint64_rninta __bid128_to_uint64_rninta | |
403 | #define bid128_to_uint64_xceil __bid128_to_uint64_xceil | |
404 | #define bid128_to_uint64_xfloor __bid128_to_uint64_xfloor | |
405 | #define bid128_to_uint64_xint __bid128_to_uint64_xint | |
406 | #define bid128_to_uint64_xrnint __bid128_to_uint64_xrnint | |
407 | #define bid128_to_uint64_xrninta __bid128_to_uint64_xrninta | |
408 | #define bid128_to_binary128 __bid128_to_binary128 | |
409 | #define bid128_to_binary32 __bid128_to_binary32 | |
410 | #define bid128_to_binary64 __bid128_to_binary64 | |
411 | #define bid128_to_binary80 __bid128_to_binary80 | |
412 | #define bid32_to_binary128 __bid32_to_binary128 | |
413 | #define bid32_to_binary32 __bid32_to_binary32 | |
414 | #define bid32_to_binary64 __bid32_to_binary64 | |
415 | #define bid32_to_binary80 __bid32_to_binary80 | |
416 | #define bid64_to_binary128 __bid64_to_binary128 | |
417 | #define bid64_to_binary32 __bid64_to_binary32 | |
418 | #define bid64_to_binary64 __bid64_to_binary64 | |
419 | #define bid64_to_binary80 __bid64_to_binary80 | |
420 | #define binary128_to_bid128 __binary128_to_bid128 | |
421 | #define binary128_to_bid32 __binary128_to_bid32 | |
422 | #define binary128_to_bid64 __binary128_to_bid64 | |
423 | #define binary32_to_bid128 __binary32_to_bid128 | |
424 | #define binary32_to_bid32 __binary32_to_bid32 | |
425 | #define binary32_to_bid64 __binary32_to_bid64 | |
426 | #define binary64_to_bid128 __binary64_to_bid128 | |
427 | #define binary64_to_bid32 __binary64_to_bid32 | |
428 | #define binary64_to_bid64 __binary64_to_bid64 | |
429 | #define binary80_to_bid128 __binary80_to_bid128 | |
430 | #define binary80_to_bid32 __binary80_to_bid32 | |
431 | #define binary80_to_bid64 __binary80_to_bid64 | |
432 | #define bid64_to_uint16_ceil __bid64_to_uint16_ceil | |
433 | #define bid64_to_uint16_floor __bid64_to_uint16_floor | |
434 | #define bid64_to_uint16_int __bid64_to_uint16_int | |
435 | #define bid64_to_uint16_rnint __bid64_to_uint16_rnint | |
436 | #define bid64_to_uint16_rninta __bid64_to_uint16_rninta | |
437 | #define bid64_to_uint16_xceil __bid64_to_uint16_xceil | |
438 | #define bid64_to_uint16_xfloor __bid64_to_uint16_xfloor | |
439 | #define bid64_to_uint16_xint __bid64_to_uint16_xint | |
440 | #define bid64_to_uint16_xrnint __bid64_to_uint16_xrnint | |
441 | #define bid64_to_uint16_xrninta __bid64_to_uint16_xrninta | |
442 | #define bid64_to_int16_ceil __bid64_to_int16_ceil | |
443 | #define bid64_to_int16_floor __bid64_to_int16_floor | |
444 | #define bid64_to_int16_int __bid64_to_int16_int | |
445 | #define bid64_to_int16_rnint __bid64_to_int16_rnint | |
446 | #define bid64_to_int16_rninta __bid64_to_int16_rninta | |
447 | #define bid64_to_int16_xceil __bid64_to_int16_xceil | |
448 | #define bid64_to_int16_xfloor __bid64_to_int16_xfloor | |
449 | #define bid64_to_int16_xint __bid64_to_int16_xint | |
450 | #define bid64_to_int16_xrnint __bid64_to_int16_xrnint | |
451 | #define bid64_to_int16_xrninta __bid64_to_int16_xrninta | |
452 | #define bid128_to_uint16_ceil __bid128_to_uint16_ceil | |
453 | #define bid128_to_uint16_floor __bid128_to_uint16_floor | |
454 | #define bid128_to_uint16_int __bid128_to_uint16_int | |
455 | #define bid128_to_uint16_rnint __bid128_to_uint16_rnint | |
456 | #define bid128_to_uint16_rninta __bid128_to_uint16_rninta | |
457 | #define bid128_to_uint16_xceil __bid128_to_uint16_xceil | |
458 | #define bid128_to_uint16_xfloor __bid128_to_uint16_xfloor | |
459 | #define bid128_to_uint16_xint __bid128_to_uint16_xint | |
460 | #define bid128_to_uint16_xrnint __bid128_to_uint16_xrnint | |
461 | #define bid128_to_uint16_xrninta __bid128_to_uint16_xrninta | |
462 | #define bid128_to_int16_ceil __bid128_to_int16_ceil | |
463 | #define bid128_to_int16_floor __bid128_to_int16_floor | |
464 | #define bid128_to_int16_int __bid128_to_int16_int | |
465 | #define bid128_to_int16_rnint __bid128_to_int16_rnint | |
466 | #define bid128_to_int16_rninta __bid128_to_int16_rninta | |
467 | #define bid128_to_int16_xceil __bid128_to_int16_xceil | |
468 | #define bid128_to_int16_xfloor __bid128_to_int16_xfloor | |
469 | #define bid128_to_int16_xint __bid128_to_int16_xint | |
470 | #define bid128_to_int16_xrnint __bid128_to_int16_xrnint | |
471 | #define bid128_to_int16_xrninta __bid128_to_int16_xrninta | |
472 | #define bid64_to_uint8_ceil __bid64_to_uint8_ceil | |
473 | #define bid64_to_uint8_floor __bid64_to_uint8_floor | |
474 | #define bid64_to_uint8_int __bid64_to_uint8_int | |
475 | #define bid64_to_uint8_rnint __bid64_to_uint8_rnint | |
476 | #define bid64_to_uint8_rninta __bid64_to_uint8_rninta | |
477 | #define bid64_to_uint8_xceil __bid64_to_uint8_xceil | |
478 | #define bid64_to_uint8_xfloor __bid64_to_uint8_xfloor | |
479 | #define bid64_to_uint8_xint __bid64_to_uint8_xint | |
480 | #define bid64_to_uint8_xrnint __bid64_to_uint8_xrnint | |
481 | #define bid64_to_uint8_xrninta __bid64_to_uint8_xrninta | |
482 | #define bid64_to_int8_ceil __bid64_to_int8_ceil | |
483 | #define bid64_to_int8_floor __bid64_to_int8_floor | |
484 | #define bid64_to_int8_int __bid64_to_int8_int | |
485 | #define bid64_to_int8_rnint __bid64_to_int8_rnint | |
486 | #define bid64_to_int8_rninta __bid64_to_int8_rninta | |
487 | #define bid64_to_int8_xceil __bid64_to_int8_xceil | |
488 | #define bid64_to_int8_xfloor __bid64_to_int8_xfloor | |
489 | #define bid64_to_int8_xint __bid64_to_int8_xint | |
490 | #define bid64_to_int8_xrnint __bid64_to_int8_xrnint | |
491 | #define bid64_to_int8_xrninta __bid64_to_int8_xrninta | |
492 | #define bid128_to_uint8_ceil __bid128_to_uint8_ceil | |
493 | #define bid128_to_uint8_floor __bid128_to_uint8_floor | |
494 | #define bid128_to_uint8_int __bid128_to_uint8_int | |
495 | #define bid128_to_uint8_rnint __bid128_to_uint8_rnint | |
496 | #define bid128_to_uint8_rninta __bid128_to_uint8_rninta | |
497 | #define bid128_to_uint8_xceil __bid128_to_uint8_xceil | |
498 | #define bid128_to_uint8_xfloor __bid128_to_uint8_xfloor | |
499 | #define bid128_to_uint8_xint __bid128_to_uint8_xint | |
500 | #define bid128_to_uint8_xrnint __bid128_to_uint8_xrnint | |
501 | #define bid128_to_uint8_xrninta __bid128_to_uint8_xrninta | |
502 | #define bid128_to_int8_ceil __bid128_to_int8_ceil | |
503 | #define bid128_to_int8_floor __bid128_to_int8_floor | |
504 | #define bid128_to_int8_int __bid128_to_int8_int | |
505 | #define bid128_to_int8_rnint __bid128_to_int8_rnint | |
506 | #define bid128_to_int8_rninta __bid128_to_int8_rninta | |
507 | #define bid128_to_int8_xceil __bid128_to_int8_xceil | |
508 | #define bid128_to_int8_xfloor __bid128_to_int8_xfloor | |
509 | #define bid128_to_int8_xint __bid128_to_int8_xint | |
510 | #define bid128_to_int8_xrnint __bid128_to_int8_xrnint | |
511 | #define bid128_to_int8_xrninta __bid128_to_int8_xrninta | |
200359e8 L |
512 | |
513 | #ifdef IN_LIBGCC2 | |
514 | #if !defined ENABLE_DECIMAL_BID_FORMAT || !ENABLE_DECIMAL_BID_FORMAT | |
515 | #error BID not enabled in libbid | |
516 | #endif | |
517 | ||
518 | #ifndef BID_BIG_ENDIAN | |
a3abe41c | 519 | #define BID_BIG_ENDIAN __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ |
200359e8 L |
520 | #endif |
521 | ||
6fd2892a | 522 | #ifndef BID_THREAD |
6f461e76 | 523 | #if defined (HAVE_CC_TLS) && defined (USE_TLS) |
6fd2892a L |
524 | #define BID_THREAD __thread |
525 | #endif | |
526 | #endif | |
527 | ||
200359e8 L |
528 | #define _intptr_t_defined |
529 | #define DECIMAL_CALL_BY_REFERENCE 0 | |
530 | #define DECIMAL_GLOBAL_ROUNDING 1 | |
b2a00c89 | 531 | #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 1 |
200359e8 | 532 | #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 1 |
b2a00c89 L |
533 | #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 1 |
534 | #define BID_HAS_GCC_DECIMAL_INTRINSICS 1 | |
535 | #endif /* IN_LIBGCC2 */ | |
200359e8 L |
536 | |
537 | // Configuration Options | |
538 | ||
539 | #define SET_STATUS_FLAGS | |
540 | ||
6fd2892a L |
541 | #ifndef BID_THREAD |
542 | #define BID_THREAD | |
543 | #endif | |
544 | ||
b2a00c89 L |
545 | #ifndef BID_HAS_GCC_DECIMAL_INTRINSICS |
546 | #define BID_HAS_GCC_DECIMAL_INTRINSICS 0 | |
547 | #endif | |
548 | ||
549 | #if !defined(WINDOWS) || defined(__INTEL_COMPILER) | |
550 | // #define UNCHANGED_BINARY_STATUS_FLAGS | |
551 | #endif | |
552 | // #define HPUX_OS | |
553 | ||
200359e8 L |
554 | // If DECIMAL_CALL_BY_REFERENCE is defined then numerical arguments and results |
555 | // are passed by reference otherwise they are passed by value (except that | |
556 | // a pointer is always passed to the status flags) | |
557 | ||
558 | #ifndef DECIMAL_CALL_BY_REFERENCE | |
559 | #define DECIMAL_CALL_BY_REFERENCE 0 | |
560 | #endif | |
561 | ||
562 | // If DECIMAL_GLOBAL_ROUNDING is defined then the rounding mode is a global | |
b2a00c89 | 563 | // variable _IDEC_glbround, otherwise it is passed as a parameter when needed |
200359e8 L |
564 | |
565 | #ifndef DECIMAL_GLOBAL_ROUNDING | |
566 | #define DECIMAL_GLOBAL_ROUNDING 0 | |
567 | #endif | |
568 | ||
b2a00c89 L |
569 | #ifndef DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS |
570 | #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 0 | |
571 | #endif | |
572 | ||
200359e8 | 573 | // If DECIMAL_GLOBAL_EXCEPTION_FLAGS is defined then the exception status flags |
b2a00c89 | 574 | // are represented by a global variable _IDEC_glbflags, otherwise they are |
200359e8 L |
575 | // passed as a parameter when needed |
576 | ||
577 | #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS | |
578 | #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 0 | |
579 | #endif | |
580 | ||
b2a00c89 L |
581 | #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS |
582 | #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 0 | |
583 | #endif | |
584 | ||
200359e8 L |
585 | // If DECIMAL_ALTERNATE_EXCEPTION_HANDLING is defined then the exception masks |
586 | // are examined and exception handling information is provided to the caller | |
587 | // if alternate exception handling is necessary | |
588 | ||
589 | #ifndef DECIMAL_ALTERNATE_EXCEPTION_HANDLING | |
590 | #define DECIMAL_ALTERNATE_EXCEPTION_HANDLING 0 | |
591 | #endif | |
592 | ||
593 | typedef unsigned int _IDEC_round; | |
b2a00c89 | 594 | typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info |
200359e8 L |
595 | |
596 | #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING | |
597 | // If DECIMAL_GLOBAL_EXCEPTION_MASKS is defined then the exception mask bits | |
598 | // are represented by a global variable _IDEC_exceptionmasks, otherwise they | |
599 | // are passed as a parameter when needed; DECIMAL_GLOBAL_EXCEPTION_MASKS is | |
600 | // ignored | |
601 | // if DECIMAL_ALTERNATE_EXCEPTION_HANDLING is not defined | |
602 | // ************************************************************************** | |
603 | #define DECIMAL_GLOBAL_EXCEPTION_MASKS 0 | |
604 | // ************************************************************************** | |
605 | ||
606 | // If DECIMAL_GLOBAL_EXCEPTION_INFO is defined then the alternate exception | |
607 | // handling information is represented by a global data structure | |
608 | // _IDEC_glbexcepthandling, otherwise it is passed by reference as a | |
609 | // parameter when needed; DECIMAL_GLOBAL_EXCEPTION_INFO is ignored | |
610 | // if DECIMAL_ALTERNATE_EXCEPTION_HANDLING is not defined | |
611 | // ************************************************************************** | |
612 | #define DECIMAL_GLOBAL_EXCEPTION_INFO 0 | |
613 | // ************************************************************************** | |
614 | #endif | |
615 | ||
616 | // Notes: 1) rnd_mode from _RND_MODE_ARG is used by the caller of a function | |
617 | // from this library, and can be any name | |
618 | // 2) rnd_mode and prnd_mode from _RND_MODE_PARAM are fixed names | |
619 | // and *must* be used in the library functions | |
b2a00c89 | 620 | // 3) _IDEC_glbround is the fixed name for the global variable holding |
200359e8 | 621 | // the rounding mode |
b2a00c89 | 622 | |
200359e8 L |
623 | #if !DECIMAL_GLOBAL_ROUNDING |
624 | #if DECIMAL_CALL_BY_REFERENCE | |
625 | #define _RND_MODE_ARG , &rnd_mode | |
626 | #define _RND_MODE_PARAM , _IDEC_round *prnd_mode | |
b2a00c89 L |
627 | #define _RND_MODE_ARG_ALONE &rnd_mode |
628 | #define _RND_MODE_PARAM_ALONE _IDEC_round *prnd_mode | |
200359e8 L |
629 | #else |
630 | #define _RND_MODE_ARG , rnd_mode | |
631 | #define _RND_MODE_PARAM , _IDEC_round rnd_mode | |
b2a00c89 L |
632 | #define _RND_MODE_ARG_ALONE rnd_mode |
633 | #define _RND_MODE_PARAM_ALONE _IDEC_round rnd_mode | |
200359e8 L |
634 | #endif |
635 | #else | |
636 | #define _RND_MODE_ARG | |
637 | #define _RND_MODE_PARAM | |
b2a00c89 L |
638 | #define _RND_MODE_ARG_ALONE |
639 | #define _RND_MODE_PARAM_ALONE | |
640 | #define rnd_mode _IDEC_glbround | |
200359e8 L |
641 | #endif |
642 | ||
643 | // Notes: 1) pfpsf from _EXC_FLAGS_ARG is used by the caller of a function | |
644 | // from this library, and can be any name | |
645 | // 2) pfpsf from _EXC_FLAGS_PARAM is a fixed name and *must* be used | |
646 | // in the library functions | |
b2a00c89 | 647 | // 3) _IDEC_glbflags is the fixed name for the global variable holding |
200359e8 L |
648 | // the floating-point status flags |
649 | #if !DECIMAL_GLOBAL_EXCEPTION_FLAGS | |
650 | #define _EXC_FLAGS_ARG , pfpsf | |
651 | #define _EXC_FLAGS_PARAM , _IDEC_flags *pfpsf | |
652 | #else | |
653 | #define _EXC_FLAGS_ARG | |
654 | #define _EXC_FLAGS_PARAM | |
b2a00c89 | 655 | #define pfpsf &_IDEC_glbflags |
200359e8 L |
656 | #endif |
657 | ||
658 | #if DECIMAL_GLOBAL_ROUNDING | |
b2a00c89 | 659 | extern BID_THREAD _IDEC_round _IDEC_glbround; |
200359e8 L |
660 | #endif |
661 | ||
662 | #if DECIMAL_GLOBAL_EXCEPTION_FLAGS | |
b2a00c89 | 663 | extern BID_THREAD _IDEC_flags _IDEC_glbflags; |
200359e8 L |
664 | #endif |
665 | ||
666 | #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING | |
667 | #if DECIMAL_GLOBAL_EXCEPTION_MASKS | |
b2a00c89 | 668 | extern BID_THREAD _IDEC_exceptionmasks _IDEC_glbexceptionmasks; |
200359e8 L |
669 | #endif |
670 | #if DECIMAL_GLOBAL_EXCEPTION_INFO | |
b2a00c89 | 671 | extern BID_THREAD _IDEC_excepthandling _IDEC_glbexcepthandling; |
200359e8 L |
672 | #endif |
673 | #endif | |
674 | ||
675 | #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING | |
676 | ||
677 | // Notes: 1) exc_mask from _EXC_MASKS_ARG is used by the caller of a function | |
678 | // from this library, and can be any name | |
679 | // 2) exc_mask and pexc_mask from _EXC_MASKS_PARAM are fixed names | |
680 | // and *must* be used in the library functions | |
681 | // 3) _IDEC_glbexceptionmasks is the fixed name for the global | |
682 | // variable holding the floating-point exception masks | |
683 | #if !DECIMAL_GLOBAL_EXCEPTION_MASKS | |
684 | #if DECIMAL_CALL_BY_REFERENCE | |
685 | #define _EXC_MASKS_ARG , &exc_mask | |
686 | #define _EXC_MASKS_PARAM , _IDEC_exceptionmasks *pexc_mask | |
687 | #else | |
688 | #define _EXC_MASKS_ARG , exc_mask | |
689 | #define _EXC_MASKS_PARAM , _IDEC_exceptionmasks exc_mask | |
690 | #endif | |
691 | #else | |
692 | #define _EXC_MASKS_ARG | |
693 | #define _EXC_MASKS_PARAM | |
694 | #define exc_mask _IDEC_glbexceptionmasks | |
695 | #endif | |
696 | ||
697 | // Notes: 1) pexc_info from _EXC_INFO_ARG is used by the caller of a function | |
698 | // from this library, and can be any name | |
699 | // 2) pexc_info from _EXC_INFO_PARAM is a fixed name and *must* be | |
700 | // used in the library functions | |
701 | // 3) _IDEC_glbexcepthandling is the fixed name for the global | |
702 | // variable holding the floating-point exception information | |
703 | #if !DECIMAL_GLOBAL_EXCEPTION_INFO | |
704 | #define _EXC_INFO_ARG , pexc_info | |
705 | #define _EXC_INFO_PARAM , _IDEC_excepthandling *pexc_info | |
706 | #else | |
707 | #define _EXC_INFO_ARG | |
708 | #define _EXC_INFO_PARAM | |
709 | #define pexc_info &_IDEC_glbexcepthandling | |
710 | #endif | |
711 | #else | |
712 | #define _EXC_MASKS_ARG | |
713 | #define _EXC_MASKS_PARAM | |
714 | #define _EXC_INFO_ARG | |
715 | #define _EXC_INFO_PARAM | |
716 | #endif | |
717 | ||
718 | ||
719 | #ifndef BID_BIG_ENDIAN | |
720 | #define BID_BIG_ENDIAN 0 | |
721 | #endif | |
722 | ||
723 | #if BID_BIG_ENDIAN | |
724 | #define BID_SWAP128(x) { \ | |
725 | UINT64 sw; \ | |
726 | sw = (x).w[1]; \ | |
727 | (x).w[1] = (x).w[0]; \ | |
728 | (x).w[0] = sw; \ | |
b2a00c89 | 729 | } |
200359e8 | 730 | #else |
b2a00c89 | 731 | #define BID_SWAP128(x) |
200359e8 L |
732 | #endif |
733 | ||
734 | #if DECIMAL_CALL_BY_REFERENCE | |
735 | #define BID_RETURN_VAL(x) { *pres = (x); return; } | |
736 | #if BID_BIG_ENDIAN && defined BID_128RES | |
737 | #define BID_RETURN(x) { BID_SWAP128(x); *pres = (x); return; } | |
738 | #else | |
739 | #define BID_RETURN(x) { *pres = (x); return; } | |
b2a00c89 | 740 | #endif |
200359e8 L |
741 | #else |
742 | #define BID_RETURN_VAL(x) return(x); | |
743 | #if BID_BIG_ENDIAN && defined BID_128RES | |
744 | #define BID_RETURN(x) { BID_SWAP128(x); return(x); } | |
745 | #else | |
746 | #define BID_RETURN(x) return(x); | |
b2a00c89 L |
747 | #endif |
748 | #endif | |
200359e8 L |
749 | |
750 | #if DECIMAL_CALL_BY_REFERENCE | |
751 | #define BIDECIMAL_CALL1(_FUNC, _RES, _OP1) \ | |
752 | _FUNC(&(_RES), &(_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
b2a00c89 | 753 | #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ |
200359e8 L |
754 | _FUNC(&(_RES), &(_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) |
755 | #define BIDECIMAL_CALL2(_FUNC, _RES, _OP1, _OP2) \ | |
756 | _FUNC(&(_RES), &(_OP1), &(_OP2) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
200359e8 L |
757 | #define BIDECIMAL_CALL2_NORND(_FUNC, _RES, _OP1, _OP2) \ |
758 | _FUNC(&(_RES), &(_OP1), &(_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
759 | #define BIDECIMAL_CALL1_NORND_RESREF(_FUNC, _RES, _OP1) \ | |
760 | _FUNC((_RES), &(_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
761 | #define BIDECIMAL_CALL1_RESARG(_FUNC, _RES, _OP1) \ | |
762 | _FUNC(&(_RES), (_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
763 | #define BIDECIMAL_CALL1_RESREF(_FUNC, _RES, _OP1) \ | |
764 | _FUNC((_RES), &(_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
200359e8 L |
765 | #define BIDECIMAL_CALL1_NORND_NOSTAT(_FUNC, _RES, _OP1) \ |
766 | _FUNC(&(_RES), &(_OP1) _EXC_MASKS_ARG _EXC_INFO_ARG) | |
767 | #define BIDECIMAL_CALL2_NORND_NOSTAT(_FUNC, _RES, _OP1, _OP2) \ | |
768 | _FUNC(&(_RES), &(_OP1), &(_OP2) _EXC_MASKS_ARG _EXC_INFO_ARG) | |
769 | #define BIDECIMAL_CALL3(_FUNC, _RES, _OP1, _OP2, _OP3) \ | |
770 | _FUNC(&(_RES), &(_OP1), &(_OP2), &(_OP3) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
b2a00c89 L |
771 | #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ |
772 | _FUNC(&(_RES), &(_OP1) _EXC_FLAGS_ARG ) | |
773 | #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ | |
774 | _FUNC(&(_RES), &(_OP1) ) | |
775 | #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1, _OP2) \ | |
776 | _FUNC(&(_RES), &(_OP1), &(_OP2) ) | |
777 | #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1) \ | |
778 | _FUNC(&(_OP1) _EXC_FLAGS_ARG ) | |
779 | #define BIDECIMAL_CALL2_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1, _OP2) \ | |
780 | _FUNC(&(_OP1), &(_OP2) _EXC_FLAGS_ARG ) | |
781 | #define BIDECIMAL_CALLV_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES) \ | |
782 | _FUNC(&(_RES) _RND_MODE_ARG) | |
783 | #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ | |
784 | _FUNC(&(_OP1) _RND_MODE_ARG) | |
200359e8 L |
785 | #else |
786 | #define BIDECIMAL_CALL1(_FUNC, _RES, _OP1) \ | |
787 | _RES = _FUNC((_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
b2a00c89 | 788 | #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ |
200359e8 L |
789 | _RES = _FUNC((_OP1) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) |
790 | #define BIDECIMAL_CALL2(_FUNC, _RES, _OP1, _OP2) \ | |
791 | _RES = _FUNC((_OP1), (_OP2) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
200359e8 L |
792 | #define BIDECIMAL_CALL2_NORND(_FUNC, _RES, _OP1, _OP2) \ |
793 | _RES = _FUNC((_OP1), (_OP2) _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
794 | #define BIDECIMAL_CALL1_NORND_RESREF(_FUNC, _RES, _OP1) \ | |
795 | _FUNC((_RES), _OP1 _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
796 | #define BIDECIMAL_CALL1_RESARG(_FUNC, _RES, _OP1) \ | |
797 | _RES = _FUNC((_OP1) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
798 | #define BIDECIMAL_CALL1_RESREF(_FUNC, _RES, _OP1) \ | |
799 | _FUNC((_RES), _OP1 _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
200359e8 L |
800 | #define BIDECIMAL_CALL1_NORND_NOSTAT(_FUNC, _RES, _OP1) \ |
801 | _RES = _FUNC((_OP1) _EXC_MASKS_ARG _EXC_INFO_ARG) | |
802 | #define BIDECIMAL_CALL2_NORND_NOSTAT(_FUNC, _RES, _OP1, _OP2) \ | |
803 | _RES = _FUNC((_OP1), (_OP2) _EXC_MASKS_ARG _EXC_INFO_ARG) | |
804 | #define BIDECIMAL_CALL3(_FUNC, _RES, _OP1, _OP2, _OP3) \ | |
805 | _RES = _FUNC((_OP1), (_OP2), (_OP3) _RND_MODE_ARG _EXC_FLAGS_ARG _EXC_MASKS_ARG _EXC_INFO_ARG) | |
b2a00c89 L |
806 | #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ |
807 | _RES = _FUNC((_OP1) _EXC_FLAGS_ARG) | |
808 | #define BIDECIMAL_CALL1_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ | |
809 | _RES = _FUNC((_OP1) ) | |
810 | #define BIDECIMAL_CALL2_NORND_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1, _OP2) \ | |
811 | _RES = _FUNC((_OP1), (_OP2) ) | |
812 | #define BIDECIMAL_CALL1_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1) \ | |
813 | _FUNC((_OP1) _EXC_FLAGS_ARG) | |
814 | #define BIDECIMAL_CALL2_NORND_NOMASK_NOINFO_RESVOID(_FUNC, _OP1, _OP2) \ | |
815 | _FUNC((_OP1), (_OP2) _EXC_FLAGS_ARG) | |
816 | #define BIDECIMAL_CALLV_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES) \ | |
817 | _RES = _FUNC(_RND_MODE_ARG_ALONE) | |
818 | #if !DECIMAL_GLOBAL_ROUNDING | |
819 | #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ | |
820 | _RES = _FUNC((_OP1) _RND_MODE_ARG) | |
821 | #else | |
822 | #define BIDECIMAL_CALL1_NOFLAGS_NOMASK_NOINFO(_FUNC, _RES, _OP1) \ | |
823 | _FUNC((_OP1) _RND_MODE_ARG) | |
824 | #endif | |
200359e8 L |
825 | #endif |
826 | ||
827 | #if BID_BIG_ENDIAN | |
828 | #define HIGH_128W 0 | |
829 | #define LOW_128W 1 | |
830 | #else | |
831 | #define HIGH_128W 1 | |
832 | #define LOW_128W 0 | |
833 | #endif | |
834 | ||
835 | #if BID_BIG_ENDIAN | |
836 | #define COPY_ARG_REF(arg_name) \ | |
837 | UINT128 arg_name={ pbid_##arg_name->w[1], pbid_##arg_name->w[0]}; | |
838 | #define COPY_ARG_VAL(arg_name) \ | |
839 | UINT128 arg_name={ bid_##arg_name.w[1], bid_##arg_name.w[0]}; | |
840 | #else | |
841 | #define COPY_ARG_REF(arg_name) \ | |
842 | UINT128 arg_name=*pbid_##arg_name; | |
843 | #define COPY_ARG_VAL(arg_name) \ | |
844 | UINT128 arg_name= bid_##arg_name; | |
b2a00c89 | 845 | #endif |
200359e8 L |
846 | |
847 | #define COPY_ARG_TYPE_REF(type, arg_name) \ | |
848 | type arg_name=*pbid_##arg_name; | |
849 | #define COPY_ARG_TYPE_VAL(type, arg_name) \ | |
850 | type arg_name= bid_##arg_name; | |
851 | ||
852 | #if !DECIMAL_GLOBAL_ROUNDING | |
b2a00c89 | 853 | #define SET_RND_MODE() \ |
200359e8 L |
854 | _IDEC_round rnd_mode = *prnd_mode; |
855 | #else | |
b2a00c89 | 856 | #define SET_RND_MODE() |
200359e8 L |
857 | #endif |
858 | ||
859 | #define PROLOG_REF(arg_name) \ | |
b2a00c89 | 860 | COPY_ARG_REF(arg_name) |
200359e8 | 861 | |
b2a00c89 L |
862 | #define PROLOG_VAL(arg_name) \ |
863 | COPY_ARG_VAL(arg_name) | |
200359e8 L |
864 | |
865 | #define PROLOG_TYPE_REF(type, arg_name) \ | |
b2a00c89 | 866 | COPY_ARG_TYPE_REF(type, arg_name) |
200359e8 L |
867 | |
868 | #define PROLOG_TYPE_VAL(type, arg_name) \ | |
b2a00c89 | 869 | COPY_ARG_TYPE_VAL(type, arg_name) |
200359e8 | 870 | |
b2a00c89 L |
871 | #define OTHER_PROLOG_REF() |
872 | #define OTHER_PROLOG_VAL() | |
200359e8 L |
873 | |
874 | #if DECIMAL_CALL_BY_REFERENCE | |
875 | #define BID128_FUNCTION_ARG1(fn_name, arg_name)\ | |
876 | void fn_name (UINT128 * pres, \ | |
877 | UINT128 * \ | |
878 | pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
879 | _EXC_INFO_PARAM) {\ | |
880 | PROLOG_REF(arg_name) \ | |
881 | SET_RND_MODE() \ | |
b2a00c89 | 882 | OTHER_PROLOG_REF() |
200359e8 L |
883 | |
884 | #define BID128_FUNCTION_ARG1_NORND(fn_name, arg_name)\ | |
885 | void fn_name (UINT128 * pres, \ | |
886 | UINT128 * \ | |
887 | pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
888 | _EXC_INFO_PARAM) {\ | |
889 | PROLOG_REF(arg_name) \ | |
b2a00c89 | 890 | OTHER_PROLOG_REF() |
200359e8 L |
891 | |
892 | #define BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name)\ | |
893 | void fn_name (restype * pres, \ | |
894 | UINT128 * \ | |
895 | pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
896 | _EXC_INFO_PARAM) {\ | |
897 | PROLOG_REF(arg_name) \ | |
b2a00c89 | 898 | OTHER_PROLOG_REF() |
200359e8 L |
899 | |
900 | #define BID128_FUNCTION_ARG2(fn_name, arg_name1, arg_name2)\ | |
901 | void fn_name (UINT128 * pres, \ | |
902 | UINT128 *pbid_##arg_name1, UINT128 *pbid_##arg_name2 \ | |
903 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
904 | _EXC_INFO_PARAM) {\ | |
905 | PROLOG_REF(arg_name1) \ | |
906 | PROLOG_REF(arg_name2) \ | |
907 | SET_RND_MODE() \ | |
b2a00c89 | 908 | OTHER_PROLOG_REF() |
200359e8 L |
909 | |
910 | #define BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2)\ | |
911 | void fn_name (restype * pres, \ | |
912 | UINT128 *pbid_##arg_name1, UINT128 *pbid_##arg_name2 \ | |
913 | _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
914 | _EXC_INFO_PARAM) {\ | |
915 | PROLOG_REF(arg_name1) \ | |
916 | PROLOG_REF(arg_name2) \ | |
b2a00c89 | 917 | OTHER_PROLOG_REF() |
200359e8 L |
918 | |
919 | #define BID128_FUNCTION_ARG128_ARGTYPE2(fn_name, arg_name1, type2, arg_name2)\ | |
920 | void fn_name (UINT128 * pres, \ | |
921 | UINT128 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ | |
922 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
923 | _EXC_INFO_PARAM) {\ | |
924 | PROLOG_REF(arg_name1) \ | |
925 | PROLOG_TYPE_REF(type2, arg_name2) \ | |
926 | SET_RND_MODE() \ | |
b2a00c89 | 927 | OTHER_PROLOG_REF() |
200359e8 L |
928 | |
929 | #define TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(type0, fn_name, type1, arg_name1, type2, arg_name2)\ | |
930 | void fn_name (type0 *pres, \ | |
931 | type1 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ | |
932 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
933 | _EXC_INFO_PARAM) {\ | |
934 | PROLOG_TYPE_REF(type1, arg_name1) \ | |
935 | PROLOG_TYPE_REF(type2, arg_name2) \ | |
936 | SET_RND_MODE() \ | |
b2a00c89 | 937 | OTHER_PROLOG_REF() |
200359e8 L |
938 | |
939 | #define BID128_FUNCTION_ARGTYPE1_ARG128(fn_name, type1, arg_name1, arg_name2)\ | |
940 | void fn_name (UINT128 * pres, \ | |
941 | type1 *pbid_##arg_name1, UINT128 *pbid_##arg_name2 \ | |
942 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
943 | _EXC_INFO_PARAM) {\ | |
944 | PROLOG_TYPE_REF(type1, arg_name1) \ | |
945 | PROLOG_REF(arg_name2) \ | |
946 | SET_RND_MODE() \ | |
b2a00c89 | 947 | OTHER_PROLOG_REF() |
200359e8 L |
948 | |
949 | #define TYPE0_FUNCTION_ARG128_ARGTYPE2(type0, fn_name, arg_name1, type2, arg_name2)\ | |
950 | void fn_name (type0 *pres, \ | |
951 | UINT128 *pbid_##arg_name1, type2 *pbid_##arg_name2 \ | |
952 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
953 | _EXC_INFO_PARAM) {\ | |
954 | PROLOG_REF(arg_name1) \ | |
955 | PROLOG_TYPE_REF(type2, arg_name2) \ | |
956 | SET_RND_MODE() \ | |
b2a00c89 | 957 | OTHER_PROLOG_REF() |
200359e8 L |
958 | |
959 | #define TYPE0_FUNCTION_ARGTYPE1_ARG128(type0, fn_name, type1, arg_name1, arg_name2)\ | |
960 | void fn_name (type0 *pres, \ | |
961 | type1 *pbid_##arg_name1, UINT128 *pbid_##arg_name2 \ | |
962 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
963 | _EXC_INFO_PARAM) {\ | |
964 | PROLOG_TYPE_REF(type1, arg_name1) \ | |
965 | PROLOG_REF(arg_name2) \ | |
966 | SET_RND_MODE() \ | |
b2a00c89 | 967 | OTHER_PROLOG_REF() |
200359e8 L |
968 | |
969 | #define TYPE0_FUNCTION_ARG128_ARG128(type0, fn_name, arg_name1, arg_name2)\ | |
970 | void fn_name (type0 * pres, \ | |
971 | UINT128 *pbid_##arg_name1, UINT128 *pbid_##arg_name2 \ | |
972 | _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
973 | _EXC_INFO_PARAM) {\ | |
974 | PROLOG_REF(arg_name1) \ | |
975 | PROLOG_REF(arg_name2) \ | |
976 | SET_RND_MODE() \ | |
b2a00c89 | 977 | OTHER_PROLOG_REF() |
200359e8 L |
978 | |
979 | #define TYPE0_FUNCTION_ARG1(type0, fn_name, arg_name)\ | |
980 | void fn_name (type0 * pres, \ | |
981 | UINT128 * \ | |
982 | pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
983 | _EXC_INFO_PARAM) {\ | |
984 | PROLOG_REF(arg_name) \ | |
985 | SET_RND_MODE() \ | |
b2a00c89 | 986 | OTHER_PROLOG_REF() |
200359e8 L |
987 | |
988 | #define BID128_FUNCTION_ARGTYPE1(fn_name, type1, arg_name)\ | |
989 | void fn_name (UINT128 * pres, \ | |
990 | type1 * \ | |
991 | pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
992 | _EXC_INFO_PARAM) {\ | |
993 | PROLOG_TYPE_REF(type1, arg_name) \ | |
994 | SET_RND_MODE() \ | |
b2a00c89 | 995 | OTHER_PROLOG_REF() |
200359e8 L |
996 | |
997 | #define TYPE0_FUNCTION_ARGTYPE1(type0, fn_name, type1, arg_name)\ | |
998 | void fn_name (type0 * pres, \ | |
999 | type1 * \ | |
1000 | pbid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
1001 | _EXC_INFO_PARAM) {\ | |
1002 | PROLOG_TYPE_REF(type1, arg_name) \ | |
1003 | SET_RND_MODE() \ | |
b2a00c89 | 1004 | OTHER_PROLOG_REF() |
200359e8 L |
1005 | |
1006 | #define TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ | |
1007 | void fn_name (type0 * pres, \ | |
1008 | type1 * \ | |
1009 | pbid_##arg_name _EXC_FLAGS_PARAM _EXC_MASKS_PARAM \ | |
1010 | _EXC_INFO_PARAM) {\ | |
1011 | PROLOG_TYPE_REF(type1, arg_name) \ | |
1012 | OTHER_PROLOG_REF() | |
b2a00c89 | 1013 | |
200359e8 L |
1014 | ////////////////////////////////////////// |
1015 | ///////////////////////////////////////// | |
1016 | //////////////////////////////////////// | |
b2a00c89 | 1017 | |
200359e8 | 1018 | #else |
b2a00c89 | 1019 | |
200359e8 L |
1020 | ////////////////////////////////////////// |
1021 | ///////////////////////////////////////// | |
1022 | //////////////////////////////////////// | |
b2a00c89 | 1023 | |
200359e8 L |
1024 | #define BID128_FUNCTION_ARG1(fn_name, arg_name)\ |
1025 | UINT128 \ | |
1026 | fn_name (UINT128 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1027 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1028 | PROLOG_VAL(arg_name) \ | |
b2a00c89 | 1029 | OTHER_PROLOG_VAL() |
200359e8 L |
1030 | |
1031 | #define BID128_FUNCTION_ARG1_NORND(fn_name, arg_name)\ | |
1032 | UINT128 \ | |
1033 | fn_name (UINT128 bid_##arg_name _EXC_FLAGS_PARAM \ | |
1034 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1035 | PROLOG_VAL(arg_name) \ | |
b2a00c89 | 1036 | OTHER_PROLOG_VAL() |
200359e8 L |
1037 | |
1038 | #define BID128_FUNCTION_ARG1_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name)\ | |
1039 | restype \ | |
1040 | fn_name (UINT128 bid_##arg_name _EXC_FLAGS_PARAM \ | |
1041 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1042 | PROLOG_VAL(arg_name) \ | |
b2a00c89 | 1043 | OTHER_PROLOG_VAL() |
200359e8 L |
1044 | |
1045 | #define BID128_FUNCTION_ARG2(fn_name, arg_name1, arg_name2)\ | |
1046 | UINT128 \ | |
1047 | fn_name (UINT128 bid_##arg_name1, \ | |
1048 | UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1049 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1050 | PROLOG_VAL(arg_name1) \ | |
1051 | PROLOG_VAL(arg_name2) \ | |
b2a00c89 | 1052 | OTHER_PROLOG_VAL() |
200359e8 L |
1053 | |
1054 | #define BID128_FUNCTION_ARG2_NORND_CUSTOMRESTYPE(restype, fn_name, arg_name1, arg_name2)\ | |
1055 | restype \ | |
1056 | fn_name (UINT128 bid_##arg_name1, \ | |
1057 | UINT128 bid_##arg_name2 _EXC_FLAGS_PARAM \ | |
1058 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1059 | PROLOG_VAL(arg_name1) \ | |
1060 | PROLOG_VAL(arg_name2) \ | |
b2a00c89 | 1061 | OTHER_PROLOG_VAL() |
200359e8 L |
1062 | |
1063 | #define BID128_FUNCTION_ARG128_ARGTYPE2(fn_name, arg_name1, type2, arg_name2)\ | |
1064 | UINT128 \ | |
1065 | fn_name (UINT128 bid_##arg_name1, \ | |
1066 | type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1067 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1068 | PROLOG_VAL(arg_name1) \ | |
1069 | PROLOG_TYPE_VAL(type2, arg_name2) \ | |
b2a00c89 | 1070 | OTHER_PROLOG_VAL() |
200359e8 L |
1071 | |
1072 | #define TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2(type0, fn_name, type1, arg_name1, type2, arg_name2)\ | |
1073 | type0 \ | |
1074 | fn_name (type1 bid_##arg_name1, \ | |
1075 | type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1076 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1077 | PROLOG_TYPE_VAL(type1, arg_name1) \ | |
1078 | PROLOG_TYPE_VAL(type2, arg_name2) \ | |
b2a00c89 | 1079 | OTHER_PROLOG_VAL() |
200359e8 L |
1080 | |
1081 | #define BID128_FUNCTION_ARGTYPE1_ARG128(fn_name, type1, arg_name1, arg_name2)\ | |
1082 | UINT128 \ | |
1083 | fn_name (type1 bid_##arg_name1, \ | |
1084 | UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1085 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1086 | PROLOG_TYPE_VAL(type1, arg_name1) \ | |
1087 | PROLOG_VAL(arg_name2) \ | |
b2a00c89 | 1088 | OTHER_PROLOG_VAL() |
200359e8 L |
1089 | |
1090 | #define TYPE0_FUNCTION_ARG128_ARGTYPE2(type0, fn_name, arg_name1, type2, arg_name2)\ | |
1091 | type0 \ | |
1092 | fn_name (UINT128 bid_##arg_name1, \ | |
1093 | type2 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1094 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1095 | PROLOG_VAL(arg_name1) \ | |
1096 | PROLOG_TYPE_VAL(type2, arg_name2) \ | |
b2a00c89 | 1097 | OTHER_PROLOG_VAL() |
200359e8 L |
1098 | |
1099 | #define TYPE0_FUNCTION_ARGTYPE1_ARG128(type0, fn_name, type1, arg_name1, arg_name2)\ | |
1100 | type0 \ | |
1101 | fn_name (type1 bid_##arg_name1, \ | |
1102 | UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1103 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1104 | PROLOG_TYPE_VAL(type1, arg_name1) \ | |
1105 | PROLOG_VAL(arg_name2) \ | |
b2a00c89 | 1106 | OTHER_PROLOG_VAL() |
200359e8 L |
1107 | |
1108 | #define TYPE0_FUNCTION_ARG128_ARG128(type0, fn_name, arg_name1, arg_name2)\ | |
1109 | type0 \ | |
1110 | fn_name (UINT128 bid_##arg_name1, \ | |
1111 | UINT128 bid_##arg_name2 _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1112 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1113 | PROLOG_VAL(arg_name1) \ | |
1114 | PROLOG_VAL(arg_name2) \ | |
b2a00c89 | 1115 | OTHER_PROLOG_VAL() |
200359e8 L |
1116 | |
1117 | #define TYPE0_FUNCTION_ARG1(type0, fn_name, arg_name)\ | |
1118 | type0 \ | |
1119 | fn_name (UINT128 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1120 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1121 | PROLOG_VAL(arg_name) \ | |
b2a00c89 | 1122 | OTHER_PROLOG_VAL() |
200359e8 L |
1123 | |
1124 | #define BID128_FUNCTION_ARGTYPE1(fn_name, type1, arg_name)\ | |
1125 | UINT128 \ | |
1126 | fn_name (type1 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1127 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1128 | PROLOG_TYPE_VAL(type1, arg_name) \ | |
b2a00c89 | 1129 | OTHER_PROLOG_VAL() |
200359e8 L |
1130 | |
1131 | #define TYPE0_FUNCTION_ARGTYPE1(type0, fn_name, type1, arg_name)\ | |
1132 | type0 \ | |
1133 | fn_name (type1 bid_##arg_name _RND_MODE_PARAM _EXC_FLAGS_PARAM \ | |
1134 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1135 | PROLOG_TYPE_VAL(type1, arg_name) \ | |
b2a00c89 | 1136 | OTHER_PROLOG_VAL() |
200359e8 L |
1137 | |
1138 | #define TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ | |
1139 | type0 \ | |
1140 | fn_name (type1 bid_##arg_name _EXC_FLAGS_PARAM \ | |
1141 | _EXC_MASKS_PARAM _EXC_INFO_PARAM) { \ | |
1142 | PROLOG_TYPE_VAL(type1, arg_name) \ | |
1143 | OTHER_PROLOG_VAL() | |
b2a00c89 L |
1144 | |
1145 | #endif | |
200359e8 L |
1146 | |
1147 | ||
1148 | ||
1149 | #define BID_TO_SMALL_UINT_CVT_FUNCTION(type0, fn_name, type1, arg_name, cvt_fn_name, type2, size_mask, invalid_res)\ | |
1150 | TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ | |
b2a00c89 L |
1151 | type2 res; \ |
1152 | _IDEC_flags saved_fpsc=*pfpsf; \ | |
200359e8 | 1153 | BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ |
b2a00c89 | 1154 | if(res & size_mask) { \ |
200359e8 | 1155 | *pfpsf = saved_fpsc | INVALID_EXCEPTION; \ |
b2a00c89 | 1156 | res = invalid_res; } \ |
200359e8 | 1157 | BID_RETURN_VAL((type0)res); \ |
b2a00c89 L |
1158 | } |
1159 | ||
200359e8 L |
1160 | #define BID_TO_SMALL_INT_CVT_FUNCTION(type0, fn_name, type1, arg_name, cvt_fn_name, type2, size_mask, invalid_res)\ |
1161 | TYPE0_FUNCTION_ARGTYPE1_NORND(type0, fn_name, type1, arg_name)\ | |
b2a00c89 L |
1162 | type2 res, sgn_mask; \ |
1163 | _IDEC_flags saved_fpsc=*pfpsf; \ | |
200359e8 | 1164 | BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ |
b2a00c89 L |
1165 | sgn_mask = res & size_mask; \ |
1166 | if(sgn_mask && (sgn_mask != (type2)size_mask)) { \ | |
200359e8 | 1167 | *pfpsf = saved_fpsc | INVALID_EXCEPTION; \ |
b2a00c89 | 1168 | res = invalid_res; } \ |
200359e8 | 1169 | BID_RETURN_VAL((type0)res); \ |
b2a00c89 | 1170 | } |
200359e8 | 1171 | #endif |