1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include <arm_sve.h>
       5  
       6  /* { dg-final { scan-assembler-not {\twhilele\t} } } */
       7  /* { dg-final { scan-assembler-not {\twhilelt\t} } } */
       8  
       9  void
      10  test1 (svbool_t *ptr)
      11  {
      12    *ptr = svwhilelt_b32_s32 (-8, -7);
      13  }
      14  
      15  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.[bhsd], vl1\n} } } */
      16  
      17  void
      18  test2 (svbool_t *ptr)
      19  {
      20    *ptr = svwhilelt_b16_s64 (-1, 2);
      21  }
      22  
      23  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.h, vl3\n} } } */
      24  
      25  void
      26  test3 (svbool_t *ptr)
      27  {
      28    *ptr = svwhilelt_b16_s32 (0x7ffffffa, 0x7fffffff);
      29  }
      30  
      31  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.h, vl5\n} } } */
      32  
      33  void
      34  test4 (svbool_t *ptr)
      35  {
      36    *ptr = svwhilelt_b8_s64 (svcntb (), svcntb () + 7);
      37  }
      38  
      39  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.b, vl7\n} } } */
      40  
      41  void
      42  test5 (svbool_t *ptr)
      43  {
      44    *ptr = svwhilelt_b64_s64 (0, 2);
      45  }
      46  
      47  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.d, vl2\n} } } */