|  | // Copyright 2020 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. | 
|  |  | 
|  | #include "go_asm.h" | 
|  | #include "textflag.h" | 
|  |  | 
|  | TEXT ·Count(SB),NOSPLIT,$0-40 | 
|  | MOV	b_base+0(FP), A1 | 
|  | MOV	b_len+8(FP), A2 | 
|  | MOVBU	c+24(FP), A3	// byte to count | 
|  | MOV	ZERO, A4	// count | 
|  | ADD	A1, A2		// end | 
|  |  | 
|  | loop: | 
|  | BEQ	A1, A2, done | 
|  | MOVBU	(A1), A5 | 
|  | ADD	$1, A1 | 
|  | BNE	A3, A5, loop | 
|  | ADD	$1, A4 | 
|  | JMP	loop | 
|  |  | 
|  | done: | 
|  | MOV	A4, ret+32(FP) | 
|  | RET | 
|  |  | 
|  | TEXT ·CountString(SB),NOSPLIT,$0-32 | 
|  | MOV	s_base+0(FP), A1 | 
|  | MOV	s_len+8(FP), A2 | 
|  | MOVBU	c+16(FP), A3	// byte to count | 
|  | MOV	ZERO, A4	// count | 
|  | ADD	A1, A2		// end | 
|  |  | 
|  | loop: | 
|  | BEQ	A1, A2, done | 
|  | MOVBU	(A1), A5 | 
|  | ADD	$1, A1 | 
|  | BNE	A3, A5, loop | 
|  | ADD	$1, A4 | 
|  | JMP	loop | 
|  |  | 
|  | done: | 
|  | MOV	A4, ret+24(FP) | 
|  | RET |