(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
mops_2.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -march=armv8.6-a+mops --param=aarch64-mops-memmove-size-threshold=0" } */
       3  /* { dg-final { check-function-bodies "**" "" "" } } */
       4  
       5  #include <stdlib.h>
       6  
       7  /* We want to inline variable-sized memmove.
       8  ** do_it_mov:
       9  **	cpyp	\[x1\]\!, \[x0\]\!, x2\!
      10  **	cpym	\[x1\]\!, \[x0\]\!, x2\!
      11  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
      12  **	ret
      13  */
      14  void do_it_mov (char * in, char * out, size_t size)
      15  {
      16    __builtin_memmove (out, in, size);
      17  }
      18  
      19  /*
      20  ** do_it_mov_large:
      21  **	mov	x2, 1024
      22  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
      23  **	cpym	\[x1\]\!, \[x0\]!, x2\!
      24  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
      25  **	ret
      26  */
      27  void do_it_mov_large (char * in, char * out)
      28  {
      29    __builtin_memmove (out, in, 1024);
      30  }
      31  
      32  /*
      33  ** do_it_mov_127:
      34  **	mov	x2, 127
      35  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
      36  **	cpym	\[x1\]\!, \[x0\]!, x2\!
      37  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
      38  **	ret
      39  */
      40  void do_it_mov_127 (char * in, char * out)
      41  {
      42    __builtin_memmove (out, in, 127);
      43  }
      44  
      45  /*
      46  ** do_it_mov_128:
      47  **	mov	x2, 128
      48  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
      49  **	cpym	\[x1\]\!, \[x0\]!, x2\!
      50  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
      51  **	ret
      52  */
      53  void do_it_mov_128 (char * in, char * out)
      54  {
      55    __builtin_memmove (out, in, 128);
      56  }
      57