(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
p10-bifs-vectorize-run-1.c
       1  /* { dg-do run } */
       2  /* The checked bifs are only supported on 64-bit env.  */
       3  /* { dg-require-effective-target lp64 } */
       4  /* { dg-require-effective-target power10_hw } */
       5  /* { dg-options "-mdejagnu-cpu=power10 -O2 -ftree-vectorize -fno-vect-cost-model" } */
       6  
       7  #include "p10-bifs-vectorize-1.h"
       8  
       9  /* Check if vectorized built-in functions run expectedly.  */
      10  
      11  /* Make optimize (1) to avoid vectorization applied on check func.  */
      12  
      13  #define CHECK(name)                                                           \
      14    __attribute__ ((optimize (1))) void check_##name ()                         \
      15    {                                                                           \
      16      test_##name ();                                                           \
      17      for (int i = 0; i < N; i++)                                               \
      18        {                                                                       \
      19  	uLL exp = __builtin_##name (ull_a[i], ull_b[i]);                      \
      20  	if (exp != ull_c[i])                                                  \
      21  	  __builtin_abort ();                                                 \
      22        }                                                                       \
      23    }
      24  
      25  CHECK (cfuged)
      26  CHECK (cntlzdm)
      27  CHECK (cnttzdm)
      28  CHECK (pdepd)
      29  CHECK (pextd)
      30  
      31  int
      32  main ()
      33  {
      34    for (int i = 0; i < N; i++)
      35      {
      36        ull_a[i] = 0x789a * (i * 11 - 5) - 0xcd1 * (i * 5 - 7);
      37        ull_b[i] = 0xfedc * (i * 7 + 3) + 0x467 * (i * 7 - 11);
      38      }
      39  
      40    check_cfuged ();
      41    check_cntlzdm ();
      42    check_cnttzdm ();
      43    check_pdepd ();
      44    check_pextd ();
      45  
      46    return 0;
      47  }
      48