1  /* { dg-do compile } */
       2  /* { dg-options "-mavx -mno-avx512f -O2" } */
       3  /* { dg-final { scan-assembler-times {(?n)vmov[a-z0-9]*[ \t]*%xmm[0-9]} 12 } } */
       4  /* { dg-final { scan-assembler-not "pxor" } } */
       5  
       6  typedef float v8sf __attribute__((vector_size(32)));
       7  typedef double v4df __attribute__ ((vector_size (32)));
       8  typedef long long v4di __attribute__((vector_size(32)));
       9  typedef int v8si __attribute__((vector_size(32)));
      10  typedef short v16hi __attribute__ ((vector_size (32)));
      11  typedef char v32qi __attribute__ ((vector_size (32)));
      12  
      13  v4df
      14  foo_v4df (v4df x)
      15  {
      16    return __builtin_shuffle (x, (v4df) { 0, 0, 0, 0 }, (v4di) { 0, 1, 4, 5 });
      17  }
      18  
      19  v4df
      20  foo_v4df_l (v4df x)
      21  {
      22    return __builtin_shuffle ((v4df) { 0, 0, 0, 0 }, x, (v4di) { 4, 5, 1, 2 });
      23  }
      24  
      25  v4di
      26  foo_v4di (v4di x)
      27  {
      28    return __builtin_shuffle (x, (v4di) { 0, 0, 0, 0 }, (v4di) { 0, 1, 4, 7 });
      29  }
      30  
      31  v4di
      32  foo_v4di_l (v4di x)
      33  {
      34    return __builtin_shuffle ((v4di) { 0, 0, 0, 0 }, x, (v4di) { 4, 5, 3, 1 });
      35  }
      36  
      37  v8sf
      38  foo_v8sf (v8sf x)
      39  {
      40    return __builtin_shuffle ((v8sf) { 0, 0, 0, 0, 0, 0, 0, 0 }, x,
      41  			    (v8si) { 8, 9, 10, 11, 0, 1, 2, 3 });
      42  }
      43  
      44  v8sf
      45  foo_v8sf_l (v8sf x)
      46  {
      47    return __builtin_shuffle (x, (v8sf) { 0, 0, 0, 0, 0, 0, 0, 0 },
      48  			    (v8si) { 0, 1, 2, 3, 8, 9, 10, 11 });
      49  }
      50  
      51  v8si
      52  foo_v8si (v8si x)
      53  {
      54    return __builtin_shuffle (x, (v8si) { 0, 0, 0, 0, 0, 0, 0, 0 },
      55  			    (v8si) { 0, 1, 2, 3, 13, 12, 11, 15 });
      56  }
      57  
      58  v8si
      59  foo_v8si_l (v8si x)
      60  {
      61    return __builtin_shuffle ((v8si) { 0, 0, 0, 0, 0, 0, 0, 0 }, x,
      62  			    (v8si) { 8, 9, 10, 11, 7, 6, 5, 4 });
      63  }
      64  
      65  v16hi
      66  foo_v16hi (v16hi x)
      67  {
      68    return __builtin_shuffle (x, (v16hi)  { 0, 0, 0, 0, 0, 0, 0, 0,
      69  					  0, 0, 0, 0, 0, 0, 0, 0 },
      70  			       (v16hi) { 0, 1, 2, 3, 4, 5, 6, 7,
      71  					 24, 17, 26, 19, 28, 21, 30, 23 });
      72  }
      73  
      74  v16hi
      75  foo_v16hi_l (v16hi x)
      76  {
      77    return __builtin_shuffle ((v16hi)  { 0, 0, 0, 0, 0, 0, 0, 0,
      78  				       0, 0, 0, 0, 0, 0, 0, 0 }, x,
      79  			    (v16hi) { 16, 17, 18, 19, 20, 21, 22, 23,
      80  				      15, 0, 13, 2, 11, 4, 9, 6 });
      81  }
      82  
      83  v32qi
      84  foo_v32qi (v32qi x)
      85  {
      86    return __builtin_shuffle (x, (v32qi) { 0, 0, 0, 0, 0, 0, 0, 0,
      87  					 0, 0, 0, 0, 0, 0, 0, 0,
      88  					 0, 0, 0, 0, 0, 0, 0, 0,
      89  					 0, 0, 0, 0, 0, 0, 0, 0 },
      90  			       (v32qi) { 0, 1, 2, 3, 4, 5, 6, 7,
      91  					 8, 9, 10, 11, 12, 13, 14, 15,
      92  					 32, 49, 34, 58, 36, 53, 38, 39,
      93  					 40, 60, 42, 43, 63, 45, 46, 47 });
      94  }
      95  
      96  v32qi
      97  foo_v32qi_l (v32qi x)
      98  {
      99    return __builtin_shuffle ((v32qi) { 0, 0, 0, 0, 0, 0, 0, 0,
     100  				      0, 0, 0, 0, 0, 0, 0, 0,
     101  				      0, 0, 0, 0, 0, 0, 0, 0,
     102  				      0, 0, 0, 0, 0, 0, 0, 0 }, x,
     103  			     (v32qi) { 32, 33, 34, 35, 36, 37, 38, 39,
     104  				       40, 41, 42, 43, 44, 45, 46, 47,
     105  				       31, 0, 29, 2, 27, 4, 25, 6,
     106  				       23, 8, 21, 10, 19, 12, 17, 14 });
     107  }