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 // See memmove Go doc for important implementation constraints.
9 // void runtime·memmove(void*, void*, uintptr)
10 TEXT runtime·memmove<ABIInternal>(SB),NOSPLIT,$-0-24
11 #ifndef GOEXPERIMENT_regabiargs
18 // If the destination is ahead of the source, start at the end of the
19 // buffer and go backward.
22 // If less than eight bytes, do one byte at a time.
24 BNE T3, ZERO, f_outcheck
26 // Do one byte at a time until from is eight-aligned.
37 // Do eight bytes at a time as long as there is room.
49 // Finish off the remaining partial word.
63 // If less than eight bytes, do one byte at a time.
65 BNE T3, ZERO, b_outcheck
67 // Do one byte at a time until from+n is eight-aligned.
78 // Do eight bytes at a time as long as there is room.
90 // Finish off the remaining partial word.