xref: /netbsd-src/external/gpl3/gcc/dist/libdecnumber/decLibrary.c (revision b1e838363e3c6fc78a55519254d99869742dd33c)
14fee23f9Smrg /* Temporary library support for decimal floating point.
2*b1e83836Smrg    Copyright (C) 2005-2022 Free Software Foundation, Inc.
34fee23f9Smrg 
44fee23f9Smrg    This file is part of GCC.
54fee23f9Smrg 
64fee23f9Smrg    GCC is free software; you can redistribute it and/or modify it
74fee23f9Smrg    under the terms of the GNU General Public License as published by
84fee23f9Smrg    the Free Software Foundation; either version 3, or (at your option)
94fee23f9Smrg    any later version.
104fee23f9Smrg 
114fee23f9Smrg    GCC is distributed in the hope that it will be useful, but WITHOUT
124fee23f9Smrg    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
134fee23f9Smrg    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
144fee23f9Smrg    License for more details.
154fee23f9Smrg 
164fee23f9Smrg Under Section 7 of GPL version 3, you are granted additional
174fee23f9Smrg permissions described in the GCC Runtime Library Exception, version
184fee23f9Smrg 3.1, as published by the Free Software Foundation.
194fee23f9Smrg 
204fee23f9Smrg You should have received a copy of the GNU General Public License and
214fee23f9Smrg a copy of the GCC Runtime Library Exception along with this program;
224fee23f9Smrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
234fee23f9Smrg <http://www.gnu.org/licenses/>.  */
244fee23f9Smrg 
254fee23f9Smrg #include "dconfig.h"
264fee23f9Smrg #include "decContext.h"
274fee23f9Smrg #include "decimal128.h"
284fee23f9Smrg #include "decimal64.h"
294fee23f9Smrg #include "decimal32.h"
304fee23f9Smrg 
314fee23f9Smrg void __host_to_ieee_32 (_Decimal32, decimal32 *);
324fee23f9Smrg void __host_to_ieee_64 (_Decimal64, decimal64 *);
334fee23f9Smrg void __host_to_ieee_128 (_Decimal128, decimal128 *);
344fee23f9Smrg 
354fee23f9Smrg extern int isinfd32 (_Decimal32);
364fee23f9Smrg extern int isinfd64 (_Decimal64);
374fee23f9Smrg extern int isinfd128 (_Decimal128);
384fee23f9Smrg uint32_t __dec_byte_swap (uint32_t);
394fee23f9Smrg 
404fee23f9Smrg int
isinfd32(_Decimal32 arg)414fee23f9Smrg isinfd32 (_Decimal32 arg)
424fee23f9Smrg {
434fee23f9Smrg   decNumber dn;
444fee23f9Smrg   decimal32 d32;
454fee23f9Smrg 
464fee23f9Smrg   __host_to_ieee_32 (arg, &d32);
474fee23f9Smrg   decimal32ToNumber (&d32, &dn);
484fee23f9Smrg   return (decNumberIsInfinite (&dn));
494fee23f9Smrg }
504fee23f9Smrg 
514fee23f9Smrg int
isinfd64(_Decimal64 arg)524fee23f9Smrg isinfd64 (_Decimal64 arg)
534fee23f9Smrg {
544fee23f9Smrg   decNumber dn;
554fee23f9Smrg   decimal64 d64;
564fee23f9Smrg 
574fee23f9Smrg   __host_to_ieee_64 (arg, &d64);
584fee23f9Smrg   decimal64ToNumber (&d64, &dn);
594fee23f9Smrg   return (decNumberIsInfinite (&dn));
604fee23f9Smrg }
614fee23f9Smrg 
624fee23f9Smrg int
isinfd128(_Decimal128 arg)634fee23f9Smrg isinfd128 (_Decimal128 arg)
644fee23f9Smrg {
654fee23f9Smrg   decNumber dn;
664fee23f9Smrg   decimal128 d128;
674fee23f9Smrg 
684fee23f9Smrg   __host_to_ieee_128 (arg, &d128);
694fee23f9Smrg   decimal128ToNumber (&d128, &dn);
704fee23f9Smrg   return (decNumberIsInfinite (&dn));
714fee23f9Smrg }
72