1 // Copyright 2016 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 // void runtime·memmove(void*, void*, uintptr)
8 TEXT runtime·memmove(SB),NOSPLIT,$-0-24
14 // If the destination is ahead of the source, start at the end of the
15 // buffer and go backward.
18 // If less than eight bytes, do one byte at a time.
20 BNE T3, ZERO, f_outcheck
22 // Do one byte at a time until from is eight-aligned.
33 // Do eight bytes at a time as long as there is room.
45 // Finish off the remaining partial word.
59 // If less than eight bytes, do one byte at a time.
61 BNE T3, ZERO, b_outcheck
63 // Do one byte at a time until from+n is eight-aligned.
74 // Do eight bytes at a time as long as there is room.
86 // Finish off the remaining partial word.