| /* { dg-require-effective-target vect_long_long } */ |
| |
| #include "tree-vect.h" |
| |
| long long x[24]; |
| long long y[16]; |
| long long z[8]; |
| |
| void __attribute__((noinline)) foo() |
| { |
| for (int i = 0; i < 8; ++i) |
| { |
| y[2*i] = x[3*i]; |
| y[2*i + 1] = x[3*i + 1]; |
| z[i] = 1; |
| } |
| } |
| |
| int main() |
| { |
| check_vect (); |
| |
| for (int i = 0; i < 24; ++i) |
| { |
| x[i] = i; |
| __asm__ volatile ("" : : : "memory"); |
| } |
| foo (); |
| for (int i = 0; i < 8; ++i) |
| if (y[2*i] != 3*i || y[2*i+1] != 3*i + 1) |
| __builtin_abort (); |
| |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */ |