1 /* Copyright (C) 2007-2018 Free Software Foundation, Inc. 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 7 Software Foundation; either version 3, or (at your option) any later 8 version. 9 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 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/>. */ 23 24 #ifndef _BID_CONF_H 25 #define _BID_CONF_H 26 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 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 519 #define BID_BIG_ENDIAN __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ 520 #endif 521 522 #ifndef BID_THREAD 523 #if defined (HAVE_CC_TLS) && defined (USE_TLS) 524 #define BID_THREAD __thread 525 #endif 526 #endif 527 528 #define _intptr_t_defined 529 #define DECIMAL_CALL_BY_REFERENCE 0 530 #define DECIMAL_GLOBAL_ROUNDING 1 531 #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 1 532 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 1 533 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 1 534 #define BID_HAS_GCC_DECIMAL_INTRINSICS 1 535 #endif /* IN_LIBGCC2 */ 536 537 // Configuration Options 538 539 #define SET_STATUS_FLAGS 540 541 #ifndef BID_THREAD 542 #define BID_THREAD 543 #endif 544 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 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 563 // variable _IDEC_glbround, otherwise it is passed as a parameter when needed 564 565 #ifndef DECIMAL_GLOBAL_ROUNDING 566 #define DECIMAL_GLOBAL_ROUNDING 0 567 #endif 568 569 #ifndef DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 570 #define DECIMAL_GLOBAL_ROUNDING_ACCESS_FUNCTIONS 0 571 #endif 572 573 // If DECIMAL_GLOBAL_EXCEPTION_FLAGS is defined then the exception status flags 574 // are represented by a global variable _IDEC_glbflags, otherwise they are 575 // passed as a parameter when needed 576 577 #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS 578 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS 0 579 #endif 580 581 #ifndef DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 582 #define DECIMAL_GLOBAL_EXCEPTION_FLAGS_ACCESS_FUNCTIONS 0 583 #endif 584 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; 594 typedef unsigned int _IDEC_flags; // could be a struct with diagnostic info 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 620 // 3) _IDEC_glbround is the fixed name for the global variable holding 621 // the rounding mode 622 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 627 #define _RND_MODE_ARG_ALONE &rnd_mode 628 #define _RND_MODE_PARAM_ALONE _IDEC_round *prnd_mode 629 #else 630 #define _RND_MODE_ARG , rnd_mode 631 #define _RND_MODE_PARAM , _IDEC_round rnd_mode 632 #define _RND_MODE_ARG_ALONE rnd_mode 633 #define _RND_MODE_PARAM_ALONE _IDEC_round rnd_mode 634 #endif 635 #else 636 #define _RND_MODE_ARG 637 #define _RND_MODE_PARAM 638 #define _RND_MODE_ARG_ALONE 639 #define _RND_MODE_PARAM_ALONE 640 #define rnd_mode _IDEC_glbround 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 647 // 3) _IDEC_glbflags is the fixed name for the global variable holding 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 655 #define pfpsf &_IDEC_glbflags 656 #endif 657 658 #if DECIMAL_GLOBAL_ROUNDING 659 extern BID_THREAD _IDEC_round _IDEC_glbround; 660 #endif 661 662 #if DECIMAL_GLOBAL_EXCEPTION_FLAGS 663 extern BID_THREAD _IDEC_flags _IDEC_glbflags; 664 #endif 665 666 #if DECIMAL_ALTERNATE_EXCEPTION_HANDLING 667 #if DECIMAL_GLOBAL_EXCEPTION_MASKS 668 extern BID_THREAD _IDEC_exceptionmasks _IDEC_glbexceptionmasks; 669 #endif 670 #if DECIMAL_GLOBAL_EXCEPTION_INFO 671 extern BID_THREAD _IDEC_excepthandling _IDEC_glbexcepthandling; 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; \ 729 } 730 #else 731 #define BID_SWAP128(x) 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; } 740 #endif 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); 747 #endif 748 #endif 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) 753 #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ 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) 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) 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) 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) 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) 788 #define BIDECIMAL_CALL1_NORND(_FUNC, _RES, _OP1) \ 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) 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) 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) 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 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; 845 #endif 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 853 #define SET_RND_MODE() \ 854 _IDEC_round rnd_mode = *prnd_mode; 855 #else 856 #define SET_RND_MODE() 857 #endif 858 859 #define PROLOG_REF(arg_name) \ 860 COPY_ARG_REF(arg_name) 861 862 #define PROLOG_VAL(arg_name) \ 863 COPY_ARG_VAL(arg_name) 864 865 #define PROLOG_TYPE_REF(type, arg_name) \ 866 COPY_ARG_TYPE_REF(type, arg_name) 867 868 #define PROLOG_TYPE_VAL(type, arg_name) \ 869 COPY_ARG_TYPE_VAL(type, arg_name) 870 871 #define OTHER_PROLOG_REF() 872 #define OTHER_PROLOG_VAL() 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() \ 882 OTHER_PROLOG_REF() 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) \ 890 OTHER_PROLOG_REF() 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) \ 898 OTHER_PROLOG_REF() 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() \ 908 OTHER_PROLOG_REF() 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) \ 917 OTHER_PROLOG_REF() 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() \ 927 OTHER_PROLOG_REF() 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() \ 937 OTHER_PROLOG_REF() 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() \ 947 OTHER_PROLOG_REF() 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() \ 957 OTHER_PROLOG_REF() 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() \ 967 OTHER_PROLOG_REF() 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() \ 977 OTHER_PROLOG_REF() 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() \ 986 OTHER_PROLOG_REF() 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() \ 995 OTHER_PROLOG_REF() 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() \ 1004 OTHER_PROLOG_REF() 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() 1013 1014 ////////////////////////////////////////// 1015 ///////////////////////////////////////// 1016 //////////////////////////////////////// 1017 1018 #else 1019 1020 ////////////////////////////////////////// 1021 ///////////////////////////////////////// 1022 //////////////////////////////////////// 1023 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) \ 1029 OTHER_PROLOG_VAL() 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) \ 1036 OTHER_PROLOG_VAL() 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) \ 1043 OTHER_PROLOG_VAL() 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) \ 1052 OTHER_PROLOG_VAL() 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) \ 1061 OTHER_PROLOG_VAL() 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) \ 1070 OTHER_PROLOG_VAL() 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) \ 1079 OTHER_PROLOG_VAL() 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) \ 1088 OTHER_PROLOG_VAL() 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) \ 1097 OTHER_PROLOG_VAL() 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) \ 1106 OTHER_PROLOG_VAL() 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) \ 1115 OTHER_PROLOG_VAL() 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) \ 1122 OTHER_PROLOG_VAL() 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) \ 1129 OTHER_PROLOG_VAL() 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) \ 1136 OTHER_PROLOG_VAL() 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() 1144 1145 #endif 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)\ 1151 type2 res; \ 1152 _IDEC_flags saved_fpsc=*pfpsf; \ 1153 BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ 1154 if(res & size_mask) { \ 1155 *pfpsf = saved_fpsc | INVALID_EXCEPTION; \ 1156 res = invalid_res; } \ 1157 BID_RETURN_VAL((type0)res); \ 1158 } 1159 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)\ 1162 type2 res, sgn_mask; \ 1163 _IDEC_flags saved_fpsc=*pfpsf; \ 1164 BIDECIMAL_CALL1_NORND(cvt_fn_name, res, arg_name); \ 1165 sgn_mask = res & size_mask; \ 1166 if(sgn_mask && (sgn_mask != (type2)size_mask)) { \ 1167 *pfpsf = saved_fpsc | INVALID_EXCEPTION; \ 1168 res = invalid_res; } \ 1169 BID_RETURN_VAL((type0)res); \ 1170 } 1171 #endif 1172