]> Cypherpunks repositories - gostls13.git/commitdiff
internal/bytealg: deduplicate code between Count/CountString for riscv64
authorJoel Sing <joel@sing.id.au>
Thu, 27 Feb 2025 12:04:15 +0000 (23:04 +1100)
committerJoel Sing <joel@sing.id.au>
Thu, 1 May 2025 12:56:26 +0000 (05:56 -0700)
Change-Id: I22eb4e7444e5fe5f6767cc960895f3c6e2fa13cc
Reviewed-on: https://go-review.googlesource.com/c/go/+/661615
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Carlos Amedee <carlos@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
src/internal/bytealg/count_riscv64.s

index 3f255cd2630c64da352eb7a7ddfafe1fbcf0cdbb..6cc49d13882b1bef3de50c46940f7256033c6ee4 100644 (file)
@@ -5,6 +5,13 @@
 #include "go_asm.h"
 #include "textflag.h"
 
+TEXT ·CountString<ABIInternal>(SB),NOSPLIT,$0-32
+       // X10 = s_base
+       // X11 = s_len
+       // X12 = byte to count
+       MOV     X12, X13
+       JMP     ·Count<ABIInternal>(SB)
+
 TEXT ·Count<ABIInternal>(SB),NOSPLIT,$0-40
        // X10 = b_base
        // X11 = b_len
@@ -26,24 +33,3 @@ loop:
 done:
        MOV     X14, X10
        RET
-
-TEXT ·CountString<ABIInternal>(SB),NOSPLIT,$0-32
-       // X10 = s_base
-       // X11 = s_len
-       // X12 = byte to count
-       AND     $0xff, X12
-       MOV     ZERO, X14       // count
-       ADD     X10, X11        // end
-
-       PCALIGN $16
-loop:
-       BEQ     X10, X11, done
-       MOVBU   (X10), X15
-       ADD     $1, X10
-       BNE     X12, X15, loop
-       ADD     $1, X14
-       JMP     loop
-
-done:
-       MOV     X14, X10
-       RET