// 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. // +build ppc64 ppc64le #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 R5, $0 BNE check RET check: CMP R3, R4 BGT backward SUB $1, R3 ADD R3, R5 SUB $1, R4 loop: MOVBU 1(R4), R6 MOVBU R6, 1(R3) CMP R3, R5 BNE loop RET backward: ADD R5, R4 ADD R3, R5 loop1: MOVBU -1(R4), R6 MOVBU R6, -1(R5) CMP R3, R5 BNE loop1 RET