1 // Copyright 2022 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
7 // See memmove Go doc for important implementation constraints.
9 // func memmove(to, from unsafe.Pointer, n uintptr)
10 TEXT runtime·memmove(SB), NOSPLIT|NOFRAME, $0-24
21 ADDV R4, R6, R9 // end pointer
23 // if the two pointers are not of same alignments, do byte copying
28 // if less than 8 bytes, do byte copying
32 // do one byte at a time until 8-aligned
42 // do 8 bytes at a time if there is room
43 ADDV $-7, R9, R6 // R6 is end pointer-7
65 ADDV R6, R5 // from-end pointer
66 ADDV R4, R6, R9 // to-end pointer
68 // if the two pointers are not of same alignments, do byte copying
73 // if less than 8 bytes, do byte copying
77 // do one byte at a time until 8-aligned
87 // do 8 bytes at a time if there is room
88 ADDV $7, R4, R6 // R6 is start pointer+7