1 /* { dg-require-effective-target vect_int } */
2 /* { dg-additional-options "-O3" } */
8 void __attribute__((noinline,noclone)) \
9 foo_ ## T ## _ ## N (T * __restrict__ in_, T * __restrict__ out_, int s) \
11 T *in = __builtin_assume_aligned (in_, __BIGGEST_ALIGNMENT__); \
12 T *out = __builtin_assume_aligned (out_, __BIGGEST_ALIGNMENT__); \
13 for (int i = 0; i < 16; i++) \
15 for (int j = 0; j < N; ++j) \
24 memset (out, 0, 4096); \
25 foo_ ## T ## _ ## N ((T *)in, (T *)out, 1); \
26 if (memcmp (in, out, sizeof (T) * 16 * N) != 0) \
28 for (int i = sizeof (T) * 16 * N; i < 4096; ++i) \
47 char in
[4096] __attribute__((aligned(__BIGGEST_ALIGNMENT__
)));
48 char out
[4096] __attribute__((aligned(__BIGGEST_ALIGNMENT__
)));
54 for (int i
= 0; i
< 4096; ++i
)
57 __asm__
volatile ("" : : : "memory");
77 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 13 "vect" { target vect_hw_misalign } } } */
78 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { ! vect_hw_misalign } } } } */