| /* { dg-require-effective-target vect_int } */ |
| |
| #include "tree-vect.h" |
| |
| int __attribute__((noipa)) |
| bar (unsigned int *x, int n) |
| { |
| int sum = 4; |
| x = __builtin_assume_aligned (x, __BIGGEST_ALIGNMENT__); |
| for (int i = 0; i < n; ++i) |
| sum += x[i*4+0]+ x[i*4 + 1] + x[i*4 + 2] + x[i*4 + 3]; |
| return sum; |
| } |
| |
| int |
| main () |
| { |
| static int a[16] __attribute__((aligned(__BIGGEST_ALIGNMENT__))) |
| = { 1, 3, 5, 8, 9, 10, 17, 18, 23, 29, 30, 55, 42, 2, 3, 1 }; |
| check_vect (); |
| if (bar (a, 4) != 260) |
| abort (); |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */ |
| /* { dg-final { scan-tree-dump "Loop contains only SLP stmts" "vect" } } */ |
| /* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */ |