1 /* { dg-do run } */ 2 /* { dg-require-effective-target avx } */ 3 /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ 4 5 #include "avx-check.h" 6 7 #define N 4 8 9 double a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35, 546.46 }; 10 double b[N]; 11 double c[N]; 12 13 void foo(void)14foo (void) 15 { 16 int i; 17 18 for (i = 0; i < N; i++) 19 b[i] = a[i+3] * 2; 20 } 21 22 __attribute__ ((noinline)) 23 double bar(double x)24bar (double x) 25 { 26 return x * 2; 27 } 28 29 void avx_test(void)30avx_test (void) 31 { 32 int i; 33 34 foo (); 35 36 for (i = 0; i < N; i++) 37 c[i] = bar (a[i+3]); 38 39 for (i = 0; i < N; i++) 40 if (b[i] != c[i]) 41 abort (); 42 } 43