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