summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/math-torture
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.target/i386/math-torture
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/math-torture')
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/ceil.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/floor.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/lceil.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/lfloor.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/lrint.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/lround.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp70
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/rint.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/round.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/trunc.c14
11 files changed, 263 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/ceil.c b/gcc/testsuite/gcc.target/i386/math-torture/ceil.c
new file mode 100644
index 000000000..dfccd7af4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/ceil.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_ceilf (x);
+}
+double testl (double x)
+{
+ return __builtin_ceil (x);
+}
+long double testll (long double x)
+{
+ return __builtin_ceill (x);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/floor.c b/gcc/testsuite/gcc.target/i386/math-torture/floor.c
new file mode 100644
index 000000000..0c3aa9156
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/floor.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_floorf (x);
+}
+double testl (double x)
+{
+ return __builtin_floor (x);
+}
+long double testll (long double x)
+{
+ return __builtin_floorl (x);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/lceil.c b/gcc/testsuite/gcc.target/i386/math-torture/lceil.c
new file mode 100644
index 000000000..d09847904
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/lceil.c
@@ -0,0 +1,26 @@
+/* { dg-do assemble } */
+
+long testlf (float x)
+{
+ return __builtin_lceilf (x);
+}
+long testl (double x)
+{
+ return __builtin_lceil (x);
+}
+long testll (long double x)
+{
+ return __builtin_lceill (x);
+}
+long long testllf (float x)
+{
+ return __builtin_llceilf (x);
+}
+long long testll_ (double x)
+{
+ return __builtin_llceil (x);
+}
+long long testlll (long double x)
+{
+ return __builtin_llceill (x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/lfloor.c b/gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
new file mode 100644
index 000000000..2c2e96f2e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
@@ -0,0 +1,26 @@
+/* { dg-do assemble } */
+
+long testlf (float x)
+{
+ return __builtin_lfloorf (x);
+}
+long testl (double x)
+{
+ return __builtin_lfloor (x);
+}
+long testll (long double x)
+{
+ return __builtin_lfloorl (x);
+}
+long long testllf (float x)
+{
+ return __builtin_llfloorf (x);
+}
+long long testll_ (double x)
+{
+ return __builtin_llfloor (x);
+}
+long long testlll (long double x)
+{
+ return __builtin_llfloorl (x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/lrint.c b/gcc/testsuite/gcc.target/i386/math-torture/lrint.c
new file mode 100644
index 000000000..73b75b7ad
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/lrint.c
@@ -0,0 +1,26 @@
+/* { dg-do assemble } */
+
+long testlf (float x)
+{
+ return __builtin_lrintf (x);
+}
+long testl (double x)
+{
+ return __builtin_lrint (x);
+}
+long testll (long double x)
+{
+ return __builtin_lrintl (x);
+}
+long long testllf (float x)
+{
+ return __builtin_llrintf (x);
+}
+long long testll_ (double x)
+{
+ return __builtin_llrint (x);
+}
+long long testlll (long double x)
+{
+ return __builtin_llrintl (x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/lround.c b/gcc/testsuite/gcc.target/i386/math-torture/lround.c
new file mode 100644
index 000000000..756356d62
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/lround.c
@@ -0,0 +1,26 @@
+/* { dg-do assemble } */
+
+long testlf (float x)
+{
+ return __builtin_lroundf (x);
+}
+long testl (double x)
+{
+ return __builtin_lround (x);
+}
+long testll (long double x)
+{
+ return __builtin_lroundl (x);
+}
+long long testllf (float x)
+{
+ return __builtin_llroundf (x);
+}
+long long testll_ (double x)
+{
+ return __builtin_llround (x);
+}
+long long testlll (long double x)
+{
+ return __builtin_llroundl (x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
new file mode 100644
index 000000000..2b1d63de1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
@@ -0,0 +1,70 @@
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# This harness is for tests that should be run at all optimisation levels.
+
+load_lib target-supports.exp
+
+# Exit immediately if this isn't a x86 target.
+if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
+ return
+}
+
+set MATH_TORTURE_OPTIONS [list \
+ { -O0 } \
+ { -O0 -mfpmath=387 } \
+ { -O0 -mfpmath=387 -ffast-math } \
+ { -O2 } \
+ { -O2 -mfpmath=387 } \
+ { -O2 -mfpmath=387 -ffast-math } \
+]
+
+if { [check_effective_target_sse] } {
+ lappend MATH_TORTURE_OPTIONS \
+ { -O0 -msse -mno-sse2 -mfpmath=sse } \
+ { -O0 -msse -mno-sse2 -mfpmath=sse,387 } \
+ { -O0 -msse -mno-sse2 -mfpmath=sse -ffast-math } \
+ { -O0 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \
+ { -O2 -msse -mno-sse2 -mfpmath=sse } \
+ { -O2 -msse -mno-sse2 -mfpmath=sse,387 } \
+ { -O2 -msse -mno-sse2 -mfpmath=sse -ffast-math } \
+ { -O2 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \
+}
+
+if { [check_effective_target_sse2] } {
+ lappend MATH_TORTURE_OPTIONS \
+ { -O0 -msse -msse2 -mfpmath=sse } \
+ { -O0 -msse -msse2 -mfpmath=sse,387 } \
+ { -O0 -msse -msse2 -mfpmath=sse -ffast-math } \
+ { -O0 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
+ { -O2 -msse -msse2 -mfpmath=sse } \
+ { -O2 -msse -msse2 -mfpmath=sse,387 } \
+ { -O2 -msse -msse2 -mfpmath=sse -ffast-math } \
+ { -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
+}
+
+load_lib gcc-dg.exp
+load_lib torture-options.exp
+
+torture-init
+set-torture-options $MATH_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
+
+dg-init
+gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] ""
+torture-finish
+dg-finish
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c b/gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
new file mode 100644
index 000000000..dd646f012
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_nearbyintf (x);
+}
+double testl (double x)
+{
+ return __builtin_nearbyint (x);
+}
+long double testll (long double x)
+{
+ return __builtin_nearbyintl (x);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/rint.c b/gcc/testsuite/gcc.target/i386/math-torture/rint.c
new file mode 100644
index 000000000..f9dfff7ca
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/rint.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_rintf (x);
+}
+double testl (double x)
+{
+ return __builtin_rint (x);
+}
+long double testll (long double x)
+{
+ return __builtin_rintl (x);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/round.c b/gcc/testsuite/gcc.target/i386/math-torture/round.c
new file mode 100644
index 000000000..fddac7abb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/round.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_roundf (x);
+}
+double testl (double x)
+{
+ return __builtin_round (x);
+}
+long double testll (long double x)
+{
+ return __builtin_roundl (x);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/trunc.c b/gcc/testsuite/gcc.target/i386/math-torture/trunc.c
new file mode 100644
index 000000000..a71e026c5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/math-torture/trunc.c
@@ -0,0 +1,14 @@
+/* { dg-do assemble } */
+
+float testlf (float x)
+{
+ return __builtin_truncf (x);
+}
+double testl (double x)
+{
+ return __builtin_trunc (x);
+}
+long double testll (long double x)
+{
+ return __builtin_truncl (x);
+}