1  /* { dg-do compile } */
       2  /* { dg-require-effective-target powerpc_altivec_ok } */
       3  /* { dg-options "-O -maltivec -mno-vsx" } */
       4  
       5  typedef unsigned char V __attribute__((vector_size(16)));
       6  
       7  V b1(V x)
       8  {
       9    return __builtin_shuffle(x, (V){ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, });
      10  }
      11  
      12  V b2(V x)
      13  {
      14    return __builtin_shuffle(x, (V){ 2,3,2,3, 2,3,2,3, 2,3,2,3, 2,3,2,3, });
      15  }
      16  
      17  V b4(V x)
      18  {
      19    return __builtin_shuffle(x, (V){ 4,5,6,7, 4,5,6,7, 4,5,6,7, 4,5,6,7, });
      20  }
      21  
      22  V h1(V x, V y)
      23  {
      24    return __builtin_shuffle(x, y,
      25  	(V){ 0, 16,  1, 17,  2, 18,  3, 19,  4, 20,  5, 21,  6, 22,  7, 23 });
      26  }
      27  
      28  V h2(V x, V y)
      29  {
      30    return __builtin_shuffle(x, y,
      31  	(V){ 0,  1, 16, 17,  2,  3, 18, 19,  4,  5, 20, 21,  6,  7, 22, 23 });
      32  }
      33  
      34  V h4(V x, V y)
      35  {
      36    return __builtin_shuffle(x, y,
      37  	(V){ 0,  1,  2,  3, 16, 17, 18, 19,  4,  5,  6,  7, 20, 21, 22, 23 });
      38  }
      39  
      40  V l1(V x, V y)
      41  {
      42    return __builtin_shuffle(x, y,
      43  	(V){ 8, 24,  9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
      44  }
      45  
      46  V l2(V x, V y)
      47  {
      48    return __builtin_shuffle(x, y,
      49  	(V){ 8,  9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31 });
      50  }
      51  
      52  V l4(V x, V y)
      53  {
      54    return __builtin_shuffle(x, y,
      55  	(V){ 8,  9, 10, 11, 24, 25, 26, 27, 12, 13, 14, 15, 28, 29, 30, 31 });
      56  }
      57  
      58  /* { dg-final { scan-assembler-not "vperm" } } */
      59  /* { dg-final { scan-assembler "vspltb" } } */
      60  /* { dg-final { scan-assembler "vsplth" } } */
      61  /* { dg-final { scan-assembler "vspltw" } } */