mirror of
https://github.com/golang/go
synced 2024-09-06 00:19:45 +00:00
runtime: eliminate redundant load in Xchg and Xadd on arm64
Loading arguments of Xchg(64) and Xadd(64) functions to registers could be done only once. Change-Id: Iaf0a695ec9c6a221dfa755855edb68c476978a5b Reviewed-on: https://go-review.googlesource.com/c/go/+/227001 Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
e18a5ba0ca
commit
3103495fa9
|
@ -61,9 +61,9 @@ TEXT runtime∕internal∕atomic·Store64(SB), NOSPLIT, $0-16
|
|||
RET
|
||||
|
||||
TEXT runtime∕internal∕atomic·Xchg(SB), NOSPLIT, $0-20
|
||||
again:
|
||||
MOVD ptr+0(FP), R0
|
||||
MOVW new+8(FP), R1
|
||||
again:
|
||||
LDAXRW (R0), R2
|
||||
STLXRW R1, (R0), R3
|
||||
CBNZ R3, again
|
||||
|
@ -71,9 +71,9 @@ again:
|
|||
RET
|
||||
|
||||
TEXT runtime∕internal∕atomic·Xchg64(SB), NOSPLIT, $0-24
|
||||
again:
|
||||
MOVD ptr+0(FP), R0
|
||||
MOVD new+8(FP), R1
|
||||
again:
|
||||
LDAXR (R0), R2
|
||||
STLXR R1, (R0), R3
|
||||
CBNZ R3, again
|
||||
|
@ -108,9 +108,9 @@ ok:
|
|||
// *val += delta;
|
||||
// return *val;
|
||||
TEXT runtime∕internal∕atomic·Xadd(SB), NOSPLIT, $0-20
|
||||
again:
|
||||
MOVD ptr+0(FP), R0
|
||||
MOVW delta+8(FP), R1
|
||||
again:
|
||||
LDAXRW (R0), R2
|
||||
ADDW R2, R1, R2
|
||||
STLXRW R2, (R0), R3
|
||||
|
@ -119,9 +119,9 @@ again:
|
|||
RET
|
||||
|
||||
TEXT runtime∕internal∕atomic·Xadd64(SB), NOSPLIT, $0-24
|
||||
again:
|
||||
MOVD ptr+0(FP), R0
|
||||
MOVD delta+8(FP), R1
|
||||
again:
|
||||
LDAXR (R0), R2
|
||||
ADD R2, R1, R2
|
||||
STLXR R2, (R0), R3
|
||||
|
|
Loading…
Reference in a new issue