// Copyright 2013 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
#include "textflag.h" | |
TEXT runtime·memmove(SB), NOSPLIT, $0-12 | |
MOVL to+0(FP), DI | |
MOVL from+4(FP), SI | |
MOVL n+8(FP), BX | |
CMPL SI, DI | |
JLS back | |
forward: | |
MOVL BX, CX | |
SHRL $3, CX | |
ANDL $7, BX | |
REP; MOVSQ | |
MOVL BX, CX | |
REP; MOVSB | |
RET | |
back: | |
MOVL SI, CX | |
ADDL BX, CX | |
CMPL CX, DI | |
JLS forward | |
ADDL BX, DI | |
ADDL BX, SI | |
STD | |
MOVL BX, CX | |
SHRL $3, CX | |
ANDL $7, BX | |
SUBL $8, DI | |
SUBL $8, SI | |
REP; MOVSQ | |
ADDL $7, DI | |
ADDL $7, SI | |
MOVL BX, CX | |
REP; MOVSB | |
CLD | |
RET |