110d565efSmrg /* Dummy floating-point routines for hard-float code.
2*ec02198aSmrg    Copyright (C) 2014-2020 Free Software Foundation, Inc.
310d565efSmrg 
410d565efSmrg This file is part of GCC.
510d565efSmrg 
610d565efSmrg GCC is free software; you can redistribute it and/or modify it under
710d565efSmrg the terms of the GNU General Public License as published by the Free
810d565efSmrg Software Foundation; either version 3, or (at your option) any later
910d565efSmrg version.
1010d565efSmrg 
1110d565efSmrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
1210d565efSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
1310d565efSmrg FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1410d565efSmrg for more details.
1510d565efSmrg 
1610d565efSmrg Under Section 7 of GPL version 3, you are granted additional
1710d565efSmrg permissions described in the GCC Runtime Library Exception, version
1810d565efSmrg 3.1, as published by the Free Software Foundation.
1910d565efSmrg 
2010d565efSmrg You should have received a copy of the GNU General Public License and
2110d565efSmrg a copy of the GCC Runtime Library Exception along with this program;
2210d565efSmrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
2310d565efSmrg <http://www.gnu.org/licenses/>.  */
2410d565efSmrg 
2510d565efSmrg #define sf float
2610d565efSmrg #define df double
2710d565efSmrg 
2810d565efSmrg #if defined (OP_add3)
FUNC(TYPE x,TYPE y)2910d565efSmrg TYPE FUNC (TYPE x, TYPE y) { return x + y; }
3010d565efSmrg #elif defined (OP_sub3)
FUNC(TYPE x,TYPE y)3110d565efSmrg TYPE FUNC (TYPE x, TYPE y) { return x - y; }
3210d565efSmrg #elif defined (OP_neg2)
FUNC(TYPE x)3310d565efSmrg TYPE FUNC (TYPE x) { return -x; }
3410d565efSmrg #elif defined (OP_mul3)
FUNC(TYPE x,TYPE y)3510d565efSmrg TYPE FUNC (TYPE x, TYPE y) { return x * y; }
3610d565efSmrg #elif defined (OP_div3)
FUNC(TYPE x,TYPE y)3710d565efSmrg TYPE FUNC (TYPE x, TYPE y) { return x / y; }
3810d565efSmrg #elif defined (OP_eq2) || defined (OP_ne2)
FUNC(TYPE x,TYPE y)3910d565efSmrg int FUNC (TYPE x, TYPE y) { return x == y ? 0 : 1; }
4010d565efSmrg #elif defined (OP_ge2)
FUNC(TYPE x,TYPE y)4110d565efSmrg int FUNC (TYPE x, TYPE y) { return x >= y ? 0 : -1; }
4210d565efSmrg #elif defined (OP_gt2)
FUNC(TYPE x,TYPE y)4310d565efSmrg int FUNC (TYPE x, TYPE y) { return x > y ? 1 : 0; }
4410d565efSmrg #elif defined (OP_le2)
FUNC(TYPE x,TYPE y)4510d565efSmrg int FUNC (TYPE x, TYPE y) { return x <= y ? 0 : 1; }
4610d565efSmrg #elif defined (OP_lt2)
FUNC(TYPE x,TYPE y)4710d565efSmrg int FUNC (TYPE x, TYPE y) { return x < y ? -1 : 0; }
4810d565efSmrg #elif defined (OP_unord2)
FUNC(TYPE x,TYPE y)4910d565efSmrg int FUNC (TYPE x, TYPE y) { return __builtin_isunordered (x, y); }
5010d565efSmrg #elif defined (OP_fixsi)
FUNC(TYPE x)5110d565efSmrg int FUNC (TYPE x) { return (int) x; }
5210d565efSmrg #elif defined (OP_floatsi)
FUNC(int x)5310d565efSmrg TYPE FUNC (int x) { return (TYPE) x; }
5410d565efSmrg #elif defined (OP_floatunsi)
FUNC(unsigned int x)5510d565efSmrg TYPE FUNC (unsigned int x) { return (TYPE) x; }
5610d565efSmrg #elif defined (OP_extendsf2)
FUNC(float x)5710d565efSmrg TYPE FUNC (float x) { return (TYPE) x; }
5810d565efSmrg #elif defined (OP_truncdf2)
FUNC(double x)5910d565efSmrg TYPE FUNC (double x) { return (TYPE) x; }
6010d565efSmrg #else
6110d565efSmrg #error Unknown operation
6210d565efSmrg #endif
63