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