(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
p9-vparity.c
       1  /* { dg-do compile { target lp64 } } */
       2  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       3  /* { dg-require-effective-target int128 } */
       4  /* { dg-require-effective-target powerpc_p9vector_ok } */
       5  /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
       6  
       7  #include <altivec.h>
       8  
       9  vector int
      10  parity_v4si_1s (vector int a)
      11  {
      12    return vec_vprtyb (a);
      13  }
      14  
      15  vector int
      16  parity_v4si_2s (vector int a)
      17  {
      18    return vec_vprtybw (a);
      19  }
      20  
      21  vector unsigned int
      22  parity_v4si_1u (vector unsigned int a)
      23  {
      24    return vec_vprtyb (a);
      25  }
      26  
      27  vector unsigned int
      28  parity_v4si_2u (vector unsigned int a)
      29  {
      30    return vec_vprtybw (a);
      31  }
      32  
      33  vector long long
      34  parity_v2di_1s (vector long long a)
      35  {
      36    return vec_vprtyb (a);
      37  }
      38  
      39  vector long long
      40  parity_v2di_2s (vector long long a)
      41  {
      42    return vec_vprtybd (a);
      43  }
      44  
      45  vector unsigned long long
      46  parity_v2di_1u (vector unsigned long long a)
      47  {
      48    return vec_vprtyb (a);
      49  }
      50  
      51  vector unsigned long long
      52  parity_v2di_2u (vector unsigned long long a)
      53  {
      54    return vec_vprtybd (a);
      55  }
      56  
      57  vector __int128_t
      58  parity_v1ti_1s (vector __int128_t a)
      59  {
      60    return vec_vprtyb (a);
      61  }
      62  
      63  vector __int128_t
      64  parity_v1ti_2s (vector __int128_t a)
      65  {
      66    return vec_vprtybq (a);
      67  }
      68  
      69  __int128_t
      70  parity_ti_3s (__int128_t a)
      71  {
      72    return vec_vprtyb (a);
      73  }
      74  
      75  __int128_t
      76  parity_ti_4s (__int128_t a)
      77  {
      78    return vec_vprtybq (a);
      79  }
      80  
      81  vector __uint128_t
      82  parity_v1ti_1u (vector __uint128_t a)
      83  {
      84    return vec_vprtyb (a);
      85  }
      86  
      87  vector __uint128_t
      88  parity_v1ti_2u (vector __uint128_t a)
      89  {
      90    return vec_vprtybq (a);
      91  }
      92  
      93  __uint128_t
      94  parity_ti_3u (__uint128_t a)
      95  {
      96    return vec_vprtyb (a);
      97  }
      98  
      99  __uint128_t
     100  parity_ti_4u (__uint128_t a)
     101  {
     102    return vec_vprtybq (a);
     103  }
     104  
     105  /* { dg-final { scan-assembler "vprtybd" } } */
     106  /* { dg-final { scan-assembler "vprtybq" } } */
     107  /* { dg-final { scan-assembler "vprtybw" } } */
     108  /* { dg-final { scan-assembler-not "vpopcntb" } } */