10754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot// Copyright 2015 The Go Authors. All rights reserved.
20754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot// Use of this source code is governed by a BSD-style
30754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot// license that can be found in the LICENSE file.
40754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
50754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot// +build mips64 mips64le
60754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
70754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot#include "textflag.h"
80754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
90754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot// void runtime·memclrNoHeapPointers(void*, uintptr)
100754ce079d936daf401bbf49cb69a318aa79828android-build-team RobotTEXT runtime·memclrNoHeapPointers(SB),NOSPLIT,$0-16
110754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	MOVV	ptr+0(FP), R1
120754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	MOVV	n+8(FP), R2
130754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	ADDV	R1, R2, R4
140754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
150754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	// if less than 8 bytes, do one byte at a time
160754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	SGTU	$8, R2, R3
170754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	BNE	R3, out
180754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
190754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	// do one byte at a time until 8-aligned
200754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	AND	$7, R1, R3
210754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	BEQ	R3, words
220754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	MOVB	R0, (R1)
230754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	ADDV	$1, R1
240754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	JMP	-4(PC)
250754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
260754ce079d936daf401bbf49cb69a318aa79828android-build-team Robotwords:
270754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	// do 8 bytes at a time if there is room
280754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	ADDV	$-7, R4, R2
290754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
300754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	SGTU	R2, R1, R3
310754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	BEQ	R3, out
320754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	MOVV	R0, (R1)
330754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	ADDV	$8, R1
340754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	JMP	-4(PC)
350754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot
360754ce079d936daf401bbf49cb69a318aa79828android-build-team Robotout:
370754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	BEQ	R1, R4, done
380754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	MOVB	R0, (R1)
390754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	ADDV	$1, R1
400754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	JMP	-3(PC)
410754ce079d936daf401bbf49cb69a318aa79828android-build-team Robotdone:
420754ce079d936daf401bbf49cb69a318aa79828android-build-team Robot	RET
43