Update #40724
Co-authored-by: Xiaolin Zhao <zhaoxiaolin@loongson.cn>
Change-Id: I55c78bab5c697ea6c30f9d81f5f8fb75abb3987c
Reviewed-on: https://go-review.googlesource.com/c/go/+/521786
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Meidan Li <limeidan@loongson.cn>
Run-TryBot: David Chase <drchase@google.com>
Auto-Submit: David Chase <drchase@google.com>
Reviewed-by: David Chase <drchase@google.com>
#include "textflag.h"
// func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
-TEXT runtime·memclrNoHeapPointers(SB),NOSPLIT,$0-16
- MOVV ptr+0(FP), R6
- MOVV n+8(FP), R7
- ADDV R6, R7, R4
+TEXT runtime·memclrNoHeapPointers<ABIInternal>(SB),NOSPLIT,$0-16
+#ifndef GOEXPERIMENT_regabiargs
+ MOVV ptr+0(FP), R4
+ MOVV n+8(FP), R5
+#endif
+ ADDV R4, R5, R6
// if less than 8 bytes, do one byte at a time
- SGTU $8, R7, R8
+ SGTU $8, R5, R8
BNE R8, out
// do one byte at a time until 8-aligned
- AND $7, R6, R8
+ AND $7, R4, R8
BEQ R8, words
- MOVB R0, (R6)
- ADDV $1, R6
+ MOVB R0, (R4)
+ ADDV $1, R4
JMP -4(PC)
words:
// do 8 bytes at a time if there is room
- ADDV $-7, R4, R7
+ ADDV $-7, R6, R5
PCALIGN $16
- SGTU R7, R6, R8
+ SGTU R5, R4, R8
BEQ R8, out
- MOVV R0, (R6)
- ADDV $8, R6
+ MOVV R0, (R4)
+ ADDV $8, R4
JMP -4(PC)
out:
- BEQ R6, R4, done
- MOVB R0, (R6)
- ADDV $1, R6
+ BEQ R4, R6, done
+ MOVB R0, (R4)
+ ADDV $1, R4
JMP -3(PC)
done:
RET
// See memmove Go doc for important implementation constraints.
// func memmove(to, from unsafe.Pointer, n uintptr)
-TEXT runtime·memmove(SB), NOSPLIT|NOFRAME, $0-24
+TEXT runtime·memmove<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-24
+#ifndef GOEXPERIMENT_regabiargs
MOVV to+0(FP), R4
MOVV from+8(FP), R5
MOVV n+16(FP), R6
+#endif
BNE R6, check
RET