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
This commit is contained in:
Uros Bizjak 2007-05-16 19:07:07 +02:00 committed by Uros Bizjak
parent f99a36b8a0
commit 27735edb45
24 changed files with 768 additions and 8 deletions

View file

@ -1,3 +1,44 @@
2007-05-16 Uros Bizjak <ubizjak@gmail.com>
* 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.
2007-05-16 Rafael Avila de Espindola <espindola@google.com>
* c-common.c (c_common_signed_or_unsigned_type): Emulate

View file

@ -1127,7 +1127,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu)
if test x$enable_targets = xall; then
tm_file="${tm_file} i386/x86-64.h i386/linux64.h"
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
tmake_file="${tmake_file} i386/t-linux64"
tmake_file="${tmake_file} i386/t-linux64 i386/t-fprules-softfp64 soft-fp/t-softfp"
need_64bit_hwint=yes
# FIXME: -m64 for i[34567]86-*-* should be allowed just
# like -m32 for x86_64-*-*.
@ -1159,7 +1159,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
tmake_file="${tmake_file} i386/t-linux64 i386/t-crtpc i386/t-crtfm t-dfprules"
tmake_file="${tmake_file} i386/t-linux64 i386/t-crtpc i386/t-crtfm i386/t-fprules-softfp64 soft-fp/t-softfp t-dfprules"
;;
i[34567]86-*-gnu*)
;;

View file

@ -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);
}

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -283,4 +283,6 @@ GCC_4.3.0 {
__emutls_get_address
__emutls_register_common
__ffssi2
__extendxftf2
__trunctfxf2
}

View file

@ -1,3 +1,9 @@
2007-05-16 Uros Bizjak <ubizjak@gmail.com>
* 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.
2007-05-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/18769

View file

@ -1,7 +1,6 @@
/* Test floating-point conversions. __float128 type with TImode. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do run { target { ia64-*-* || { { i?86-*-* x86_64-*-*} && lp64 } } } } */
/* { dg-xfail-if "" { i?86-*-* x86_64-*-* } { "*" } { "" } } */
/* { dg-xfail-if "" { ia64-*-linux* } { "*" } { "" } } */
/* { dg-options "" } */

View file

@ -1,7 +1,6 @@
/* Test floating-point conversions. __float128 type. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do run { target { ia64-*-* || { { i?86-*-* x86_64-*-*} && lp64 } } } } */
/* { dg-xfail-if "" { i?86-*-* x86_64-*-* } { "*" } { "" } } */
/* { dg-options "" } */
#include "fp-int-convert.h"