(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-bswap32.c
       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 } } } } */