blob: 2a6163c4d7230bba50d9d00926646a865b7ff5de [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-mavx512vl -mavx512vbmi -O2" } */
/* { dg-final { scan-assembler-times "vpermi2b" "3" } } */
typedef char v16qi __attribute__((vector_size (16)));
typedef char v32qi __attribute__((vector_size (32)));
typedef char v64qi __attribute__((vector_size (64)));
v64qi
foob_512 (v64qi x, v64qi y)
{
return __builtin_shufflevector (x, y,
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46,
48, 50, 52, 54, 56, 58, 60, 62,
64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 77, 79, 74, 72, 70,
89, 88, 78, 86, 85, 75, 83, 82,
112, 108, 101, 100, 86, 96, 97, 95);
}
v32qi
foob_256 (v32qi x, v32qi y)
{
return __builtin_shufflevector (x, y,
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46,
48, 50, 52, 54, 56, 58, 60, 62);
}
v16qi
foob_128 (v16qi x, v16qi y)
{
return __builtin_shufflevector (x, y,
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 20, 22, 24, 26, 28, 30);
}