xref: /freebsd/contrib/arm-optimized-routines/string/aarch64/memmove-mops.S (revision 5a02ffc32e777041dd2dad4e651ed2a0865a0a5d)
1*5a02ffc3SAndrew Turner/*
2*5a02ffc3SAndrew Turner * memmove using MOPS extension.
3*5a02ffc3SAndrew Turner *
4*5a02ffc3SAndrew Turner * Copyright (c) 2023, Arm Limited.
5*5a02ffc3SAndrew Turner * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6*5a02ffc3SAndrew Turner */
7*5a02ffc3SAndrew Turner
8*5a02ffc3SAndrew Turner#include "asmdefs.h"
9*5a02ffc3SAndrew Turner
10*5a02ffc3SAndrew TurnerENTRY (__memmove_aarch64_mops)
11*5a02ffc3SAndrew Turner	PTR_ARG (0)
12*5a02ffc3SAndrew Turner	PTR_ARG (1)
13*5a02ffc3SAndrew Turner	SIZE_ARG (2)
14*5a02ffc3SAndrew Turner
15*5a02ffc3SAndrew Turner	mov	x3, x0
16*5a02ffc3SAndrew Turner	.inst	0x1d010443	/* cpyp    [x3]!, [x1]!, x2!  */
17*5a02ffc3SAndrew Turner	.inst	0x1d410443	/* cpym    [x3]!, [x1]!, x2!  */
18*5a02ffc3SAndrew Turner	.inst	0x1d810443	/* cpye    [x3]!, [x1]!, x2!  */
19*5a02ffc3SAndrew Turner	ret
20*5a02ffc3SAndrew Turner
21*5a02ffc3SAndrew TurnerEND (__memmove_aarch64_mops)
22