blob: 66059a75dea705760cc173775c37704a9340e622 [file] [log] [blame]
// Copyright 2014 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"
// void runtime·memmove(void*, void*, uintptr)
TEXT runtime·memmove(SB), NOSPLIT, $-8-24
MOVD to+0(FP), R3
MOVD from+8(FP), R4
MOVD n+16(FP), R5
CMP $0, R5
BNE check
RET
check:
CMP R3, R4
BLT backward
ADD R3, R5
loop:
MOVBU.P 1(R4), R6
MOVBU.P R6, 1(R3)
CMP R3, R5
BNE loop
RET
backward:
ADD R5, R4
ADD R3, R5
loop1:
MOVBU.W -1(R4), R6
MOVBU.W R6, -1(R5)
CMP R3, R5
BNE loop1
RET