...
Text file
src/runtime/memclr_loong64.s
Documentation: runtime
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#ifndef GOEXPERIMENT_regabiargs
11 MOVV ptr+0(FP), R4
12 MOVV n+8(FP), R5
13#endif
14 ADDV R4, R5, R6
15
16 // if less than 8 bytes, do one byte at a time
17 SGTU $8, R5, R8
18 BNE R8, out
19
20 // do one byte at a time until 8-aligned
21 AND $7, R4, R8
22 BEQ R8, words
23 MOVB R0, (R4)
24 ADDV $1, R4
25 JMP -4(PC)
26
27words:
28 // do 8 bytes at a time if there is room
29 ADDV $-7, R6, R5
30
31 PCALIGN $16
32 SGTU R5, R4, R8
33 BEQ R8, out
34 MOVV R0, (R4)
35 ADDV $8, R4
36 JMP -4(PC)
37
38out:
39 BEQ R4, R6, done
40 MOVB R0, (R4)
41 ADDV $1, R4
42 JMP -3(PC)
43done:
44 RET
View as plain text