From 6c6352e69858e8c9ca5bc3c4ad4315b3e651d61e Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 10 Oct 2013 23:57:22 +0000 Subject: [PATCH] Add soft-fp files from libgcc. --- ChangeLog | 17 +++++++++++++++++ soft-fp/extendxftf2.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixdfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixsfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixtfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixunsdfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixunssfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/fixunstfti.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floattidf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floattisf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floattitf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floatuntidf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floatuntisf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/floatuntitf.c | 45 +++++++++++++++++++++++++++++++++++++++++++ soft-fp/trunctfxf2.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 15 files changed, 663 insertions(+) create mode 100644 soft-fp/extendxftf2.c create mode 100644 soft-fp/fixdfti.c create mode 100644 soft-fp/fixsfti.c create mode 100644 soft-fp/fixtfti.c create mode 100644 soft-fp/fixunsdfti.c create mode 100644 soft-fp/fixunssfti.c create mode 100644 soft-fp/fixunstfti.c create mode 100644 soft-fp/floattidf.c create mode 100644 soft-fp/floattisf.c create mode 100644 soft-fp/floattitf.c create mode 100644 soft-fp/floatuntidf.c create mode 100644 soft-fp/floatuntisf.c create mode 100644 soft-fp/floatuntitf.c create mode 100644 soft-fp/trunctfxf2.c diff --git a/ChangeLog b/ChangeLog index 80c2336..b6b690c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2013-10-10 Joseph Myers + + * soft-fp/extendxftf2.c: New file. Copied from libgcc. + * soft-fp/fixdfti.c: Likewise. + * soft-fp/fixsfti.c: Likewise. + * soft-fp/fixtfti.c: Likewise. + * soft-fp/fixunsdfti.c: Likewise. + * soft-fp/fixunssfti.c: Likewise. + * soft-fp/fixunstfti.c: Likewise. + * soft-fp/floattidf.c: Likewise. + * soft-fp/floattisf.c: Likewise. + * soft-fp/floattitf.c: Likewise. + * soft-fp/floatuntidf.c: Likewise. + * soft-fp/floatuntisf.c: Likewise. + * soft-fp/floatuntitf.c: Likewise. + * soft-fp/trunctfxf2.c: Likewise. + 2013-10-10 David S. Miller * sysdeps/sparc/fpu/libm-test-ulps: Update. diff --git a/soft-fp/extendxftf2.c b/soft-fp/extendxftf2.c new file mode 100644 index 0000000..af29a2a --- /dev/null +++ b/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/soft-fp/fixdfti.c b/soft-fp/fixdfti.c new file mode 100644 index 0000000..4731657 --- /dev/null +++ b/soft-fp/fixdfti.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert IEEE double to 128bit signed integer + Copyright (C) 2007, 2008 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(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, 1); + FP_HANDLE_EXCEPTIONS; + + return r; +} diff --git a/soft-fp/fixsfti.c b/soft-fp/fixsfti.c new file mode 100644 index 0000000..779628e --- /dev/null +++ b/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/soft-fp/fixtfti.c b/soft-fp/fixtfti.c new file mode 100644 index 0000000..8311ea5 --- /dev/null +++ b/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/soft-fp/fixunsdfti.c b/soft-fp/fixunsdfti.c new file mode 100644 index 0000000..48c41d4 --- /dev/null +++ b/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/soft-fp/fixunssfti.c b/soft-fp/fixunssfti.c new file mode 100644 index 0000000..89bcedb --- /dev/null +++ b/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/soft-fp/fixunstfti.c b/soft-fp/fixunstfti.c new file mode 100644 index 0000000..f62bd50 --- /dev/null +++ b/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/soft-fp/floattidf.c b/soft-fp/floattidf.c new file mode 100644 index 0000000..14b6ea3 --- /dev/null +++ b/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/soft-fp/floattisf.c b/soft-fp/floattisf.c new file mode 100644 index 0000000..475cafa --- /dev/null +++ b/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/soft-fp/floattitf.c b/soft-fp/floattitf.c new file mode 100644 index 0000000..12bbb27 --- /dev/null +++ b/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/soft-fp/floatuntidf.c b/soft-fp/floatuntidf.c new file mode 100644 index 0000000..db1fe1a --- /dev/null +++ b/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/soft-fp/floatuntisf.c b/soft-fp/floatuntisf.c new file mode 100644 index 0000000..7391487 --- /dev/null +++ b/soft-fp/floatuntisf.c @@ -0,0 +1,45 @@ +/* Software floating-point emulation. + Convert a 128bit unsigned integer to IEEE single + Copyright (C) 2007, 2008 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 __floatuntisf(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/soft-fp/floatuntitf.c b/soft-fp/floatuntitf.c new file mode 100644 index 0000000..8d66901 --- /dev/null +++ b/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/soft-fp/trunctfxf2.c b/soft-fp/trunctfxf2.c new file mode 100644 index 0000000..50d60bc --- /dev/null +++ b/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; +} -- 2.7.4