// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build mips64 || mips64le #include "go_asm.h" #include "textflag.h" TEXT ·Count(SB),NOSPLIT,$0-40 // R1 = b_base // R2 = b_len // R3 = byte to count MOVV b_base+0(FP), R1 MOVV b_len+8(FP), R2 MOVBU c+24(FP), R3 MOVV R0, R5 // count ADDV R1, R2 // end loop: BEQ R1, R2, done MOVBU (R1), R6 ADDV $1, R1 BNE R3, R6, loop ADDV $1, R5 JMP loop done: MOVV R5, ret+32(FP) RET TEXT ·CountString(SB),NOSPLIT,$0-32 // R1 = s_base // R2 = s_len // R3 = byte to count MOVV s_base+0(FP), R1 MOVV s_len+8(FP), R2 MOVBU c+16(FP), R3 MOVV R0, R5 // count ADDV R1, R2 // end loop: BEQ R1, R2, done MOVBU (R1), R6 ADDV $1, R1 BNE R3, R6, loop ADDV $1, R5 JMP loop done: MOVV R5, ret+24(FP) RET