...

Text file src/internal/bytealg/indexbyte_loong64.s

Documentation: internal/bytealg

     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

View as plain text