1 /* { dg-additional-options "-msse4" { target sse4_runtime } } */
2
3 #include "tree-vect.h"
4
5 #define N 128
6
7 static inline void
8 vfoo32 (unsigned int* a)
9 {
10 int i = 0;
11 for (i = 0; i < N; ++i)
12 a[i] = __builtin_bswap32 (a[i]);
13 }
14
15 int
16 main (void)
17 {
18 unsigned int arr[N];
19 unsigned int expect[N];
20 int i;
21
22 check_vect ();
23
24 for (i = 0; i < N; ++i)
25 {
26 arr[i] = i;
27 expect[i] = __builtin_bswap32 (i);
28 asm volatile ("" ::: "memory");
29 }
30
31 vfoo32 (arr);
32
33 for (i = 0; i < N; ++i)
34 {
35 if (arr[i] != expect[i])
36 abort ();
37 }
38
39 return 0;
40 }
41
42 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_bswap || sse4_runtime } } } } */