PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512f-ceil-sfix-vec-1.c
blobd7d6916631702fb7030d7cd51caa205b8662afeb
1 /* { dg-do run } */
2 /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */
3 /* { dg-require-effective-target avx512f } */
4 /* { dg-skip-if "no M_PI" { vxworks_kernel } } */
6 #define __NO_MATH_INLINES
7 #include <math.h>
8 #include "avx512f-check.h"
10 extern double ceil (double);
12 #define NUM 64
14 static void
15 __attribute__((__target__("fpmath=sse")))
16 init_src (double *src)
18 int i, sign = 1;
19 double f = rand ();
21 for (i = 0; i < NUM; i++)
23 src[i] = (i + 1) * f * M_PI * sign;
24 if (i < (NUM / 2))
26 if ((i % 6) == 0)
27 f = f * src[i];
29 else if (i == (NUM / 2))
30 f = rand ();
31 else if ((i % 6) == 0)
32 f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
33 sign = -sign;
37 static void
38 __attribute__((__target__("fpmath=387")))
39 avx512f_test (void)
41 double a[NUM];
42 int r[NUM];
43 int i;
45 init_src (a);
47 for (i = 0; i < NUM; i++)
48 r[i] = (int) ceil (a[i]);
50 /* check results: */
51 for (i = 0; i < NUM; i++)
52 if (r[i] != (int) ceil (a[i]))
53 abort();