(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
memset-q-reg.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  /* { dg-require-effective-target lp64 } */
       4  
       5  #include <stdint.h>
       6  
       7  /*
       8  **set128bits:
       9  **	dup	v0.16b, w1
      10  **	str	q0, \[x0\]
      11  **	ret
      12  */
      13  void __attribute__((__noinline__))
      14  set128bits (int64_t *src, char c)
      15  {
      16    __builtin_memset (src, c, 2*sizeof(int64_t));
      17  }
      18  
      19  /*
      20  **set128bitszero:
      21  **	stp	xzr, xzr, \[x0\]
      22  **	ret
      23  */
      24  void __attribute__((__noinline__))
      25  set128bitszero (int64_t *src)
      26  {
      27    __builtin_memset (src, 0, 2*sizeof(int64_t));
      28  }
      29  
      30  /*
      31  ** set128bitsplus:
      32  **	dup	v0.16b, w1
      33  **	str	q0, \[x0\]
      34  **	str	q0, \[x0, 12\]
      35  **	ret
      36  */
      37  void __attribute__((__noinline__))
      38  set128bitsplus (int64_t *src, char c)
      39  {
      40    __builtin_memset (src, c, 7*sizeof(int32_t));
      41  }
      42  
      43  /*
      44  ** set256bits:
      45  **	movi	v0.16b, 0x63
      46  **	stp	q0, q0, \[x0\]
      47  **	ret
      48  */
      49  void __attribute__((__noinline__))
      50  set256bits (int64_t *src)
      51  {
      52    __builtin_memset (src, 'c', 4*sizeof(int64_t));
      53  }
      54  
      55  /*
      56  **set256bitszero:
      57  **	stp	xzr, xzr, \[x0\]
      58  **	stp	xzr, xzr, \[x0, 16\]
      59  **	ret
      60  */
      61  void __attribute__((__noinline__))
      62  set256bitszero (int64_t *src)
      63  {
      64    __builtin_memset (src, 0, 4*sizeof(int64_t));
      65  }
      66  
      67  /*
      68  ** set256bitsplus:
      69  **	movi	v0.16b, 0x63
      70  **	stp	q0, q0, \[x0\]
      71  **	str	q0, \[x0, 32\]
      72  **	str	d0, \[x0, 48\]
      73  **	ret
      74  */
      75  void __attribute__((__noinline__))
      76  set256bitsplus (int64_t *src)
      77  {
      78    __builtin_memset (src, 'c', 7*sizeof(int64_t));
      79  }
      80  
      81  /* { dg-final { check-function-bodies "**" "" "" } } */