diff options
author | Michael Meissner <meissner@linux.ibm.com> | 2018-05-21 22:21:40 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 2018-05-21 22:21:40 +0000 |
commit | 75705fa9fda3122269231260e6d04f23113eab2e (patch) | |
tree | e847eef6a8e4e654c76a0e5bb9a3c8ec90c49aad /gcc/ChangeLog | |
parent | 9c8c7338585ca99db181ce0d1a63654f97beeed0 (diff) | |
download | gcc-75705fa9fda3122269231260e6d04f23113eab2e.zip gcc-75705fa9fda3122269231260e6d04f23113eab2e.tar.gz gcc-75705fa9fda3122269231260e6d04f23113eab2e.tar.bz2 |
re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format)
[gcc]
2018-05-21 Michael Meissner <meissner@linux.ibm.com>
PR target/85657
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
define __ibm128 as long double.
* config/rs6000/rs6000.c (rs6000_init_builtins): Always create
__ibm128 as a distinct type.
(init_float128_ieee): Fix up conversions between IFmode and IEEE
128-bit types to use the correct functions.
(rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
convert between 128-bit floating point types that have different
modes but the same representation, instead of using gen_lowpart to
makean alias.
* config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
KFmode.
(IFKF_reg): New attributes to give the register constraints for
IFmode and KFmode.
(extend<mode>tf2_internal): New insns to mark an explicit
conversion between 128-bit floating point types that have a
different mode but share the same representation.
[gcc/testsuite]
2018-05-21 Michael Meissner <meissner@linux.ibm.com>
PR target/85657
* gcc.target/powerpc/pr85657-1.c: New test for converting between
__float128, __ibm128, and long double.
* gcc.target/powerpc/pr85657-2.c: Likewise.
* gcc.target/powerpc/pr85657-3.c: Likewise.
* g++.dg/pr85667.C: New test to make sure __ibm128 is
implementated as a separate type internally, and is not just an
alias for long double.
From-SVN: r260489
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db367f7..6aad0d5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,24 @@ +2018-05-21 Michael Meissner <meissner@linux.ibm.com> + + PR target/85657 + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not + define __ibm128 as long double. + * config/rs6000/rs6000.c (rs6000_init_builtins): Always create + __ibm128 as a distinct type. + (init_float128_ieee): Fix up conversions between IFmode and IEEE + 128-bit types to use the correct functions. + (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to + convert between 128-bit floating point types that have different + modes but the same representation, instead of using gen_lowpart to + makean alias. + * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and + KFmode. + (IFKF_reg): New attributes to give the register constraints for + IFmode and KFmode. + (extend<mode>tf2_internal): New insns to mark an explicit + conversion between 128-bit floating point types that have a + different mode but share the same representation. + 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org> PR tree-optimization/85814 |