| /* { dg-do run } */ |
| /* { dg-require-effective-target avx } */ |
| /* { dg-options "-O3 -ffast-math -fschedule-insns -mavx -mvzeroupper" } */ |
| |
| #include "avx-check.h" |
| |
| #define N 100 |
| |
| double |
| __attribute__((noinline)) |
| foo (int size, double *y, double *x) |
| { |
| double sum = 0.0; |
| int i; |
| |
| for (i = 0; i < size; i++) |
| sum += y[i] * x[i]; |
| |
| return sum; |
| } |
| |
| static void |
| __attribute__ ((noinline)) |
| avx_test () |
| { |
| double x[N], y[N]; |
| double s; |
| int i; |
| |
| for (i = 0; i < N; i++) |
| { |
| x[i] = i; |
| y[i] = i; |
| } |
| |
| s = foo (N, y, x); |
| |
| if (s != 328350.0) |
| abort (); |
| } |