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 // func memmove(to, from unsafe.Pointer, n uintptr)
10 TEXT runtime·memmove(SB),NOSPLIT|NOFRAME,$0-24
18 CMPBLE R5, $3, move0to3
19 CMPBLE R5, $7, move4to7
20 CMPBLE R5, $11, move8to11
21 CMPBLE R5, $15, move12to15
22 CMPBNE R5, $16, movemt16
30 CMPBGT R4, R6, forwards
32 CMPBLE R7, R6, forwards
47 CMPBGT R5, $64, forwards_fast
62 MVC $256, 0(R4), 0(R6)
71 EXRL $memmove_exrl_mvc<>(SB), R5
127 CMPBNE R5, $9, move10
134 CMPBNE R5, $10, move11
150 CMPBNE R5, $12, move13
157 CMPBNE R5, $13, move14
166 CMPBNE R5, $14, move15
186 // DO NOT CALL - target for exrl (execute relative long) instruction.
187 TEXT memmove_exrl_mvc<>(SB),NOSPLIT|NOFRAME,$0-0