aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386')
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceil-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceil-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-copysign-vec.c25
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-copysignf-vec.c25
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c60
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-cvt-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floor-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floor-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floorf-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floorf-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-lrint-vec.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-recip-vec.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rint-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rint-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rintf-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rintf-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-round-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-round-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-roundf-sfix-vec.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-roundf-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-trunc-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-truncf-vec.c51
-rw-r--r--gcc/testsuite/gcc.target/i386/pr51235.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/pr51236.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-recip-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c60
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c62
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sw-1.c2
56 files changed, 1185 insertions, 555 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
new file mode 100644
index 00000000000..bf48b80717b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "avx-check.h"
+#endif
+
+#ifndef TEST
+#define TEST avx_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double ceil (double);
+
+#define NUM 4
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) ceil (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) ceil (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-vec.c
new file mode 100644
index 00000000000..ac0911fe844
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-ceil-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
index e917e31b4ef..0e76ab8026c 100644
--- a/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern double ceil (double);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (double *src)
-{
- int i, sign = 1;
- double f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- double a[NUM];
- double r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = ceil (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != ceil (a[i]))
- abort();
-}
+#include "sse4_1-ceil-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c
new file mode 100644
index 00000000000..789b78e76a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-ceilf-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
index ef316214d8a..c324a9b4f4f 100644
--- a/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern float ceilf (float);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (float *src)
-{
- int i, sign = 1;
- float f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- float a[NUM];
- float r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = ceilf (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != ceilf (a[i]))
- abort();
-}
+#include "sse4_1-ceilf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-copysign-vec.c b/gcc/testsuite/gcc.target/i386/avx-copysign-vec.c
index 130c4066be8..9b45a093a76 100644
--- a/gcc/testsuite/gcc.target/i386/avx-copysign-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-copysign-vec.c
@@ -2,26 +2,7 @@
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -ftree-vectorize -mavx -mtune=generic" } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-extern double copysign (double, double);
-
-#define N 16
-
-double a[N] = {-0.1,-3.2,-6.3,-9.4,-12.5,-15.6,-18.7,-21.8,24.9,27.1,30.2,33.3,36.4,39.5,42.6,45.7};
-double b[N] = {-1.2,3.4,-5.6,7.8,-9.0,1.0,-2.0,3.0,-4.0,-5.0,6.0,7.0,-8.0,-9.0,10.0,11.0};
-double r[N];
-
-static void
-avx_test (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- r[i] = copysign (a[i], b[i]);
-
- /* check results: */
- for (i = 0; i < N; i++)
- if (r[i] != copysign (a[i], b[i]))
- abort ();
-}
+#include "sse2-copysign-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-copysignf-vec.c b/gcc/testsuite/gcc.target/i386/avx-copysignf-vec.c
index 9ed3ab727cb..00aa6f57ffa 100644
--- a/gcc/testsuite/gcc.target/i386/avx-copysignf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-copysignf-vec.c
@@ -2,26 +2,7 @@
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -ftree-vectorize -mavx -mtune=generic" } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-extern float copysignf (float, float);
-
-#define N 16
-
-float a[N] = {-0.1f,-3.2f,-6.3f,-9.4f,-12.5f,-15.6f,-18.7f,-21.8f,24.9f,27.1f,30.2f,33.3f,36.4f,39.5f,42.6f,45.7f};
-float b[N] = {-1.2f,3.4f,-5.6f,7.8f,-9.0f,1.0f,-2.0f,3.0f,-4.0f,-5.0f,6.0f,7.0f,-8.0f,-9.0f,10.0f,11.0f};
-float r[N];
-
-static void
-avx_test (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- r[i] = copysignf (a[i], b[i]);
-
- /* check results: */
- for (i = 0; i < N; i++)
- if (r[i] != copysignf (a[i], b[i]))
- abort ();
-}
+#include "sse-copysignf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
new file mode 100644
index 00000000000..0081dcf3812
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
@@ -0,0 +1,60 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "avx-check.h"
+#endif
+
+#ifndef TEST
+#define TEST avx_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+#define NUM 4
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=sse")))
+TEST (void)
+{
+ double a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (float) a[i];
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (float) a[i])
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-cvt-vec.c b/gcc/testsuite/gcc.target/i386/avx-cvt-vec.c
new file mode 100644
index 00000000000..4dcfa398954
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-cvt-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse2-cvt-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
new file mode 100644
index 00000000000..275199cf8f0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "avx-check.h"
+#endif
+
+#ifndef TEST
+#define TEST avx_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double floor (double);
+
+#define NUM 4
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) floor (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) floor (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-floor-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-vec.c
new file mode 100644
index 00000000000..efa557cf791
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-floor-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-floor-vec.c b/gcc/testsuite/gcc.target/i386/avx-floor-vec.c
index 55f8f14c090..1d7fe504317 100644
--- a/gcc/testsuite/gcc.target/i386/avx-floor-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-floor-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern double floor (double);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (double *src)
-{
- int i, sign = 1;
- double f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- double a[NUM];
- double r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = floor (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != floor (a[i]))
- abort();
-}
+#include "sse4_1-floor-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-floorf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-floorf-sfix-vec.c
new file mode 100644
index 00000000000..0c1587a1209
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-floorf-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-floorf-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c b/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
index 00348114c8c..73da85be9e1 100644
--- a/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern float floorf (float);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (float *src)
-{
- int i, sign = 1;
- float f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- float a[NUM];
- float r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = floorf (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != floorf (a[i]))
- abort();
-}
+#include "sse4_1-floorf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-lrint-vec.c b/gcc/testsuite/gcc.target/i386/avx-lrint-vec.c
new file mode 100644
index 00000000000..2df65d2035d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-lrint-vec.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse2-lrint-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c b/gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
new file mode 100644
index 00000000000..e08b2f5657d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse2-lrintf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-recip-vec.c b/gcc/testsuite/gcc.target/i386/avx-recip-vec.c
new file mode 100644
index 00000000000..efeff7ece83
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-recip-vec.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx -mfpmath=sse -mrecip" } */
+/* { dg-require-effective-target avx } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse-recip-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
new file mode 100644
index 00000000000..9f273af5cbb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "avx-check.h"
+#endif
+
+#ifndef TEST
+#define TEST avx_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double rint (double);
+
+#define NUM 4
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) rint (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) rint (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-rint-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-vec.c
new file mode 100644
index 00000000000..824f2eb7d52
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-rint-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-rint-vec.c b/gcc/testsuite/gcc.target/i386/avx-rint-vec.c
index dc8c61017c3..c1d420c6c36 100644
--- a/gcc/testsuite/gcc.target/i386/avx-rint-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-rint-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern double rint (double);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (double *src)
-{
- int i, sign = 1;
- double f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- double a[NUM];
- double r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = rint (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != rint (a[i]))
- abort();
-}
+#include "sse4_1-rint-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-rintf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-rintf-sfix-vec.c
new file mode 100644
index 00000000000..e5ddf790d75
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-rintf-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-rintf-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c b/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c
index 4d77bf25b29..caf365da685 100644
--- a/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern float rintf (float);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (float *src)
-{
- int i, sign = 1;
- float f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- float a[NUM];
- float r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = rintf (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != rintf (a[i]))
- abort();
-}
+#include "sse4_1-rintf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
new file mode 100644
index 00000000000..ddb46d9252a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "avx-check.h"
+#endif
+
+#ifndef TEST
+#define TEST avx_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double round (double);
+
+#define NUM 4
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) round (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) round (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-round-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-round-sfix-vec.c
new file mode 100644
index 00000000000..5adfffa5f10
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-round-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-round-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-round-vec.c b/gcc/testsuite/gcc.target/i386/avx-round-vec.c
index 4cfb11ba7cd..c43c057049d 100644
--- a/gcc/testsuite/gcc.target/i386/avx-round-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-round-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern double round (double);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (double *src)
-{
- int i, sign = 1;
- double f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- double a[NUM];
- double r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = round (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != round (a[i]))
- abort();
-}
+#include "sse4_1-round-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-roundf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/avx-roundf-sfix-vec.c
new file mode 100644
index 00000000000..1fd4591233d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-roundf-sfix-vec.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-roundf-sfix-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-roundf-vec.c b/gcc/testsuite/gcc.target/i386/avx-roundf-vec.c
index ec4c16691c2..978013eb126 100644
--- a/gcc/testsuite/gcc.target/i386/avx-roundf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-roundf-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern float roundf (float);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (float *src)
-{
- int i, sign = 1;
- float f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- float a[NUM];
- float r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = roundf (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != roundf (a[i]))
- abort();
-}
+#include "sse4_1-roundf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c b/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c
index 0b37eb4e04a..a1ee6d461f3 100644
--- a/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern double trunc (double);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (double *src)
-{
- int i, sign = 1;
- double f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- double a[NUM];
- double r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = trunc (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != trunc (a[i]))
- abort();
-}
+#include "sse4_1-truncf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c b/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c
index 099ff824624..a1ee6d461f3 100644
--- a/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c
@@ -3,52 +3,7 @@
/* { dg-require-effective-target avx } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "avx-check.h"
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
-#include <math.h>
-
-extern float truncf (float);
-
-#define NUM 64
-
-static void
-__attribute__((__target__("fpmath=sse")))
-init_src (float *src)
-{
- int i, sign = 1;
- float f = rand ();
-
- for (i = 0; i < NUM; i++)
- {
- src[i] = (i + 1) * f * M_PI * sign;
- if (i < (NUM / 2))
- {
- if ((i % 6) == 0)
- f = f * src[i];
- }
- else if (i == (NUM / 2))
- f = rand ();
- else if ((i % 6) == 0)
- f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
- sign = -sign;
- }
-}
-
-static void
-__attribute__((__target__("fpmath=387")))
-avx_test (void)
-{
- float a[NUM];
- float r[NUM];
- int i;
-
- init_src (a);
-
- for (i = 0; i < NUM; i++)
- r[i] = truncf (a[i]);
-
- /* check results: */
- for (i = 0; i < NUM; i++)
- if (r[i] != truncf (a[i]))
- abort();
-}
+#include "sse4_1-truncf-vec.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr51235.c b/gcc/testsuite/gcc.target/i386/pr51235.c
new file mode 100644
index 00000000000..c99d5c0e733
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr51235.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -mxop -mavx2" } */
+
+void *foo (int count, void **list)
+{
+ void *minaddr = list[0];
+ int i;
+
+ for (i = 1; i < count; i++)
+ {
+ void *addr = list[i];
+ if (addr < minaddr)
+ minaddr = addr;
+ }
+
+ return minaddr;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr51236.c b/gcc/testsuite/gcc.target/i386/pr51236.c
new file mode 100644
index 00000000000..63bfaeeb0eb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr51236.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -mavx2" } */
+
+long foo (long *p, int i)
+{
+ long x = 0;
+
+ while (--i)
+ x ^= p[i];
+
+ return x;
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c b/gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c
index bd85889503d..5b1cfe795f2 100644
--- a/gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c
@@ -2,7 +2,15 @@
/* { dg-options "-O2 -ftree-vectorize -msse" } */
/* { dg-require-effective-target sse } */
-#include "sse-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse_test
+#endif
+
+#include CHECK_H
extern float copysignf (float, float);
@@ -13,7 +21,7 @@ float b[N] = {-1.2f,3.4f,-5.6f,7.8f,-9.0f,1.0f,-2.0f,3.0f,-4.0f,-5.0f,6.0f,7.0f,
float r[N];
static void
-sse_test (void)
+TEST (void)
{
int i;
diff --git a/gcc/testsuite/gcc.target/i386/sse-recip-vec.c b/gcc/testsuite/gcc.target/i386/sse-recip-vec.c
index bb1e458f92d..de2f3d29775 100644
--- a/gcc/testsuite/gcc.target/i386/sse-recip-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse-recip-vec.c
@@ -2,7 +2,15 @@
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip" } */
/* { dg-require-effective-target sse } */
-#include "sse-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse_test
+#endif
+
+#include CHECK_H
extern float sqrtf (float);
extern float fabsf (float);
@@ -16,7 +24,7 @@ float r[N];
float rc[N] = { 0.f, 3.f, 6.f, 9.f, 12.f, 18.f, 21.f, 27.f };
static void
-sse_test (void)
+TEST (void)
{
int i;
diff --git a/gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c b/gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c
index 5726448d76c..b336b3284d0 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c
@@ -2,7 +2,15 @@
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
/* { dg-require-effective-target sse2 } */
-#include "sse2-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
extern double copysign (double, double);
@@ -13,7 +21,7 @@ double b[N] = {-1.2,3.4,-5.6,7.8,-9.0,1.0,-2.0,3.0,-4.0,-5.0,6.0,7.0,-8.0,-9.0,1
double r[N];
static void
-sse2_test (void)
+TEST (void)
{
int i;
diff --git a/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
new file mode 100644
index 00000000000..8a811a3defe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
@@ -0,0 +1,60 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=sse")))
+TEST (void)
+{
+ double a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (float) a[i];
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (float) a[i])
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c b/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
index 43797f70782..111e9b2740e 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
@@ -2,7 +2,15 @@
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2" } */
/* { dg-require-effective-target sse2 } */
-#include "sse2-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
extern long lrint (double);
@@ -12,7 +20,7 @@ double a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5
long r[N];
static void
-sse2_test (void)
+TEST (void)
{
int i;
diff --git a/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c b/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c
index eaec22cb3a3..ee917623cbd 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c
@@ -2,7 +2,15 @@
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2" } */
/* { dg-require-effective-target sse2 } */
-#include "sse2-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
extern long lrintf (float);
@@ -12,7 +20,7 @@ float a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5,
long r[N];
static void
-sse2_test (void)
+TEST (void)
{
int i;
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
new file mode 100644
index 00000000000..ca07d9c003f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double ceil (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) ceil (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) ceil (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
index 886dd77c206..20bb2641fac 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (double *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
double a[NUM];
double r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
new file mode 100644
index 00000000000..b0559bf3995
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern float ceilf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ float a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) ceilf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) ceilf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
index 41d59d74eac..314be91fa6c 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (float *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
float a[NUM];
float r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
new file mode 100644
index 00000000000..2083a60e7fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double floor (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) floor (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) floor (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
index 02ebe62ec7b..d250413c1b7 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (double *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
double a[NUM];
double r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
new file mode 100644
index 00000000000..aa2976d5b0a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern float floorf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ float a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) floorf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) floorf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
index 6704892df53..2f339f3b50e 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (float *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
float a[NUM];
float r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
new file mode 100644
index 00000000000..d9c2fbf2d37
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double rint (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) rint (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) rint (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
index 8df5717a23d..f20359a1ae2 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (double *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
double a[NUM];
double r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
new file mode 100644
index 00000000000..1d25f7669d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern float rintf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ float a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) rintf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) rintf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
index 9c97c35bed9..716cad1e3ff 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (float *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
float a[NUM];
float r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
new file mode 100644
index 00000000000..9abbe55b7d7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern double round (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ double a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) round (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) round (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
index dcd36cd2b11..bb912cef955 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (double *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
double a[NUM];
double r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
new file mode 100644
index 00000000000..5384e5c62c5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <math.h>
+
+extern float roundf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+TEST (void)
+{
+ float a[NUM];
+ int r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = (int) roundf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != (int) roundf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
index d64660a1a91..d254aa66b89 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (float *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
float a[NUM];
float r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
index e82dec93f88..9cbcd9b3985 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (double *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
double a[NUM];
double r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
index 6a267ca94d6..815b5081433 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
@@ -3,7 +3,15 @@
/* { dg-require-effective-target sse4 } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
#include <math.h>
@@ -36,7 +44,7 @@ init_src (float *src)
static void
__attribute__((__target__("fpmath=387")))
-sse4_1_test (void)
+TEST (void)
{
float a[NUM];
float r[NUM];
diff --git a/gcc/testsuite/gcc.target/i386/sw-1.c b/gcc/testsuite/gcc.target/i386/sw-1.c
index e3d3b914860..483d117ecb7 100644
--- a/gcc/testsuite/gcc.target/i386/sw-1.c
+++ b/gcc/testsuite/gcc.target/i386/sw-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fshrink-wrap -fdump-rtl-pro_and_epilogue -mstringop-strategy=rep_byte" } */
+/* { dg-options "-O2 -fshrink-wrap -fdump-rtl-pro_and_epilogue" } */
#include <string.h>