diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2007-05-16 19:07:07 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2007-05-16 19:07:07 +0200 |
commit | 27735edb45fb125258ca38ca12ebab88deb9833b (patch) | |
tree | d44fb0e52f28edf76cd70bbaeeac973a32148bca /gcc/config | |
parent | f99a36b8a0d4412276fa97f48f00145102c05f3e (diff) | |
download | gcc-27735edb45fb125258ca38ca12ebab88deb9833b.zip gcc-27735edb45fb125258ca38ca12ebab88deb9833b.tar.gz gcc-27735edb45fb125258ca38ca12ebab88deb9833b.tar.bz2 |
README: Update for new files.
* soft-fp/README: Update for new files.
* soft-fp/floattisf.c: New file.
* soft-fp/floattidf.c: New file.
* soft-fp/floattitf.c: New file.
* soft-fp/floatuntisf.c: New file.
* soft-fp/floatuntidf.c: New file.
* soft-fp/floatuntitf.c: New file.
* soft-fp/fixsfti.c: New file.
* soft-fp/fixdfti.c: New file.
* soft-fp/fixtfti.c: New file.
* soft-fp/fixunssfti.c: New file.
* soft-fp/fixunsdfti.c: New file.
* soft-fp/fixunstfti.c: New file.
* soft-fp/extendxftf.c: New file.
* soft-fp/trunctfxf.c: New file.
* libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
(__trunctfxf2): Ditto.
* config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
__extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
__fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
__floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
__letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
__unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
* config/i386/t-fprules-softfp64: New file.
* config/i386/sfp-machine.h: New file.
* config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
and soft-fp/t-softfp to tmake_file.
(i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
* config/i386/t-linux64 (softfp_wrap_start): New.
(softfp_wrap_end): New.
* config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
supported for TARGET_64BIT.
testsuite/ChangeLog:
* gcc.dg/torture/fp-int-convert-float128.c: Do not xfail for i?86-*-*
and x86_64-*-* targets.
* gcc.dg/torture/fp-int-convert-float128-timode.c: Ditto.
From-SVN: r124775
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/config/i386/libgcc-x86_64-glibc.ver | 61 | ||||
-rw-r--r-- | gcc/config/i386/t-linux64 | 3 | ||||
-rw-r--r-- | gcc/config/soft-fp/README | 9 | ||||
-rw-r--r-- | gcc/config/soft-fp/extendxftf2.c | 53 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixdfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixsfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixtfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixunsdfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixunssfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/fixunstfti.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floattidf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floattisf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floattitf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floatuntidf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floatuntisf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/floatuntitf.c | 45 | ||||
-rw-r--r-- | gcc/config/soft-fp/trunctfxf2.c | 53 |
18 files changed, 717 insertions, 4 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f5bf454..3c9445a 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -21164,6 +21164,8 @@ ix86_scalar_mode_supported_p (enum machine_mode mode) { if (DECIMAL_FLOAT_MODE_P (mode)) return true; + else if (mode == TFmode) + return TARGET_64BIT; else return default_scalar_mode_supported_p (mode); } diff --git a/gcc/config/i386/libgcc-x86_64-glibc.ver b/gcc/config/i386/libgcc-x86_64-glibc.ver index 2ea321f..fa5d1a6 100644 --- a/gcc/config/i386/libgcc-x86_64-glibc.ver +++ b/gcc/config/i386/libgcc-x86_64-glibc.ver @@ -23,3 +23,64 @@ GLIBC_2.0 { __register_frame_info_table } %endif + +% 128 bit long double support was introduced with GCC 4.3.0. +% These lines make the symbols to get a @@GCC_4.3.0 attached. + +%ifdef __x86_64__ +%exclude { + __addtf3 + __divtf3 + __eqtf2 + __extenddftf2 + __extendsftf2 + __fixtfdi + __fixtfsi + __fixtfti + __fixunstfdi + __fixunstfsi + __fixunstfti + __floatditf + __floatsitf + __floattitf + __floatunditf + __floatunsitf + __floatuntitf + __getf2 + __letf2 + __multf3 + __negtf2 + __subtf3 + __trunctfdf2 + __trunctfsf2 + __unordtf2 +} + +GCC_4.3.0 { + __addtf3 + __divtf3 + __eqtf2 + __extenddftf2 + __extendsftf2 + __fixtfdi + __fixtfsi + __fixtfti + __fixunstfdi + __fixunstfsi + __fixunstfti + __floatditf + __floatsitf + __floattitf + __floatunditf + __floatunsitf + __floatuntitf + __getf2 + __letf2 + __multf3 + __negtf2 + __subtf3 + __trunctfdf2 + __trunctfsf2 + __unordtf2 +} +%endif diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64 index f875126..7aa1b81 100644 --- a/gcc/config/i386/t-linux64 +++ b/gcc/config/i386/t-linux64 @@ -15,6 +15,9 @@ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o \ crtbeginT.o crtprec32.o crtprec64.o crtprec80.o \ crtfastmath.o +softfp_wrap_start := '\#ifdef __x86_64__' +softfp_wrap_end := '\#endif' + # The pushl in CTOR initialization interferes with frame pointer elimination. # crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, # because then __FRAME_END__ might not be the last thing in .eh_frame diff --git a/gcc/config/soft-fp/README b/gcc/config/soft-fp/README index 870025c..ea58753 100644 --- a/gcc/config/soft-fp/README +++ b/gcc/config/soft-fp/README @@ -1,4 +1,5 @@ -Except for t-softfp, the files in this directory are part of the GNU C -Library, not part of GCC. As described at -<http://gcc.gnu.org/codingconventions.html>, changes should be made to -the GNU C Library and the changed files then imported into GCC. +Except for t-softfp, conversions involving TImode and conversions involving +XFmode, the files in this directory are part of the GNU C Library, not part +of GCC. As described at <http://gcc.gnu.org/codingconventions.html>, changes +should be made to the GNU C Library and the changed files then imported +into GCC. diff --git a/gcc/config/soft-fp/extendxftf2.c b/gcc/config/soft-fp/extendxftf2.c new file mode 100644 index 0000000..af29a2a --- /dev/null +++ b/gcc/config/soft-fp/extendxftf2.c @@ -0,0 +1,53 @@ +/* Software floating-point emulation. + Return a converted to IEEE quad + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "extended.h" +#include "quad.h" + +TFtype __extendxftf2(XFtype a) +{ + FP_DECL_EX; + FP_DECL_E(A); + FP_DECL_Q(R); + TFtype r; + + FP_INIT_ROUNDMODE; + FP_UNPACK_RAW_E(A, a); +#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q + FP_EXTEND(Q,E,4,4,R,A); +#else + FP_EXTEND(Q,E,2,2,R,A); +#endif + FP_PACK_RAW_Q(r, R); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixdfti.c b/gcc/config/soft-fp/fixdfti.c new file mode 100644 index 0000000..6d06514 --- /dev/null +++ b/gcc/config/soft-fp/fixdfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE double to 128bit signed integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "double.h" + +TItype __fixdfti(TFtype a) +{ + FP_DECL_EX; + FP_DECL_D(A); + UTItype r; + + FP_UNPACK_RAW_D(A, a); + FP_TO_INT_D(r, A, TI_BITS, 1); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixsfti.c b/gcc/config/soft-fp/fixsfti.c new file mode 100644 index 0000000..779628e --- /dev/null +++ b/gcc/config/soft-fp/fixsfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE single to 128bit signed integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "single.h" + +TItype __fixsfti(SFtype a) +{ + FP_DECL_EX; + FP_DECL_S(A); + UTItype r; + + FP_UNPACK_RAW_S(A, a); + FP_TO_INT_S(r, A, TI_BITS, 1); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixtfti.c b/gcc/config/soft-fp/fixtfti.c new file mode 100644 index 0000000..8311ea5 --- /dev/null +++ b/gcc/config/soft-fp/fixtfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE quad to 128bit signed integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "quad.h" + +TItype __fixtfti(TFtype a) +{ + FP_DECL_EX; + FP_DECL_Q(A); + UTItype r; + + FP_UNPACK_RAW_Q(A, a); + FP_TO_INT_Q(r, A, TI_BITS, 1); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixunsdfti.c b/gcc/config/soft-fp/fixunsdfti.c new file mode 100644 index 0000000..48c41d4 --- /dev/null +++ b/gcc/config/soft-fp/fixunsdfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE double to 128bit unsigned integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "double.h" + +UTItype __fixunsdfti(DFtype a) +{ + FP_DECL_EX; + FP_DECL_D(A); + UTItype r; + + FP_UNPACK_RAW_D(A, a); + FP_TO_INT_D(r, A, TI_BITS, 0); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixunssfti.c b/gcc/config/soft-fp/fixunssfti.c new file mode 100644 index 0000000..89bcedb --- /dev/null +++ b/gcc/config/soft-fp/fixunssfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE single to 128bit unsigned integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "single.h" + +UTItype __fixunssfti(SFtype a) +{ + FP_DECL_EX; + FP_DECL_S(A); + UTItype r; + + FP_UNPACK_RAW_S(A, a); + FP_TO_INT_S(r, A, TI_BITS, 0); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/fixunstfti.c b/gcc/config/soft-fp/fixunstfti.c new file mode 100644 index 0000000..f62bd50 --- /dev/null +++ b/gcc/config/soft-fp/fixunstfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE quad to 128bit unsigned integer + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "quad.h" + +UTItype __fixunstfti(TFtype a) +{ + FP_DECL_EX; + FP_DECL_Q(A); + UTItype r; + + FP_UNPACK_RAW_Q(A, a); + FP_TO_INT_Q(r, A, TI_BITS, 0); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/gcc/config/soft-fp/floattidf.c b/gcc/config/soft-fp/floattidf.c new file mode 100644 index 0000000..14b6ea3 --- /dev/null +++ b/gcc/config/soft-fp/floattidf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit signed integer to IEEE double + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "double.h" + +DFtype __floattidf(TItype i) +{ + FP_DECL_EX; + FP_DECL_D(A); + DFtype a; + + FP_FROM_INT_D(A, i, TI_BITS, UTItype); + FP_PACK_RAW_D(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/floattisf.c b/gcc/config/soft-fp/floattisf.c new file mode 100644 index 0000000..475cafa --- /dev/null +++ b/gcc/config/soft-fp/floattisf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit signed integer to IEEE single + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "single.h" + +SFtype __floattisf(TItype i) +{ + FP_DECL_EX; + FP_DECL_S(A); + SFtype a; + + FP_FROM_INT_S(A, i, TI_BITS, UTItype); + FP_PACK_RAW_S(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/floattitf.c b/gcc/config/soft-fp/floattitf.c new file mode 100644 index 0000000..12bbb27 --- /dev/null +++ b/gcc/config/soft-fp/floattitf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit signed integer to IEEE quad + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "quad.h" + +TFtype __floattitf(TItype i) +{ + FP_DECL_EX; + FP_DECL_Q(A); + TFtype a; + + FP_FROM_INT_Q(A, i, TI_BITS, UTItype); + FP_PACK_RAW_Q(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/floatuntidf.c b/gcc/config/soft-fp/floatuntidf.c new file mode 100644 index 0000000..db1fe1a --- /dev/null +++ b/gcc/config/soft-fp/floatuntidf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit unsigned integer to IEEE double + Copyright (C) 1997,1999, 2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "double.h" + +DFtype __floatuntidf(UTItype i) +{ + FP_DECL_EX; + FP_DECL_D(A); + DFtype a; + + FP_FROM_INT_D(A, i, TI_BITS, UTItype); + FP_PACK_RAW_D(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/floatuntisf.c b/gcc/config/soft-fp/floatuntisf.c new file mode 100644 index 0000000..11ad643 --- /dev/null +++ b/gcc/config/soft-fp/floatuntisf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit unsigned integer to IEEE single + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "single.h" + +SFtype __floatundisf(UTItype i) +{ + FP_DECL_EX; + FP_DECL_S(A); + SFtype a; + + FP_FROM_INT_S(A, i, TI_BITS, UTItype); + FP_PACK_RAW_S(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/floatuntitf.c b/gcc/config/soft-fp/floatuntitf.c new file mode 100644 index 0000000..8d66901 --- /dev/null +++ b/gcc/config/soft-fp/floatuntitf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit unsigned integer to IEEE quad + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "quad.h" + +TFtype __floatuntitf(UTItype i) +{ + FP_DECL_EX; + FP_DECL_Q(A); + TFtype a; + + FP_FROM_INT_Q(A, i, TI_BITS, UTItype); + FP_PACK_RAW_Q(a, A); + FP_HANDLE_EXCEPTIONS; + + return a; +} diff --git a/gcc/config/soft-fp/trunctfxf2.c b/gcc/config/soft-fp/trunctfxf2.c new file mode 100644 index 0000000..50d60bc --- /dev/null +++ b/gcc/config/soft-fp/trunctfxf2.c @@ -0,0 +1,53 @@ +/* Software floating-point emulation. + Truncate IEEE quad into IEEE extended + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Uros Bizjak (ubizjak@gmail.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file into + combinations with other programs, and to distribute those + combinations without any restriction coming from the use of this + file. (The Lesser General Public License restrictions do apply in + other respects; for example, they cover modification of the file, + and distribution when not linked into a combine executable.) + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "soft-fp.h" +#include "extended.h" +#include "quad.h" + +XFtype __trunctfxf2(TFtype a) +{ + FP_DECL_EX; + FP_DECL_Q(A); + FP_DECL_E(R); + XFtype r; + + FP_INIT_ROUNDMODE; + FP_UNPACK_SEMIRAW_Q(A, a); +#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q + FP_TRUNC(E,Q,4,4,R,A); +#else + FP_TRUNC(E,Q,2,2,R,A); +#endif + FP_PACK_SEMIRAW_E(r, R); + FP_HANDLE_EXCEPTIONS; + + return r; +} |