1  /* { dg-additional-options "-msve-vector-bits=scalable" } */
       2  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       3  
       4  #include "test_sve_acle.h"
       5  #include <stdbool.h>
       6  
       7  /*
       8  ** test_bool_last:
       9  **	ptest	p0, p1\.b
      10  **	cset	[wx]0, last
      11  **	ret
      12  */
      13  TEST_PTEST (test_bool_last, bool,
      14  	    x0 = svptest_last (p0, p1));
      15  
      16  /*
      17  ** test_bool_nlast:
      18  **	ptest	p0, p1\.b
      19  **	cset	[wx]0, nlast
      20  **	ret
      21  */
      22  TEST_PTEST (test_bool_nlast, bool,
      23  	    x0 = !svptest_last (p0, p1));
      24  
      25  /*
      26  ** test_int_last:
      27  **	ptest	p0, p1\.b
      28  **	cset	[wx]0, last
      29  **	ret
      30  */
      31  TEST_PTEST (test_int_last, int,
      32  	    x0 = svptest_last (p0, p1));
      33  
      34  /*
      35  ** test_int_nlast:
      36  **	ptest	p0, p1\.b
      37  **	cset	[wx]0, nlast
      38  **	ret
      39  */
      40  TEST_PTEST (test_int_nlast, int,
      41  	    x0 = !svptest_last (p0, p1));
      42  
      43  /*
      44  ** test_int64_t_last:
      45  **	ptest	p0, p1\.b
      46  **	cset	[wx]0, last
      47  **	ret
      48  */
      49  TEST_PTEST (test_int64_t_last, int64_t,
      50  	    x0 = svptest_last (p0, p1));
      51  
      52  /*
      53  ** test_int64_t_nlast:
      54  **	ptest	p0, p1\.b
      55  **	cset	[wx]0, nlast
      56  **	ret
      57  */
      58  TEST_PTEST (test_int64_t_nlast, int64_t,
      59  	    x0 = !svptest_last (p0, p1));
      60  
      61  /*
      62  ** sel_last:
      63  **	ptest	p0, p1\.b
      64  **	csel	x0, (x0, x1, last|x1, x0, nlast)
      65  **	ret
      66  */
      67  TEST_PTEST (sel_last, int64_t,
      68  	    x0 = svptest_last (p0, p1) ? x0 : x1);
      69  
      70  /*
      71  ** sel_nlast:
      72  **	ptest	p0, p1\.b
      73  **	csel	x0, (x0, x1, nlast|x1, x0, last)
      74  **	ret
      75  */
      76  TEST_PTEST (sel_nlast, int64_t,
      77  	    x0 = !svptest_last (p0, p1) ? x0 : x1);