diff mbox

[Testsuite] Force testing of vectorized builtins rather than inlined i387 asm

Message ID 20160520180120.GA64529@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Ilya Verbin May 20, 2016, 6:01 p.m. UTC
Hi!

In some cases the i387 version of a math function may be inlined from math.h,
and the testcase (like gcc.target/i386/sse4_1-ceil-vec.c) will actually test
inlined asm instead of vectorized builtin.  To fix this I've created a new file
gcc.dg/mathfunc.h (similar to gcc.dg/strlenopt.h) and changed vectorization
tests so that they include it instead of math.h.
Regtested on x86_64-linux and i686-linux.  Is it OK for trunk?

gcc/testsuite/
	* gcc.dg/mathfunc.h: New file.
	* gcc.target/i386/avx-ceil-sfix-2-vec.c: Do not skip if there is no M_PI
	for vxworks_kernel.  Include mathfunc.h instead of math.h.  Remove
	declaration.
	* gcc.target/i386/avx-cvt-2-vec.c: Likewise.
	* gcc.target/i386/avx-floor-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx-rint-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx-round-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Likewise.
	* gcc.target/i386/avx512f-floor-sfix-vec-1.c: Likewise.
	* gcc.target/i386/sse2-cvt-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceil-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceilf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floor-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rint-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rintf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-round-vec.c: Likewise.
	* gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-roundf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-trunc-vec.c: Likewise.
	* gcc.target/i386/sse4_1-truncf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.  Use floorf
	instead of __builtin_floorf.
	* gcc.target/i386/sse4_1-floorf-vec.c: Likewise.


 
Thanks,
  -- Ilya

Comments

Uros Bizjak May 21, 2016, 7:51 a.m. UTC | #1
On Fri, May 20, 2016 at 8:01 PM, Ilya Verbin <iverbin@gmail.com> wrote:
> Hi!
>
> In some cases the i387 version of a math function may be inlined from math.h,
> and the testcase (like gcc.target/i386/sse4_1-ceil-vec.c) will actually test
> inlined asm instead of vectorized builtin.  To fix this I've created a new file
> gcc.dg/mathfunc.h (similar to gcc.dg/strlenopt.h) and changed vectorization
> tests so that they include it instead of math.h.
> Regtested on x86_64-linux and i686-linux.  Is it OK for trunk?

No, please just #define NO_MATH_INLINES before math.h is included.
This will solve unwanted inlining.

Uros.

