diff options
author | Michael Meissner <meissner@linux.vnet.ibm.com> | 2017-11-14 19:53:28 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 2017-11-14 19:53:28 +0000 |
commit | cdb4b7aa2f7a6e3b437c0d99e23f8e402b8eeb7d (patch) | |
tree | 039f139325377ed0f00197f1097cf35c2d7d889c /gcc/vr-values.c | |
parent | 9684f222a6f15caa6949b8a075d531f824e324e1 (diff) | |
download | gcc-cdb4b7aa2f7a6e3b437c0d99e23f8e402b8eeb7d.zip gcc-cdb4b7aa2f7a6e3b437c0d99e23f8e402b8eeb7d.tar.gz gcc-cdb4b7aa2f7a6e3b437c0d99e23f8e402b8eeb7d.tar.bz2 |
rs6000-c.c (is_float128_p): New helper function.
[gcc]
2017-11-14 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-c.c (is_float128_p): New helper function.
(rs6000_builtin_type_compatible): Treat _Float128 and long double
as being compatible if -mabi=ieeelongdouble.
* config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
to setup float128 built-ins with hardware support.
(BU_FLOAT128_HW_2): Likewise.
(BU_FLOAT128_HW_3): Likewise.
(BU_FLOAT128_HW_VSX_1): Likewise.
(BU_FLOAT128_HW_VSX_2): Likewise.
(scalar_extract_expq): Change float128 built-in functions to
accommodate having both KFmode and TFmode functions. Use the
KFmode variant as the default.
(scalar_extract_sigq): Likewise.
(scalar_test_neg_qp): Likewise.
(scalar_insert_exp_q): Likewise.
(scalar_insert_exp_qp): Likewise.
(scalar_test_data_class_qp): Likewise.
(sqrtf128_round_to_odd): Delete processing the round to odd
built-in functions as special built-in functions, and define them
as float128 built-ins. Use the KFmode variant as the default.
(truncf128_round_to_odd): Likewise.
(addf128_round_to_odd): Likewise.
(subf128_round_to_odd): Likewise.
(mulf128_round_to_odd): Likewise.
(divf128_round_to_odd): Likewise.
(fmaf128_round_to_odd): Likewise.
* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
support for KFmode and TFmode xststdcqp calls.
(rs6000_expand_builtin): If long double is IEEE 128-bit floating
point, switch the built-in handlers for the get/set float128
exponent, get float128 mantissa, float128 test built-ins, and the
float128 round to odd built-in functions. Eliminate creating the
float128 round to odd built-in functions as special built-ins.
(rs6000_init_builtins): Eliminate special creation of the float128
round to odd built-in functions.
* config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
function insns to support both TFmode and KFmode variants.
(xsxsigqp_<mode>): Likewise.
(xsiexpqpf_<mode>): Likewise.
(xsiexpqp_<mode>): Likewise.
(xststdcqp_<mode>): Likewise.
(xststdcnegqp_<mode>): Likewise.
(xststdcqp_<mode>): Likewise.
[gcc/testsuite]
2017-11-14 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/float128-hw4.c: New test.
From-SVN: r254740
Diffstat (limited to 'gcc/vr-values.c')
0 files changed, 0 insertions, 0 deletions