blob: fcbbfb9b446b24e87b1fdffcaa4a7fd03d219900 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-mavx2 -O2 -mno-avx512f" } */
/* { dg-final { scan-assembler-times {pblendvb[\t ]*%xmm} 1 } } */
/* { dg-final { scan-assembler-times {pblendvb[\t ]*%ymm} 1 } } */
/* { dg-final { scan-assembler-times {blendvps[\t ]*%xmm} 1 } } */
/* { dg-final { scan-assembler-times {blendvps[\t ]*%ymm} 1 } } */
/* { dg-final { scan-assembler-times {blendvpd[\t ]*%xmm} 1 } } */
/* { dg-final { scan-assembler-times {blendvpd[\t ]*%ymm} 1 } } */
typedef float v4sf __attribute__ ((vector_size (16)));
typedef float v8sf __attribute__ ((vector_size (32)));
typedef double v2df __attribute__ ((vector_size (16)));
typedef double v4df __attribute__ ((vector_size (32)));
typedef char v16qi __attribute__ ((vector_size (16)));
typedef char v32qi __attribute__ ((vector_size (32)));
v4sf
foo (v4sf a, v4sf b, v4sf c)
{
return __builtin_ia32_blendvps (a, b, c);
}
v8sf
foo2 (v8sf a, v8sf b, v8sf c)
{
return __builtin_ia32_blendvps256 (a, b, c);
}
v2df
foo3 (v2df a, v2df b, v2df c)
{
return __builtin_ia32_blendvpd (a, b, c);
}
v4df
foo4 (v4df a, v4df b, v4df c)
{
return __builtin_ia32_blendvpd256 (a, b, c);
}
v16qi
foo5 (v16qi a, v16qi b, v16qi c)
{
return __builtin_ia32_pblendvb128 (a, b, c);
}
v32qi
foo6 (v32qi a, v32qi b, v32qi c)
{
return __builtin_ia32_pblendvb256 (a, b, c);
}