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
      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
      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 } } */