...

Text file src/internal/bytealg/equal_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
     8#define	REGCTXT	R29
     9
    10// memequal(a, b unsafe.Pointer, size uintptr) bool
    11TEXT runtime·memequal<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-25
    12	BEQ	R4, R5, eq
    13	ADDV	R4, R6, R7
    14	PCALIGN	$16
    15loop:
    16	BNE	R4, R7, test
    17	MOVV	$1, R4
    18	RET
    19test:
    20	MOVBU	(R4), R9
    21	ADDV	$1, R4
    22	MOVBU	(R5), R10
    23	ADDV	$1, R5
    24	BEQ	R9, R10, loop
    25
    26	MOVB    R0, R4
    27	RET
    28eq:
    29	MOVV	$1, R4
    30	RET
    31
    32// memequal_varlen(a, b unsafe.Pointer) bool
    33TEXT runtime·memequal_varlen<ABIInternal>(SB),NOSPLIT,$40-17
    34	BEQ	R4, R5, eq
    35	MOVV	8(REGCTXT), R6    // compiler stores size at offset 8 in the closure
    36	MOVV	R4, 8(R3)
    37	MOVV	R5, 16(R3)
    38	MOVV	R6, 24(R3)
    39	JAL	runtime·memequal(SB)
    40	MOVBU	32(R3), R4
    41	RET
    42eq:
    43	MOVV	$1, R4
    44	RET

View as plain text