aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-02-12 23:24:49 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2014-02-12 23:24:49 +0000
commit9acf28f153b65a5846fa05db300ed0442942ed2f (patch)
treea4459861fa9875cdaf31855a407a355d3c33e063 /gcc
parentf494a60736382fadf1b11f39c754fcfd2346b946 (diff)
downloadgcc-9acf28f153b65a5846fa05db300ed0442942ed2f.zip
gcc-9acf28f153b65a5846fa05db300ed0442942ed2f.tar.gz
gcc-9acf28f153b65a5846fa05db300ed0442942ed2f.tar.bz2
float128-mul-underflow.c, [...]: New tests.
gcc/testsuite: * gcc.dg/torture/float128-mul-underflow.c, gcc.dg/torture/float128-truncdf-underflow.c, gcc.dg/torture/float128-truncsf-underflow.c: New tests. libgcc: * 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. * config/aarch64/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): New macro. * config/arm/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/c6x/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/cris/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/i386/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/ia64/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/lm32/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/mips/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/moxie/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/nds32/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/nios2/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/rs6000/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/score/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/tilegx/sfp-machine32.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/tilegx/sfp-machine64.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * config/tilepro/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. From-SVN: r207742
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-mul-underflow.c21
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-truncdf-underflow.c27
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-truncsf-underflow.c27
4 files changed, 81 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a7f2511..0f1bcd4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2014-02-12 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/torture/float128-mul-underflow.c,
+ gcc.dg/torture/float128-truncdf-underflow.c,
+ gcc.dg/torture/float128-truncsf-underflow.c: New tests.
+
2014-02-12 Jakub Jelinek <jakub@redhat.com>
PR middle-end/59737
diff --git a/gcc/testsuite/gcc.dg/torture/float128-mul-underflow.c b/gcc/testsuite/gcc.dg/torture/float128-mul-underflow.c
new file mode 100644
index 0000000..e3ebfff
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-mul-underflow.c
@@ -0,0 +1,21 @@
+/* Test __float128 multiplication uses after-rounding tininess
+ detection. */
+
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "" } */
+/* { dg-require-effective-target fenv_exceptions } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile __float128 a = 0x1.fffffffffffffffp-16382q, b = 0x1.0000000000000008p-1q, c;
+ c = a * b;
+ if (fetestexcept (FE_UNDERFLOW))
+ abort ();
+ if (c != 0x1p-16382q)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/float128-truncdf-underflow.c b/gcc/testsuite/gcc.dg/torture/float128-truncdf-underflow.c
new file mode 100644
index 0000000..83b0538
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-truncdf-underflow.c
@@ -0,0 +1,27 @@
+/* Test truncation from __float128 to double uses after-rounding
+ tininess detection. */
+
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "" } */
+/* { dg-require-effective-target fenv_exceptions } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile __float128 a = 0x0.fffffffffffffffp-1022q, b = 0x0.fffffffffffff8p-1022q;
+ volatile double r;
+ r = (double) a;
+ if (fetestexcept (FE_UNDERFLOW))
+ abort ();
+ if (r != 0x1p-1022)
+ abort ();
+ r = (double) b;
+ if (!fetestexcept (FE_UNDERFLOW))
+ abort ();
+ if (r != 0x1p-1022)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/float128-truncsf-underflow.c b/gcc/testsuite/gcc.dg/torture/float128-truncsf-underflow.c
new file mode 100644
index 0000000..3f1a713
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/float128-truncsf-underflow.c
@@ -0,0 +1,27 @@
+/* Test truncation from __float128 to float uses after-rounding
+ tininess detection. */
+
+/* { dg-do run { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "" } */
+/* { dg-require-effective-target fenv_exceptions } */
+
+#include <fenv.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+ volatile __float128 a = 0x0.ffffffffffp-126q, b = 0x0.ffffffp-126q;
+ volatile float r;
+ r = (float) a;
+ if (fetestexcept (FE_UNDERFLOW))
+ abort ();
+ if (r != 0x1p-126f)
+ abort ();
+ r = (float) b;
+ if (!fetestexcept (FE_UNDERFLOW))
+ abort ();
+ if (r != 0x1p-126f)
+ abort ();
+ exit (0);
+}