1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -funroll-loops" } */
       3  
       4  #include <arm_sve.h>
       5  
       6  svfloat32_t __attribute__((noipa))
       7  func_demo (svfloat32_t x, svfloat32_t y, svbool_t pg)
       8  {
       9    svfloat32_t z = svadd_f32_x (pg, x, svdup_f32 (0x1.800fep19f));
      10    svbool_t cmp = svcmplt_f32 (pg, z, svdup_f32 (0.0f));
      11    svfloat32_t zM1 = svsub_f32_x (pg, z, svdup_n_f32 (1.0f));
      12    z = svsel_f32 (cmp, zM1, z);
      13    svfloat32_t sum = svadd_f32_x (pg, z, y);
      14    return sum;
      15  }
      16  
      17  int
      18  main ()
      19  {
      20    float arr[2];
      21    svfloat32_t x = svinsr_n_f32 (svdup_f32 (-0x1.880fep19f), 2.0f);
      22    svfloat32_t res = func_demo (x, svdup_f32 (0.5f), svptrue_b32 ());
      23    svst1_f32 (svptrue_pat_b32 (SV_VL2), arr, res);
      24    if (arr[0] != 786561.5f || arr[1] != -16384.5f)
      25      __builtin_abort ();
      26    return 0;
      27  }