1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include <arm_sve.h>
       5  
       6  void
       7  foo (int8_t *ptr1, int8_t *ptr2, svint8_t *res1, svint8_t *res2)
       8  {
       9    svbool_t pg = svptrue_b8 ();
      10  
      11    svsetffr ();
      12    svint8_t x1 = svldff1 (pg, ptr1);
      13    svbool_t ok1 = svrdffr ();
      14    if (!svptest_last (pg, ok1))
      15      {
      16        x1 = svsel (ok1, x1, svdup_s8 (0));
      17        svsetffr ();
      18      }
      19  
      20    svint8_t x2 = svldff1 (pg, ptr2);
      21    svbool_t ok2 = svrdffr ();
      22    if (!svptest_last (pg, ok2))
      23      x2 = svsel (ok2, x2, svdup_s8 (0));
      24  
      25    *res1 = x1;
      26    *res2 = x2;
      27  }
      28  
      29  /* { dg-final { scan-assembler-times {\trdffrs\t} 2 } } */
      30  /* { dg-final { scan-assembler-times {\t(?:b.last|b.nfrst)\t} 2 } } */
      31  /* { dg-final { scan-assembler-not {\trdffr\t} } } */
      32  /* { dg-final { scan-assembler-not {\tptest\t} } } */