| // Copyright 2018 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 ·IndexByte(SB),NOSPLIT,$0-20 |
| MOVL b_base+0(FP), SI |
| MOVL b_len+4(FP), CX |
| MOVB c+12(FP), AL |
| MOVL SI, DI |
| CLD; REPN; SCASB |
| JZ 3(PC) |
| MOVL $-1, ret+16(FP) |
| RET |
| SUBL SI, DI |
| SUBL $1, DI |
| MOVL DI, ret+16(FP) |
| RET |
| |
| TEXT ·IndexByteString(SB),NOSPLIT,$0-16 |
| MOVL s_base+0(FP), SI |
| MOVL s_len+4(FP), CX |
| MOVB c+8(FP), AL |
| MOVL SI, DI |
| CLD; REPN; SCASB |
| JZ 3(PC) |
| MOVL $-1, ret+12(FP) |
| RET |
| SUBL SI, DI |
| SUBL $1, DI |
| MOVL DI, ret+12(FP) |
| RET |