(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr108699.c
       1  /* { dg-run } */
       2  /* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model" } */
       3  
       4  #define N 16
       5  
       6  unsigned long long vals[N];
       7  unsigned int res[N];
       8  unsigned int expects[N] = {0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       9  
      10  unsigned long long inputs[N]
      11    = {0x0000000000000000ULL, 0x0000000000000001ULL, 0x8000000000000000ULL,
      12       0x0000000000000002ULL, 0x4000000000000000ULL, 0x0000000100000000ULL,
      13       0x0000000080000000ULL, 0xa5a5a5a5a5a5a5a5ULL, 0x5a5a5a5a5a5a5a5aULL,
      14       0xcafecafe00000000ULL, 0x0000cafecafe0000ULL, 0x00000000cafecafeULL,
      15       0x8070600000000000ULL, 0xffffffffffffffffULL};
      16  
      17  __attribute__ ((noipa)) void
      18  init ()
      19  {
      20    for (int i = 0; i < N; i++)
      21      vals[i] = inputs[i];
      22  }
      23  
      24  __attribute__ ((noipa)) void
      25  do_parity ()
      26  {
      27    for (int i = 0; i < N; i++)
      28      res[i] = __builtin_parityll (vals[i]);
      29  }
      30  
      31  int
      32  main (void)
      33  {
      34    init ();
      35    do_parity ();
      36    for (int i = 0; i < N; i++)
      37      if (res[i] != expects[i])
      38        __builtin_abort();
      39  
      40    return 0;
      41  }
      42