go / src /internal /bytealg /count_mips64x.s
AbdulElahGwaith's picture
Upload folder using huggingface_hub
e36aeda verified
// 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