diff options
author | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-05 22:10:28 +0000 |
---|---|---|
committer | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-05 22:10:28 +0000 |
commit | 004e23c43c8caeb9121f6b03327f8d348104795a (patch) | |
tree | c38a91fbd5bfd1088c8fd8957c1e2fde0ab02b01 /gcc/testsuite/gcc.dg | |
parent | 7016928332a78407b6cee06755e4b400bfd86487 (diff) | |
download | gcc-004e23c43c8caeb9121f6b03327f8d348104795a.tar.gz |
* doc/extend.texi (Other Builtins): Add decimal float variants
of signbit.
* builtins.def: Ditto.
* builtins.c (expand_builtin): Ditto.
testsuite/
* gcc.dg/dfp/signbit-1.c
* gcc.dg/dfp/signbit-2.c
M gcc/doc/extend.texi
M gcc/builtins.c
M gcc/ChangeLog
A gcc/testsuite/gcc.dg/dfp/signbit-2.c
A gcc/testsuite/gcc.dg/dfp/signbit-1.c
M gcc/testsuite/ChangeLog
M gcc/builtins.def
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123528 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/dfp/signbit-1.c | 50 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/dfp/signbit-2.c | 33 |
2 files changed, 83 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/dfp/signbit-1.c b/gcc/testsuite/gcc.dg/dfp/signbit-1.c new file mode 100644 index 00000000000..cde28f9ba84 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/signbit-1.c @@ -0,0 +1,50 @@ +/* { dg-options "-O0 -std=gnu99" } */ + +/* Decimal float versions of __builtin_signbit. */ + +extern void abort (void); +int failures; + +#ifdef DBG +extern int printf (const char *, ...); +#define FAILURE { printf ("failed at line %d\n", __LINE__); failures++; } +#else +#define FAILURE abort (); +#endif + +#define CHECK32(D,I) \ + if ((__builtin_signbitd32 (D) != 0) != I) FAILURE + +#define CHECK64(D,I) \ + if ((__builtin_signbitd64 (D) != 0) != I) FAILURE + +#define CHECK128(D,I) \ + if ((__builtin_signbitd128 (D) != 0) != I) FAILURE + +/* Prevent the compiler from folding the calls at compile time. */ +volatile _Decimal32 sd; +volatile _Decimal64 dd; +volatile _Decimal128 td; + +int +main () +{ + sd = 1.9df; CHECK32 (sd, 0) + sd = -5.3df; CHECK32 (sd, 1) + sd = 0.0df; CHECK32 (sd, 0) + sd = -0.0df; CHECK32 (sd, 1) + + dd = 1.9dd; CHECK64 (dd, 0) + dd = -5.3dd; CHECK64 (dd, 1) + dd = 0.0dd; CHECK64 (dd, 0) + dd = -0.0dd; CHECK64 (dd, 1) + + td = 1.9dl; CHECK128 (td, 0) + td = -5.3dl; CHECK128 (td, 1) + td = 0.0dl; CHECK128 (td, 0) + td = -0.0dl; CHECK128 (td, 1) + + if (failures != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/dfp/signbit-2.c b/gcc/testsuite/gcc.dg/dfp/signbit-2.c new file mode 100644 index 00000000000..6f9a2276b8a --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/signbit-2.c @@ -0,0 +1,33 @@ +/* { dg-options "-O0 -std=gnu99" } */ + +/* Check that the compiler uses builtins for signbit; if not the link + will fail because library functions are in libm. */ + +extern void abort (void); + +volatile _Decimal32 sd = 2.3df; +volatile _Decimal64 dd = -4.5dd; +volatile _Decimal128 tf = 5.3dl; +volatile float f = 1.2f; +volatile double d = -7.8; +volatile long double ld = 3.4L; + +extern int signbitf (float); +extern int signbit (double); +extern int signbitl (long double); +extern int signbitd32 (_Decimal32); +extern int signbitd64 (_Decimal64); +extern int signbitd128 (_Decimal128); + +int +main () +{ + if (signbitf (f) != 0) abort (); + if (signbit (d) == 0) abort (); + if (signbitl (ld) != 0) abort (); + if (signbitd32 (sd) != 0) abort (); + if (signbitd64 (dd) == 0) abort (); + if (signbitd128 (tf) != 0) abort (); + + return 0; +} |