aboutsummaryrefslogtreecommitdiff
path: root/src/internal/bytealg/equal_arm64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/bytealg/equal_arm64.s')
-rw-r--r--src/internal/bytealg/equal_arm64.s21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/internal/bytealg/equal_arm64.s b/src/internal/bytealg/equal_arm64.s
index 01aa7b7b7a..944edd8768 100644
--- a/src/internal/bytealg/equal_arm64.s
+++ b/src/internal/bytealg/equal_arm64.s
@@ -20,20 +20,15 @@ equal:
RET
// memequal_varlen(a, b unsafe.Pointer) bool
-TEXT runtime·memequal_varlen(SB),NOSPLIT,$40-17
- MOVD a+0(FP), R3
- MOVD b+8(FP), R4
- CMP R3, R4
+TEXT runtime·memequal_varlen(SB),NOSPLIT,$0-17
+ MOVD a+0(FP), R0
+ MOVD b+8(FP), R2
+ CMP R0, R2
BEQ eq
- MOVD 8(R26), R5 // compiler stores size at offset 8 in the closure
- CBZ R5, eq
- MOVD R3, 8(RSP)
- MOVD R4, 16(RSP)
- MOVD R5, 24(RSP)
- BL runtime·memequal(SB)
- MOVBU 32(RSP), R3
- MOVB R3, ret+16(FP)
- RET
+ MOVD 8(R26), R1 // compiler stores size at offset 8 in the closure
+ CBZ R1, eq
+ MOVD $ret+16(FP), R8
+ B memeqbody<>(SB)
eq:
MOVD $1, R3
MOVB R3, ret+16(FP)