1 /* { dg-require-effective-target vect_int } */
2 /* { dg-add-options bind_pic_locally } */
8 #define NINTS (VECTOR_BITS / 32)
9 #define EXTRA (NINTS * 2)
17 #define RES_A (N * N / 4)
18 #define RES_B (N * (N + 1) / 2 + (NINTS + 3) * (N + 1))
19 #define RES_C (N * (N + 1) / 2 + (N + 1))
20 #define RES (RES_A + RES_B + RES_C)
26 __attribute__ ((noinline
))
29 int i
, suma
= 0, sumb
= 0, sumc
= 0;
31 /* ib and ic have same misalignment, we peel to align them. */
32 for (i
= 0; i
<= N
; i
++)
35 sumb
+= ib
[i
+ NINTS
+ 1];
40 if (suma
+ sumb
+ sumc
!= RES
)
52 for (i
= 0; i
< N
+ EXTRA
; i
++)
54 asm volatile ("" : "+r" (i
));
63 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
64 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { ! vect_unaligned_possible } || vect_sizes_32B_16B } } } } */
65 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { ! vect_unaligned_possible } || vect_sizes_32B_16B } } } } */