/* { 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 (); | |
} |