...
Text file src/runtime/memclr_mips64x.s
1 // Copyright 2015 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 // +build mips64 mips64le
6
7 #include "textflag.h"
8
9 // func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
10 TEXT runtime·memclrNoHeapPointers(SB),NOSPLIT,$0-16
11 MOVV ptr+0(FP), R1
12 MOVV n+8(FP), R2
13 ADDV R1, R2, R4
14
15 // if less than 8 bytes, do one byte at a time
16 SGTU $8, R2, R3
17 BNE R3, out
18
19 // do one byte at a time until 8-aligned
20 AND $7, R1, R3
21 BEQ R3, words
22 MOVB R0, (R1)
23 ADDV $1, R1
24 JMP -4(PC)
25
26 words:
27 // do 8 bytes at a time if there is room
28 ADDV $-7, R4, R2
29
30 SGTU R2, R1, R3
31 BEQ R3, out
32 MOVV R0, (R1)
33 ADDV $8, R1
34 JMP -4(PC)
35
36 out:
37 BEQ R1, R4, done
38 MOVB R0, (R1)
39 ADDV $1, R1
40 JMP -3(PC)
41 done:
42 RET
View as plain text