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 = svwhilele_b32_u32 (1, 3);
      13  }
      14  
      15  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.s, vl3\n} } } */
      16  
      17  void
      18  test2 (svbool_t *ptr)
      19  {
      20    *ptr = svwhilele_b16_u64 (svcntd (), svcntd () + 5);
      21  }
      22  
      23  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.h, vl6\n} } } */
      24  
      25  void
      26  test3 (svbool_t *ptr)
      27  {
      28    *ptr = svwhilele_b8_u32 (0x7ffffffb, 0x80000002);
      29  }
      30  
      31  /* { dg-final { scan-assembler {\tptrue\tp[0-7]\.b, vl8\n} } } */