1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx512vl" } */
       3  /* { dg-final { scan-assembler-times {pblendvb[\t ]*%xmm} 1 } } */
       4  /* { dg-final { scan-assembler-times {pblendvb[\t ]*%ymm} 1 } } */
       5  /* { dg-final { scan-assembler-times {blendvps[\t ]*%xmm} 1 } } */
       6  /* { dg-final { scan-assembler-times {blendvps[\t ]*%ymm} 1 } } */
       7  /* { dg-final { scan-assembler-times {blendvpd[\t ]*%xmm} 1 } } */
       8  /* { dg-final { scan-assembler-times {blendvpd[\t ]*%ymm} 1 } } */
       9  
      10  typedef float v4sf __attribute__ ((vector_size (16)));
      11  typedef float v8sf __attribute__ ((vector_size (32)));
      12  typedef double v2df __attribute__ ((vector_size (16)));
      13  typedef double v4df __attribute__ ((vector_size (32)));
      14  typedef char v16qi __attribute__ ((vector_size (16)));
      15  typedef char v32qi __attribute__ ((vector_size (32)));
      16  
      17  v4sf
      18  foo (v4sf a, v4sf b, v4sf c)
      19  {
      20    return __builtin_ia32_blendvps (a, b, c);
      21  }
      22  
      23  v8sf
      24  foo2 (v8sf a, v8sf b, v8sf c)
      25  {
      26    return __builtin_ia32_blendvps256 (a, b, c);
      27  }
      28  
      29  v2df
      30  foo3 (v2df a, v2df b, v2df c)
      31  {
      32    return __builtin_ia32_blendvpd (a, b, c);
      33  }
      34  
      35  v4df
      36  foo4 (v4df a, v4df b, v4df c)
      37  {
      38    return __builtin_ia32_blendvpd256 (a, b, c);
      39  }
      40  
      41  v16qi
      42  foo5 (v16qi a, v16qi b, v16qi c)
      43  {
      44    return __builtin_ia32_pblendvb128 (a, b, c);
      45  }
      46  
      47  v32qi
      48  foo6 (v32qi a, v32qi b, v32qi c)
      49  {
      50    return __builtin_ia32_pblendvb256 (a, b, c);
      51  }