aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-11-06 22:46:39 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2013-11-06 22:46:39 +0000
commit9954c743b9e985bd30194525464a0a8a64697b68 (patch)
treea0be3468d26216a37289e1817e7dbfea037f2f7c /gcc
parent3c40bae1c50f4fd8c23ee04d7fe768d7df68f2e6 (diff)
downloadgcc-9954c743b9e985bd30194525464a0a8a64697b68.zip
gcc-9954c743b9e985bd30194525464a0a8a64697b68.tar.gz
gcc-9954c743b9e985bd30194525464a0a8a64697b68.tar.bz2
float128-cmp-invalid.c, [...]: New tests.
gcc/testsuite: * gcc.dg/torture/float128-cmp-invalid.c, gcc.dg/torture/float128-div-underflow.c, gcc.dg/torture/float128-extend-nan.c, gcc.dg/torture/fp-int-convert-float128-timode-3.c: New tests. libgcc: * soft-fp/README: Update. * soft-fp/adddf3.c: Update from glibc. * soft-fp/addsf3.c: Likewise. * soft-fp/addtf3.c: Likewise. * soft-fp/divdf3.c: Likewise. * soft-fp/divsf3.c: Likewise. * soft-fp/divtf3.c: Likewise. * soft-fp/double.h: Likewise. * soft-fp/eqdf2.c: Likewise. * soft-fp/eqsf2.c: Likewise. * soft-fp/eqtf2.c: Likewise. * soft-fp/extenddftf2.c: Likewise. * soft-fp/extended.h: Likewise. * soft-fp/extendsfdf2.c: Likewise. * soft-fp/extendsftf2.c: Likewise. * soft-fp/extendxftf2.c: Likewise. * soft-fp/fixdfdi.c: Likewise. * soft-fp/fixdfsi.c: Likewise. * soft-fp/fixdfti.c: Likewise. * soft-fp/fixsfdi.c: Likewise. * soft-fp/fixsfsi.c: Likewise. * soft-fp/fixsfti.c: Likewise. * soft-fp/fixtfdi.c: Likewise. * soft-fp/fixtfsi.c: Likewise. * soft-fp/fixtfti.c: Likewise. * soft-fp/fixunsdfdi.c: Likewise. * soft-fp/fixunsdfsi.c: Likewise. * soft-fp/fixunsdfti.c: Likewise. * soft-fp/fixunssfdi.c: Likewise. * soft-fp/fixunssfsi.c: Likewise. * soft-fp/fixunssfti.c: Likewise. * soft-fp/fixunstfdi.c: Likewise. * soft-fp/fixunstfsi.c: Likewise. * soft-fp/fixunstfti.c: Likewise. * soft-fp/floatdidf.c: Likewise. * soft-fp/floatdisf.c: Likewise. * soft-fp/floatditf.c: Likewise. * soft-fp/floatsidf.c: Likewise. * soft-fp/floatsisf.c: Likewise. * soft-fp/floatsitf.c: Likewise. * soft-fp/floattidf.c: Likewise. * soft-fp/floattisf.c: Likewise. * soft-fp/floattitf.c: Likewise. * soft-fp/floatundidf.c: Likewise. * soft-fp/floatundisf.c: Likewise. * soft-fp/floatunditf.c: Likewise. * soft-fp/floatunsidf.c: Likewise. * soft-fp/floatunsisf.c: Likewise. * soft-fp/floatunsitf.c: Likewise. * soft-fp/floatuntidf.c: Likewise. * soft-fp/floatuntisf.c: Likewise. * soft-fp/floatuntitf.c: Likewise. * soft-fp/gedf2.c: Likewise. * soft-fp/gesf2.c: Likewise. * soft-fp/getf2.c: Likewise. * soft-fp/ledf2.c: Likewise. * soft-fp/lesf2.c: Likewise. * soft-fp/letf2.c: Likewise. * soft-fp/muldf3.c: Likewise. * soft-fp/mulsf3.c: Likewise. * soft-fp/multf3.c: Likewise. * soft-fp/negdf2.c: Likewise. * soft-fp/negsf2.c: Likewise. * soft-fp/negtf2.c: Likewise. * soft-fp/op-1.h: Likewise. * soft-fp/op-2.h: Likewise. * soft-fp/op-4.h: Likewise. * soft-fp/op-8.h: Likewise. * soft-fp/op-common.h: Likewise. * soft-fp/quad.h: Likewise. * soft-fp/single.h: Likewise. * soft-fp/soft-fp.h: Likewise. * soft-fp/subdf3.c: Likewise. * soft-fp/subsf3.c: Likewise. * soft-fp/subtf3.c: Likewise. * soft-fp/truncdfsf2.c: Likewise. * soft-fp/trunctfdf2.c: Likewise. * soft-fp/trunctfsf2.c: Likewise. * soft-fp/trunctfxf2.c: Likewise. * soft-fp/unorddf2.c: Likewise. * soft-fp/unordsf2.c: Likewise. * soft-fp/unordtf2.c: Likewise. From-SVN: r204489
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c18
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-div-underflow.c18
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-extend-nan.c22
-rw-r--r--gcc/testsuite/gcc.dg/torture/fp-int-convert-float128-timode-3.c23
5 files changed, 88 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cb7b15b..27a7628 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-06 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/torture/float128-cmp-invalid.c,
+ gcc.dg/torture/float128-div-underflow.c,
+ gcc.dg/torture/float128-extend-nan.c,
+ gcc.dg/torture/fp-int-convert-float128-timode-3.c: New tests.
+
2013-11-06 Oleg Endo <olegendo@gcc.gnu.org>
* gcc.target/sh/pr51244-11.c: Remove target line.
diff --git a/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
new file mode 100644
index 0000000..53ef7ed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
@@ -0,0 +1,18 @@
+/* Test for "invalid" exceptions from __float128 comparisons. */
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "" } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile __float128 a = __builtin_nan (""), b = 0;
+ volatile int r = a < b;
+ if (!fetestexcept (FE_INVALID))
+ abort ();
+ if (r)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/float128-div-underflow.c b/gcc/testsuite/gcc.dg/torture/float128-div-underflow.c
new file mode 100644
index 0000000..43d350f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-div-underflow.c
@@ -0,0 +1,18 @@
+/* Test for spurious underflow from __float128 division. */
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "" } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile __float128 a = 0x0.fffp-16382q, b = 0x0.fffp0q, c;
+ c = a / b;
+ if (fetestexcept (FE_UNDERFLOW | FE_INEXACT))
+ abort ();
+ if (c != 0x1p-16382q)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/float128-extend-nan.c b/gcc/testsuite/gcc.dg/torture/float128-extend-nan.c
new file mode 100644
index 0000000..1942d80
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-extend-nan.c
@@ -0,0 +1,22 @@
+/* Test extensions to __float128 quiet signaling NaNs. */
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "-fsignaling-nans" } */
+
+#include <fenv.h>
+#include <float.h>
+#include <stdlib.h>
+
+volatile long double a = __builtin_nansl ("");
+
+int
+main (void)
+{
+#if LDBL_MANT_DIG < 113
+ volatile __float128 r = a;
+ feclearexcept (FE_INVALID);
+ r += 1;
+ if (fetestexcept (FE_INVALID))
+ abort ();
+#endif
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128-timode-3.c b/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128-timode-3.c
new file mode 100644
index 0000000..944494d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128-timode-3.c
@@ -0,0 +1,23 @@
+/* Test for correct rounding of conversions from __int128 to
+ __float128. */
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-require-effective-target int128 } */
+/* { dg-options "-frounding-math" } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile unsigned long long h = -1ULL;
+ volatile unsigned __int128 u128 = (((unsigned __int128) h) << 64) | h;
+ volatile __int128 s128 = u128 >> 1;
+ fesetround (FE_TOWARDZERO);
+ __float128 ru = u128, rs = s128;
+ if (ru != 0x1.ffffffffffffffffffffffffffffp127q)
+ abort ();
+ if (rs != 0x1.ffffffffffffffffffffffffffffp126q)
+ abort ();
+ exit (0);
+}