1 /* { dg-additional-options "-msse4" { target sse4_runtime } } */ 2 3 #include "tree-vect.h" 4 5 #define N 128 6 7 static inline void vfoo64(unsigned long long * a)8vfoo64 (unsigned long long* a) 9 { 10 int i = 0; 11 for (i = 0; i < N; ++i) 12 a[i] = __builtin_bswap64 (a[i]); 13 } 14 15 int main(void)16main (void) 17 { 18 unsigned long long arr[N]; 19 unsigned long long 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_bswap64 (i); 28 asm volatile ("" ::: "memory"); 29 } 30 31 vfoo64 (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 } } } } */ 43