(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
mops_3.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -march=armv8.6-a+mops --param=aarch64-mops-memset-size-threshold=0" } */
       3  /* { dg-final { check-function-bodies "**" "" "" } } */
       4  
       5  #include <stdlib.h>
       6  
       7  /* We want to inline variable-sized memset.
       8  ** do_it_set:
       9  **	setp	\[x0\]\!, x2\!, x1
      10  **	setm	\[x0\]\!, x2\!, x1
      11  **	sete	\[x0\]\!, x2\!, x1
      12  **	ret
      13  */
      14  void do_it_set (char * out, int n, size_t size)
      15  {
      16    __builtin_memset (out, n, size);
      17  }
      18  
      19  /*
      20  ** do_it_set_large:
      21  **	mov	w2, 1
      22  **	mov	x1, 1024
      23  **	setp	\[x0\]\!, x1\!, x2
      24  **	setm	\[x0\]\!, x1\!, x2
      25  **	sete	\[x0\]\!, x1\!, x2
      26  **	ret
      27  */
      28  void do_it_set_large (char * out)
      29  {
      30    __builtin_memset (out, 1, 1024);
      31  }
      32  
      33  /*
      34  ** do_it_set_256:
      35  **	mov	w2, 1
      36  **	mov	x1, 256
      37  **	setp	\[x0\]\!, x1\!, x2
      38  **	setm	\[x0\]\!, x1\!, x2
      39  **	sete	\[x0\]\!, x1\!, x2
      40  **	ret
      41  */
      42  void do_it_set_256 (char * out)
      43  {
      44    __builtin_memset (out, 1, 256);
      45  }
      46  
      47  /*
      48  ** do_it_set_255:
      49  **	mov	w2, 1
      50  **	mov	x1, 255
      51  **	setp	\[x0\]\!, x1\!, x2
      52  **	setm	\[x0\]\!, x1\!, x2
      53  **	sete	\[x0\]\!, x1\!, x2
      54  **	ret
      55  */
      56  void do_it_set_255 (char * out)
      57  {
      58    __builtin_memset (out, 1, 255);
      59  }
      60  
      61  /*
      62  ** do_it_set_0:
      63  **	setp	\[x0\]\!, x1\!, xzr
      64  **	setm	\[x0\]\!, x1\!, xzr
      65  **	sete	\[x0\]\!, x1\!, xzr
      66  **	ret
      67  */
      68  void do_it_set_0 (char * out, size_t n)
      69  {
      70    __builtin_memset (out, 0, n);
      71  }
      72  
      73  /*
      74  ** do_it_set_0_255:
      75  **	mov	x1, 255
      76  **	setp	\[x0\]\!, x1\!, xzr
      77  **	setm	\[x0\]\!, x1\!, xzr
      78  **	sete	\[x0\]\!, x1\!, xzr
      79  **	ret
      80  */
      81  void do_it_set_0_255 (char * out)
      82  {
      83    __builtin_memset (out, 0, 255);
      84  }
      85