blob: 442faa25f267c92c9358ef6e04f785f0e06dd160 [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.
// +build ppc64 ppc64le
#include "textflag.h"
// void runtime·memclr(void*, uintptr)
TEXT runtime·memclr(SB),NOSPLIT|NOFRAME,$0-16
MOVD ptr+0(FP), R3
MOVD n+8(FP), R4
SRADCC $3, R4, R6 // R6 is the number of words to zero
BEQ bytes
SUB $8, R3
MOVD R6, CTR
MOVDU R0, 8(R3)
BC 25, 0, -1(PC) // bdnz+ $-4
ADD $8, R3
bytes:
ANDCC $7, R4, R7 // R7 is the number of bytes to zero
BEQ done
SUB $1, R3
MOVD R7, CTR
MOVBU R0, 1(R3)
BC 25, 0, -1(PC) // bdnz+ $-4
done:
RET