// 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·memclrNoHeapPointers(void*, uintptr)
TEXT runtime·memclrNoHeapPointers(SB),NOSPLIT,$0-16
	MOVD	ptr+0(FP), R3
	MOVD	n+8(FP), R4
	// TODO(mwhudson): this is written this way to avoid tickling
	// warnings from addpool when written as AND $7, R4, R6 (see
	// https://golang.org/issue/12708)
	AND	$~7, R4, R5	// R5 is N&~7
	SUB	R5, R4, R6	// R6 is N&7

	CMP	$0, R5
	BEQ	nowords

	ADD	R3, R5, R5

wordloop: // TODO: Optimize for unaligned ptr.
	MOVD.P	$0, 8(R3)
	CMP	R3, R5
	BNE	wordloop
nowords:
        CMP	$0, R6
        BEQ	done

	ADD	R3, R6, R6

byteloop:
	MOVBU.P	$0, 1(R3)
	CMP	R3, R6
	BNE	byteloop
done:
	RET
