1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */
3 
4 #include <vecintrin.h>
5 
6 
7 vector unsigned int a, b, c, d, e, f;
8 
9 int
foo()10 foo ()
11 {
12   a = vec_genmasks_32 (0, 31);
13   b = vec_genmasks_32 (0, 0);
14   c = vec_genmasks_32 (31, 31);
15   d = vec_genmasks_32 (5, 5);
16   e = vec_genmasks_32 (31, 0);
17 }
18 
19 int
bar()20 bar ()
21 {
22   /* Needs to be in a separate function so that the vone from "a" is not reused
23      for "f".  */
24   f = vec_genmasks_32 (6, 5);
25 }
26 
27 /* a + f: { dg-final { scan-assembler-times "vone" 2 } } */
28 /* b: { dg-final { scan-assembler-times "vgmf\t%v.*,0,0" 1 } } */
29 /* c: { dg-final { scan-assembler-times "vgmf\t%v.*,31,31" 1 } } */
30 /* d: { dg-final { scan-assembler-times "vgmf\t%v.*,5,5" 1 } } */
31 /* e: { dg-final { scan-assembler-times "vgmf\t%v.*,31,0" 1 } } */
32 /* b - e: { dg-final { scan-assembler-times "vgmf" 4 } } */
33