1 // Copyright 2013 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. 4 5 #include "textflag.h" 6 7 TEXT runtimememmove(SB), NOSPLIT, $0-12 8 MOVL to+0(FP), DI 9 MOVL from+4(FP), SI 10 MOVL n+8(FP), BX 11 12 CMPL SI, DI 13 JLS back 14 15 forward: 16 MOVL BX, CX 17 SHRL $3, CX 18 ANDL $7, BX 19 REP; MOVSQ 20 MOVL BX, CX 21 REP; MOVSB 22 RET 23 24 back: 25 MOVL SI, CX 26 ADDL BX, CX 27 CMPL CX, DI 28 JLS forward 29 30 ADDL BX, DI 31 ADDL BX, SI 32 STD 33 34 MOVL BX, CX 35 SHRL $3, CX 36 ANDL $7, BX 37 SUBL $8, DI 38 SUBL $8, SI 39 REP; MOVSQ 40 ADDL $7, DI 41 ADDL $7, SI 42 MOVL BX, CX 43 REP; MOVSB 44 CLD 45 46 RET 47