diff options
author | Michael Meissner <Michael Meissner meissner@linux.ibm.com> | 2020-05-05 13:46:28 -0400 |
---|---|---|
committer | Michael Meissner <Michael Meissner meissner@linux.ibm.com> | 2020-05-05 14:03:30 -0400 |
commit | 3338afa4a3416f5d9a77c8d888f4a46052af186a (patch) | |
tree | c2ac23dc6417f2344d3c381cba45d9182ce1c1c0 /libgcc/config/rs6000 | |
parent | 03831dcc98977531001706792d9bdfc2cf9cca99 (diff) | |
download | gcc-3338afa4a3416f5d9a77c8d888f4a46052af186a.zip gcc-3338afa4a3416f5d9a77c8d888f4a46052af186a.tar.gz gcc-3338afa4a3416f5d9a77c8d888f4a46052af186a.tar.bz2 |
Patch ieee128-lib-patch010b
Diffstat (limited to 'libgcc/config/rs6000')
-rw-r--r-- | libgcc/config/rs6000/float128-decimal.c | 78 | ||||
-rw-r--r-- | libgcc/config/rs6000/float128-decimal.ver | 7 | ||||
-rw-r--r-- | libgcc/config/rs6000/t-float128-decimal | 7 |
3 files changed, 92 insertions, 0 deletions
diff --git a/libgcc/config/rs6000/float128-decimal.c b/libgcc/config/rs6000/float128-decimal.c index e69de29..31af26b 100644 --- a/libgcc/config/rs6000/float128-decimal.c +++ b/libgcc/config/rs6000/float128-decimal.c @@ -0,0 +1,78 @@ +/* Provide missing conversions between IEEE 128-bit floating point and Decimal + floating point for PowerPC. + + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Michael Meissner (meissner@linux.ibm.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, see + <http://www.gnu.org/licenses/>. */ + +extern __float128 __dpd_trunctdkf (_Decimal128); +extern __float128 __dpd_truncddkf (_Decimal64); +extern __float128 __dpd_truncsdkf (_Decimal64); +extern _Decimal128 __dpd_extendkftd (__float128); +extern _Decimal64 __dpd_trunckfdd (__float128); +extern _Decimal32 __dpd_trunckfsd (__float128); + +__float128 +__dpd_trunctdkf (_Decimal128 x) +{ + __ibm128 ibm = (__ibm128) x; + return (__float128) ibm; +} + +__float128 +__dpd_truncddkf (_Decimal64 x) +{ + __ibm128 ibm = (__ibm128) x; + return (__float128) ibm; +} + +__float128 +__dpd_truncsdkf (_Decimal64 x) +{ + __ibm128 ibm = (__ibm128) x; + return (__float128) ibm; +} + +_Decimal128 +__dpd_extendkftd (__float128 x) +{ + __ibm128 ibm = (__ibm128) x; + return (_Decimal128) ibm; +} + +_Decimal64 +__dpd_trunckfdd (__float128 x) +{ + __ibm128 ibm = (__ibm128) x; + return (_Decimal64) ibm; +} + +_Decimal32 +__dpd_trunckfsd (__float128 x) +{ + __ibm128 ibm = (__ibm128) x; + return (_Decimal32) ibm; +} diff --git a/libgcc/config/rs6000/float128-decimal.ver b/libgcc/config/rs6000/float128-decimal.ver index e69de29..08c15e2 100644 --- a/libgcc/config/rs6000/float128-decimal.ver +++ b/libgcc/config/rs6000/float128-decimal.ver @@ -0,0 +1,7 @@ +GCC_10.0.0 { + # float128 <-> decimal conversions + __dpd_extendkftd + __dpd_trunckfdd + __dpd_trunckfsd + __dpd_trunctdkf +} diff --git a/libgcc/config/rs6000/t-float128-decimal b/libgcc/config/rs6000/t-float128-decimal index e69de29..2854c51 100644 --- a/libgcc/config/rs6000/t-float128-decimal +++ b/libgcc/config/rs6000/t-float128-decimal @@ -0,0 +1,7 @@ +# Add support for doing conversions between IEEE 128-bit floating point and +# Decimal types if glibc does not provide the necessary functions. + +LIB2ADD += $(srcdir)/config/rs6000/float128-decimal.c +SHLIB_MAPFILES += $(srcdir)/config/rs6000/float128-decimal.ver + +float128-decimal$(objext) : INTERNAL_CFLAGS += -mno-gnu-attribute |