]> Cypherpunks repositories - gostls13.git/commitdiff
internal/bytealg: mask high bit for riscv64 regabi
authorMeng Zhuo <mzh@golangcn.org>
Thu, 28 Apr 2022 15:20:53 +0000 (23:20 +0800)
committermzh <mzh@golangcn.org>
Tue, 3 May 2022 14:36:37 +0000 (14:36 +0000)
This CL masks byte params which high bits(~0xff) is unused for riscv64
regabi.
Currently the compiler only guarantees the low bits contains value.

Change-Id: I6dd6c867e60d2143fefde92c866f78c4b007a2f7
Reviewed-on: https://go-review.googlesource.com/c/go/+/402894
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: mzh <mzh@golangcn.org>
Reviewed-by: Benny Siegert <bsiegert@gmail.com>
src/internal/bytealg/count_riscv64.s
src/internal/bytealg/indexbyte_riscv64.s

index 1e081e2c8c5331058e0fd801006aadeaec49a9e5..a15d07d768917e34b3db360d046bcdd2168f3d1a 100644 (file)
@@ -15,7 +15,7 @@ TEXT ·Count<ABIInternal>(SB),NOSPLIT,$0-40
        // X11 = b_len
        // X12 = b_cap (unused)
        // X13 = byte to count (want in X12)
-       MOV     X13, X12
+       AND     $0xff, X13, X12
 #endif
        MOV     ZERO, X14       // count
        ADD     X10, X11        // end
@@ -45,6 +45,7 @@ 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
 
index e9d3e6be393eac074c6fd0fc5887d23bb45e984b..a20396592b9a4f5e8b1601dd3f484155f3bcf472 100644 (file)
@@ -15,6 +15,7 @@ TEXT ·IndexByte<ABIInternal>(SB),NOSPLIT,$0-40
        // X11 = b_len
        // X12 = b_cap (unused)
        // X13 = byte to find
+       AND     $0xff, X13
        MOV     X10, X12                // store base for later
        ADD     X10, X11                // end
        ADD     $-1, X10
@@ -47,6 +48,7 @@ TEXT ·IndexByteString<ABIInternal>(SB),NOSPLIT,$0-32
        // X10 = b_base
        // X11 = b_len
        // X12 = byte to find
+       AND     $0xff, X12
        MOV     X10, X13                // store base for later
        ADD     X10, X11                // end
        ADD     $-1, X10