1// Copyright 2022 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5#include "go_asm.h" 6#include "textflag.h" 7 8TEXT ·IndexByte<ABIInternal>(SB),NOSPLIT,$0-40 9 // R4 = b_base 10 // R5 = b_len 11 // R6 = b_cap (unused) 12 // R7 = byte to find 13 AND $0xff, R7 14 MOVV R4, R6 // store base for later 15 ADDV R4, R5 // end 16 ADDV $-1, R4 17 18 PCALIGN $16 19loop: 20 ADDV $1, R4 21 BEQ R4, R5, notfound 22 MOVBU (R4), R8 23 BNE R7, R8, loop 24 25 SUBV R6, R4 // remove base 26 RET 27 28notfound: 29 MOVV $-1, R4 30 RET 31 32TEXT ·IndexByteString<ABIInternal>(SB),NOSPLIT,$0-32 33 // R4 = s_base 34 // R5 = s_len 35 // R6 = byte to find 36 MOVV R4, R7 // store base for later 37 ADDV R4, R5 // end 38 ADDV $-1, R4 39 40 PCALIGN $16 41loop: 42 ADDV $1, R4 43 BEQ R4, R5, notfound 44 MOVBU (R4), R8 45 BNE R6, R8, loop 46 47 SUBV R7, R4 // remove base 48 RET 49 50notfound: 51 MOVV $-1, R4 52 RET 53