1// Copyright 2022 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5#include "go_asm.h" 6#include "textflag.h" 7 8// func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr) 9TEXT runtime·memclrNoHeapPointers<ABIInternal>(SB),NOSPLIT,$0-16 10 ADDV R4, R5, R6 11 12 // if less than 8 bytes, do one byte at a time 13 SGTU $8, R5, R8 14 BNE R8, out 15 16 // do one byte at a time until 8-aligned 17 AND $7, R4, R8 18 BEQ R8, words 19 MOVB R0, (R4) 20 ADDV $1, R4 21 JMP -4(PC) 22 23words: 24 // do 8 bytes at a time if there is room 25 ADDV $-7, R6, R5 26 27 PCALIGN $16 28 SGTU R5, R4, R8 29 BEQ R8, out 30 MOVV R0, (R4) 31 ADDV $8, R4 32 JMP -4(PC) 33 34out: 35 BEQ R4, R6, done 36 MOVB R0, (R4) 37 ADDV $1, R4 38 JMP -3(PC) 39done: 40 RET 41