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>
// 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
// X10 = s_base
// X11 = s_len
// X12 = byte to count
+ AND $0xff, X12
MOV ZERO, X14 // count
ADD X10, X11 // end
// 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
// 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