1 /* { dg-do run { target { whole_vector_shift || vect_logical_reduc } } } */
3 /* Write a reduction loop to be reduced using vector shifts and folded. */
8 #define N (VECTOR_BITS / 8)
13 extern void abort(void);
16 main (unsigned char argc
, char **argv
)
18 unsigned char in
[N
] __attribute__((aligned(16)));
20 unsigned char sum
= 1;
21 unsigned char expected
= 1;
25 for (i
= 0; i
< N
; i
++)
27 in
[i
] = (i
+ i
+ 1) & 0xfd;
28 asm volatile ("" ::: "memory");
31 for (i
= 0; i
< N
; i
++)
34 asm volatile ("" ::: "memory");
37 for (i
= 0; i
< N
; i
++)
42 __builtin_printf("Failed %d\n", sum
);
49 /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" { target { ! vect_logical_reduc } } } } */
50 /* { dg-final { scan-tree-dump "Reduce using direct vector reduction" "vect" { target vect_logical_reduc } } } */