> gcc/testsuite/
>         * gcc.dg/mathfunc.h: New file.
>         * gcc.target/i386/avx-ceil-sfix-2-vec.c: Do not skip if there is no M_PI
>         for vxworks_kernel.  Include mathfunc.h instead of math.h.  Remove
>         declaration.
>         * gcc.target/i386/avx-cvt-2-vec.c: Likewise.
>         * gcc.target/i386/avx-floor-sfix-2-vec.c: Likewise.
>         * gcc.target/i386/avx-rint-sfix-2-vec.c: Likewise.
>         * gcc.target/i386/avx-round-sfix-2-vec.c: Likewise.
>         * gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Likewise.
>         * gcc.target/i386/avx512f-floor-sfix-vec-1.c: Likewise.
>         * gcc.target/i386/sse2-cvt-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-ceil-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-ceilf-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-floor-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-rint-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-rintf-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-round-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-roundf-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-trunc-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-truncf-vec.c: Likewise.
>         * gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.  Use floorf
>         instead of __builtin_floorf.
>         * gcc.target/i386/sse4_1-floorf-vec.c: Likewise.
>
>
> diff --git a/gcc/testsuite/gcc.dg/mathfunc.h b/gcc/testsuite/gcc.dg/mathfunc.h
> new file mode 100644
> index 0000000..1c1b7bc
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/mathfunc.h
> @@ -0,0 +1,20 @@
> +/* This is a replacement of needed parts from math.h for testing vectorization,
> +   to ensure we are testing the builtins rather than whatever the OS has in its
> +   headers.  */
> +
> +#define M_PI  3.14159265358979323846
> +
> +extern double ceil (double);
> +extern float ceilf (float);
> +
> +extern double floor (double);
> +extern float floorf (float);
> +
> +extern double trunc (double);
> +extern float truncf (float);
> +
> +extern double round (double);
> +extern float roundf (float);
> +
> +extern double rint (double);
> +extern float rintf (float);
> 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
> index bf48b80..567a16d 100644
> --- a/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double ceil (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 4
>
> diff --git a/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
> index 0081dcf..8a8369b 100644
> --- a/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,7 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 4
>
> 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
> index 275199c..44002b4 100644
> --- a/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double floor (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 4
>
> 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
> index 9f273af..980b341 100644
> --- a/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double rint (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 4
>
> 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
> index ddb46d9..18cfc6b 100644
> --- a/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double round (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 4
>
> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
> index 038d25e..cb342b2 100644
> --- a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
> +++ b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
> @@ -1,13 +1,10 @@
>  /* { dg-do run } */
>  /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */
>  /* { dg-require-effective-target avx512f } */
> -/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>  #include "avx512f-check.h"
>
> -extern double ceil (double);
> -
>  #define NUM 64
>
>  static void
> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
> index fab7e65..23cbbf0 100644
> --- a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
> +++ b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
> @@ -1,13 +1,10 @@
>  /* { dg-do run } */
>  /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */
>  /* { dg-require-effective-target avx512f } */
> -/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>  #include "avx512f-check.h"
>
> -extern double floor (double);
> -
>  #define NUM 64
>
>  static void
> diff --git a/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
> index 8a811a3..2d89bcf 100644
> --- a/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,7 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index ca07d9c..1479b94 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double ceil (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 20bb264..00b440c 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double ceil (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index b0559bf..d583a4b 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float ceilf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 314be91..7add7d5 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float ceilf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index 2083a60..2fd7573 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double floor (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 d250413..1ec371b 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double floor (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index 7e18b46..efd7962 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,7 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> @@ -51,10 +50,10 @@ TEST (void)
>    init_src (a);
>
>    for (i = 0; i < NUM; i++)
> -    r[i] = (int) __builtin_floorf (a[i]);
> +    r[i] = (int) floorf (a[i]);
>
>    /* check results:  */
>    for (i = 0; i < NUM; i++)
> -    if (r[i] != (int) __builtin_floorf (a[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 019ef89..31637c0 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,7 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> @@ -51,10 +50,10 @@ TEST (void)
>    init_src (a);
>
>    for (i = 0; i < NUM; i++)
> -    r[i] = __builtin_floorf (a[i]);
> +    r[i] = floorf (a[i]);
>
>    /* check results:  */
>    for (i = 0; i < NUM; i++)
> -    if (r[i] != __builtin_floorf (a[i]))
> +    if (r[i] != floorf (a[i]))
>        abort();
>  }
> 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
> index d9c2fbf..f1e2547 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double rint (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 f20359a..d13efbb 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double rint (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index 1d25f76..c105e7e 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float rintf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 716cad1..e758e93 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float rintf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index 9abbe55..98f61ac 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double round (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 bb912cef..64014cc 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double round (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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
> index 5384e5c..dc75562 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float roundf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 d254aa6..f287a57 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float roundf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 9cbcd9b..1fb6ddc 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern double trunc (double);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
> 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 815b508..e5dc9bc 100644
> --- a/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
> +++ b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
> @@ -1,7 +1,6 @@
>  /* { 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"
> @@ -13,9 +12,7 @@
>
>  #include CHECK_H
>
> -#include <math.h>
> -
> -extern float truncf (float);
> +#include "../../gcc.dg/mathfunc.h"
>
>  #define NUM 64
>
>
> Thanks,
>   -- Ilya
diff mbox

Patch

diff --git a/gcc/testsuite/gcc.dg/mathfunc.h b/gcc/testsuite/gcc.dg/mathfunc.h
new file mode 100644
index 0000000..1c1b7bc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/mathfunc.h
@@ -0,0 +1,20 @@ 
+/* This is a replacement of needed parts from math.h for testing vectorization,
+   to ensure we are testing the builtins rather than whatever the OS has in its
+   headers.  */
+
+#define M_PI  3.14159265358979323846
+
+extern double ceil (double);
+extern float ceilf (float);
+
+extern double floor (double);
+extern float floorf (float);
+
+extern double trunc (double);
+extern float truncf (float);
+
+extern double round (double);
+extern float roundf (float);
+
+extern double rint (double);
+extern float rintf (float);
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
index bf48b80..567a16d 100644
--- a/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double ceil (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 4
 
diff --git a/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
index 0081dcf..8a8369b 100644
--- a/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-cvt-2-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,7 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 4
 
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
index 275199c..44002b4 100644
--- a/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-floor-sfix-2-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double floor (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 4
 
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
index 9f273af..980b341 100644
--- a/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double rint (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 4
 
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
index ddb46d9..18cfc6b 100644
--- a/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
+++ b/gcc/testsuite/gcc.target/i386/avx-round-sfix-2-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double round (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 4
 
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
index 038d25e..cb342b2 100644
--- a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
@@ -1,13 +1,10 @@ 
 /* { dg-do run } */
 /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */
 /* { dg-require-effective-target avx512f } */
-/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 #include "avx512f-check.h"
 
-extern double ceil (double);
-
 #define NUM 64
 
 static void
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
index fab7e65..23cbbf0 100644
--- a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c
@@ -1,13 +1,10 @@ 
 /* { dg-do run } */
 /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */
 /* { dg-require-effective-target avx512f } */
-/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 #include "avx512f-check.h"
 
-extern double floor (double);
-
 #define NUM 64
 
 static void
diff --git a/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
index 8a811a3..2d89bcf 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-cvt-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,7 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index ca07d9c..1479b94 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double ceil (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 20bb264..00b440c 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double ceil (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index b0559bf..d583a4b 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float ceilf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 314be91..7add7d5 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float ceilf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index 2083a60..2fd7573 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double floor (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 d250413..1ec371b 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double floor (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index 7e18b46..efd7962 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,7 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
@@ -51,10 +50,10 @@  TEST (void)
   init_src (a);
 
   for (i = 0; i < NUM; i++)
-    r[i] = (int) __builtin_floorf (a[i]);
+    r[i] = (int) floorf (a[i]);
 
   /* check results:  */
   for (i = 0; i < NUM; i++)
-    if (r[i] != (int) __builtin_floorf (a[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 019ef89..31637c0 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,7 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
@@ -51,10 +50,10 @@  TEST (void)
   init_src (a);
 
   for (i = 0; i < NUM; i++)
-    r[i] = __builtin_floorf (a[i]);
+    r[i] = floorf (a[i]);
 
   /* check results:  */
   for (i = 0; i < NUM; i++)
-    if (r[i] != __builtin_floorf (a[i]))
+    if (r[i] != floorf (a[i]))
       abort();
 }
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
index d9c2fbf..f1e2547 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double rint (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 f20359a..d13efbb 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double rint (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index 1d25f76..c105e7e 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float rintf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 716cad1..e758e93 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float rintf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index 9abbe55..98f61ac 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double round (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 bb912cef..64014cc 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double round (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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
index 5384e5c..dc75562 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float roundf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 d254aa6..f287a57 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float roundf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 9cbcd9b..1fb6ddc 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern double trunc (double);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64
 
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 815b508..e5dc9bc 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
@@ -1,7 +1,6 @@ 
 /* { 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"
@@ -13,9 +12,7 @@ 
 
 #include CHECK_H
 
-#include <math.h>
-
-extern float truncf (float);
+#include "../../gcc.dg/mathfunc.h"
 
 #define NUM 64