xref: /netbsd-src/external/gpl3/gcc/dist/libgcc/config/hardfp.c (revision b1e838363e3c6fc78a55519254d99869742dd33c)
14d5abbe8Smrg /* Dummy floating-point routines for hard-float code.
2*b1e83836Smrg    Copyright (C) 2014-2022 Free Software Foundation, Inc.
34d5abbe8Smrg 
44d5abbe8Smrg This file is part of GCC.
54d5abbe8Smrg 
64d5abbe8Smrg GCC is free software; you can redistribute it and/or modify it under
74d5abbe8Smrg the terms of the GNU General Public License as published by the Free
84d5abbe8Smrg Software Foundation; either version 3, or (at your option) any later
94d5abbe8Smrg version.
104d5abbe8Smrg 
114d5abbe8Smrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
124d5abbe8Smrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
134d5abbe8Smrg FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
144d5abbe8Smrg for more details.
154d5abbe8Smrg 
164d5abbe8Smrg Under Section 7 of GPL version 3, you are granted additional
174d5abbe8Smrg permissions described in the GCC Runtime Library Exception, version
184d5abbe8Smrg 3.1, as published by the Free Software Foundation.
194d5abbe8Smrg 
204d5abbe8Smrg You should have received a copy of the GNU General Public License and
214d5abbe8Smrg a copy of the GCC Runtime Library Exception along with this program;
224d5abbe8Smrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
234d5abbe8Smrg <http://www.gnu.org/licenses/>.  */
244d5abbe8Smrg 
254d5abbe8Smrg #define sf float
264d5abbe8Smrg #define df double
274d5abbe8Smrg 
284d5abbe8Smrg #if defined (OP_add3)
FUNC(TYPE x,TYPE y)294d5abbe8Smrg TYPE FUNC (TYPE x, TYPE y) { return x + y; }
304d5abbe8Smrg #elif defined (OP_sub3)
FUNC(TYPE x,TYPE y)314d5abbe8Smrg TYPE FUNC (TYPE x, TYPE y) { return x - y; }
324d5abbe8Smrg #elif defined (OP_neg2)
FUNC(TYPE x)334d5abbe8Smrg TYPE FUNC (TYPE x) { return -x; }
344d5abbe8Smrg #elif defined (OP_mul3)
FUNC(TYPE x,TYPE y)354d5abbe8Smrg TYPE FUNC (TYPE x, TYPE y) { return x * y; }
364d5abbe8Smrg #elif defined (OP_div3)
FUNC(TYPE x,TYPE y)374d5abbe8Smrg TYPE FUNC (TYPE x, TYPE y) { return x / y; }
384d5abbe8Smrg #elif defined (OP_eq2) || defined (OP_ne2)
FUNC(TYPE x,TYPE y)394d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return x == y ? 0 : 1; }
404d5abbe8Smrg #elif defined (OP_ge2)
FUNC(TYPE x,TYPE y)414d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return x >= y ? 0 : -1; }
424d5abbe8Smrg #elif defined (OP_gt2)
FUNC(TYPE x,TYPE y)434d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return x > y ? 1 : 0; }
444d5abbe8Smrg #elif defined (OP_le2)
FUNC(TYPE x,TYPE y)454d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return x <= y ? 0 : 1; }
464d5abbe8Smrg #elif defined (OP_lt2)
FUNC(TYPE x,TYPE y)474d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return x < y ? -1 : 0; }
484d5abbe8Smrg #elif defined (OP_unord2)
FUNC(TYPE x,TYPE y)494d5abbe8Smrg int FUNC (TYPE x, TYPE y) { return __builtin_isunordered (x, y); }
504d5abbe8Smrg #elif defined (OP_fixsi)
FUNC(TYPE x)514d5abbe8Smrg int FUNC (TYPE x) { return (int) x; }
524d5abbe8Smrg #elif defined (OP_floatsi)
FUNC(int x)534d5abbe8Smrg TYPE FUNC (int x) { return (TYPE) x; }
544d5abbe8Smrg #elif defined (OP_floatunsi)
FUNC(unsigned int x)554d5abbe8Smrg TYPE FUNC (unsigned int x) { return (TYPE) x; }
564d5abbe8Smrg #elif defined (OP_extendsf2)
FUNC(float x)574d5abbe8Smrg TYPE FUNC (float x) { return (TYPE) x; }
584d5abbe8Smrg #elif defined (OP_truncdf2)
FUNC(double x)594d5abbe8Smrg TYPE FUNC (double x) { return (TYPE) x; }
604d5abbe8Smrg #else
614d5abbe8Smrg #error Unknown operation
624d5abbe8Smrg #endif
63