blob: 0e57b8dbc0533bea7f61c43758a44a1a6a712086 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */
#include <vecintrin.h>
vector unsigned int a, b, c, d, e, f;
int
foo ()
{
a = vec_genmasks_32 (0, 31);
b = vec_genmasks_32 (0, 0);
c = vec_genmasks_32 (31, 31);
d = vec_genmasks_32 (5, 5);
e = vec_genmasks_32 (31, 0);
}
int
bar ()
{
/* Needs to be in a separate function so that the vone from "a" is not reused
for "f". */
f = vec_genmasks_32 (6, 5);
}
/* a + f: { dg-final { scan-assembler-times "vone" 2 } } */
/* b: { dg-final { scan-assembler-times "vgmf\t%v.*,0,0" 1 } } */
/* c: { dg-final { scan-assembler-times "vgmf\t%v.*,31,31" 1 } } */
/* d: { dg-final { scan-assembler-times "vgmf\t%v.*,5,5" 1 } } */
/* e: { dg-final { scan-assembler-times "vgmf\t%v.*,31,0" 1 } } */
/* b - e: { dg-final { scan-assembler-times "vgmf" 4 } } */