From ae1f29cb0d93c59b4747ac4c21c598b6fd0c2952 Mon Sep 17 00:00:00 2001 From: uros Date: Tue, 15 Nov 2011 19:40:04 +0000 Subject: [PATCH] * gcc.target/i386/sse2-cvt-vec.c: New test. * gcc.target/i386/avx-cvt-vec.c: Ditto. * gcc.target/i386/avx-cvt-2-vec.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181390 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 ++- gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c | 60 +++++++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/avx-cvt-vec.c | 9 ++++ gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c | 60 +++++++++++++++++++++++++++ 4 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c create mode 100644 gcc/testsuite/gcc.target/i386/avx-cvt-vec.c create mode 100644 gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 876d91897cb..5d012c3d75a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,9 @@ 2011-11-15 Uros Bizjak - * gcc.target/i386/avx-floor-sfix-2-vec.c: New test. + * gcc.target/i386/sse2-cvt-vec.c: New test. + * gcc.target/i386/avx-cvt-vec.c: Ditto. + * gcc.target/i386/avx-cvt-2-vec.c: Ditto. + * gcc.target/i386/avx-floor-sfix-2-vec.c: Ditto. * gcc.target/i386/avx-ceil-sfix-2-vec.c: Ditto. * gcc.target/i386/avx-rint-sfix-2-vec.c: Ditto. * gcc.target/i386/avx-round-sfix-2-vec.c: Ditto. 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 + +#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/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 + +#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(); +} -- 2.11.0