| /* { dg-do run } */ | |
| /* { dg-require-effective-target avx } */ | |
| /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ | |
| #include "avx-check.h" | |
| #define N 8 | |
| float a[N] = { 24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4 }; | |
| float b[N+3]; | |
| float c[N+3]; | |
| void | |
| foo (void) | |
| { | |
| int i; | |
| for (i = 0; i < N; i++) | |
| b[i+3] = a[i] * 2; | |
| } | |
| __attribute__ ((noinline)) | |
| float | |
| bar (float x) | |
| { | |
| return x * 2; | |
| } | |
| void | |
| avx_test (void) | |
| { | |
| int i; | |
| foo (); | |
| for (i = 0; i < N; i++) | |
| c[i+3] = bar (a[i]); | |
| for (i = 0; i < N; i++) | |
| if (b[i+3] != c[i+3]) | |
| abort (); | |
| } |