From 6fc1e341001e10430251ca90e80a022d95b0a5cf Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Thu, 27 Feb 2025 23:04:15 +1100 Subject: [PATCH] internal/bytealg: deduplicate code between Count/CountString for riscv64 Change-Id: I22eb4e7444e5fe5f6767cc960895f3c6e2fa13cc Reviewed-on: https://go-review.googlesource.com/c/go/+/661615 Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Auto-Submit: Carlos Amedee Reviewed-by: Carlos Amedee --- src/internal/bytealg/count_riscv64.s | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/src/internal/bytealg/count_riscv64.s b/src/internal/bytealg/count_riscv64.s index 3f255cd263..6cc49d1388 100644 --- a/src/internal/bytealg/count_riscv64.s +++ b/src/internal/bytealg/count_riscv64.s @@ -5,6 +5,13 @@ #include "go_asm.h" #include "textflag.h" +TEXT ·CountString(SB),NOSPLIT,$0-32 + // X10 = s_base + // X11 = s_len + // X12 = byte to count + MOV X12, X13 + JMP ·Count(SB) + TEXT ·Count(SB),NOSPLIT,$0-40 // X10 = b_base // X11 = b_len @@ -26,24 +33,3 @@ loop: done: MOV X14, X10 RET - -TEXT ·CountString(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