]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgcc/config/libbid/bid_conf.h
Update copyright years.
[thirdparty/gcc.git] / libgcc / config / libbid / bid_conf.h
CommitLineData
99dee823 1/* Copyright (C) 2007-2021 Free Software Foundation, Inc.
200359e8
L
2
3This file is part of GCC.
4
5GCC is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free
748086b7 7Software Foundation; either version 3, or (at your option) any later
200359e8
L
8version.
9
200359e8
L
10GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11WARRANTY; without even the implied warranty of MERCHANTABILITY or
12FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13for more details.
14
748086b7
JJ
15Under Section 7 of GPL version 3, you are granted additional
16permissions described in the GCC Runtime Library Exception, version
173.1, as published by the Free Software Foundation.
18
19You should have received a copy of the GNU General Public License and
20a copy of the GCC Runtime Library Exception along with this program;
21see 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
593typedef unsigned int _IDEC_round;
b2a00c89 594typedef 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 659extern BID_THREAD _IDEC_round _IDEC_glbround;
200359e8
L
660#endif
661
662#if DECIMAL_GLOBAL_EXCEPTION_FLAGS
b2a00c89 663extern BID_THREAD _IDEC_flags _IDEC_glbflags;
200359e8
L
664#endif
665
666#if DECIMAL_ALTERNATE_EXCEPTION_HANDLING
667#if DECIMAL_GLOBAL_EXCEPTION_MASKS
b2a00c89 668extern BID_THREAD _IDEC_exceptionmasks _IDEC_glbexceptionmasks;
200359e8
L
669#endif
670#if DECIMAL_GLOBAL_EXCEPTION_INFO
b2a00c89 671extern 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