builtins: Add DFP signaling NaN built-in functions
authorJoseph Myers <joseph@codesourcery.com>
Fri, 6 Nov 2020 21:55:19 +0000 (21:55 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 6 Nov 2020 21:55:19 +0000 (21:55 +0000)
commit6c8e4f4d79e1c6fb239616e4e07cb46a8c3eb81a
tree236697b91fdd8f1dde905d96c56830e3a6c368fc
parent43d3b7bc073df27800218b685e6d7dd78dd31905
builtins: Add DFP signaling NaN built-in functions

Add built-in functions __builtin_nansd32, __builtin_nansd64 and
__builtin_nansd128 to return signaling NaNs of decimal floating-point
types, analogous to the functions already present for binary
floating-point types.

This patch, independent of
<https://gcc.gnu.org/pipermail/gcc-patches/2020-October/557136.html>
(pending review), is in preparation for adding the <float.h> macros
for such signaling NaNs that are in C2x, analogous to the macros for
other types that are in that patch.

Bootstrapped with no regressions for x86_64-pc-linux-gnu.  Also ran
the new tests for powerpc64le-linux-gnu to confirm they do work in the
case (hardware DFP) where floating-point exceptions are supported for
DFP.

gcc/
2020-11-06  Joseph Myers  <joseph@codesourcery.com>

* builtins.def (BUILT_IN_NANSD32, BUILT_IN_NANSD64)
(BUILT_IN_NANSD128): New built-in functions.
* fold-const-call.c (fold_const_call): Handle the new built-in
functions.
* doc/extend.texi (__builtin_nansd32, __builtin_nansd64)
(__builtin_nansd128): Document.
* doc/sourcebuild.texi (Effective-Target Keywords): Document
fenv_exceptions_dfp.

gcc/testsuite/
2020-11-06  Joseph Myers  <joseph@codesourcery.com>

* lib/target-supports.exp
(check_effective_target_fenv_exceptions_dfp): New.
* gcc.dg/dfp/builtin-snan-1.c, gcc.dg/dfp/builtin-snan-2.c: New
tests.
gcc/builtins.def
gcc/doc/extend.texi
gcc/doc/sourcebuild.texi
gcc/fold-const-call.c
gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/dfp/builtin-snan-2.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp