1  /* { dg-do compile { target { le } } } */
       2  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       3  /* { dg-require-effective-target powerpc_p8vector_ok } */
       4  /* { dg-options "-mdejagnu-cpu=power8 -O2" } */
       5  
       6  /* Verify fix for problem where vec_xl and vec_xst are not recognized
       7     for the vector char and vector short cases on P8 only.  */
       8  
       9  #include <altivec.h>
      10  
      11  vector unsigned char
      12  foo (unsigned char * address)
      13  {
      14    return __builtin_vec_xl (0, address);
      15  }
      16  
      17  void
      18  bar (vector unsigned char x, unsigned char * address)
      19  {
      20    __builtin_vec_xst (x, 0, address);
      21  }
      22  
      23  vector unsigned short
      24  foot (unsigned short * address)
      25  {
      26    return __builtin_vec_xl (0, address);
      27  }
      28  
      29  void
      30  bart (vector unsigned short x, unsigned short * address)
      31  {
      32    __builtin_vec_xst (x, 0, address);
      33  }
      34  
      35  vector unsigned char
      36  fool (unsigned char * address)
      37  {
      38    return vec_xl (0, address);
      39  }
      40  
      41  void
      42  barl (vector unsigned char x, unsigned char * address)
      43  {
      44    vec_xst (x, 0, address);
      45  }
      46  
      47  vector unsigned short
      48  footle (unsigned short * address)
      49  {
      50    return vec_xl (0, address);
      51  }
      52  
      53  void
      54  bartle (vector unsigned short x, unsigned short * address)
      55  {
      56    vec_xst (x, 0, address);
      57  }
      58  
      59  /* { dg-final { scan-assembler-times "lxvd2x"   4 } } */
      60  /* { dg-final { scan-assembler-times "stxvd2x"  4 } } */
      61  /* { dg-final { scan-assembler-times "xxpermdi" 8 } } */