1  /* { dg-do compile } */
       2  /* { dg-require-effective-target power10_ok } */
       3  /* { dg-options "-mdejagnu-cpu=power10 -O2" } */
       4  
       5  typedef unsigned char  vec_t __attribute__((vector_size(16)));
       6  
       7  void
       8  foo (__vector_pair *dst, vec_t *src)
       9  {
      10    __vector_pair pair;
      11    /* Adjacent loads should be combined into one lxvp instruction.  */
      12    __builtin_vsx_build_pair (&pair, src[0], src[1]);
      13    *dst = pair;
      14  }
      15  
      16  void
      17  bar (__vector_quad *dst, vec_t *src)
      18  {
      19    __vector_quad quad;
      20    /* Adjacent loads should be combined into two lxvp instructions.  */
      21    __builtin_mma_build_acc (&quad, src[0], src[1], src[2], src[3]);
      22    *dst = quad;
      23  }
      24  
      25  /* { dg-final { scan-assembler-not {\mlxv\M} } } */
      26  /* { dg-final { scan-assembler-not {\mstxv\M} } } */
      27  /* { dg-final { scan-assembler-times {\mlxvp\M} 3 } } */
      28  /* { dg-final { scan-assembler-times {\mstxvp\M} 3 } } */