86 lines
1.7 KiB
ArmAsm
86 lines
1.7 KiB
ArmAsm
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
|||
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
|
||
|
|
// Differential kernel for the loong64 LSX/LASX slice: every function pairs
|
||
|
|
// with the same instructions in the go tool asm ground truth.
|
||
|
|
|
||
|
|
#include "textflag.h"
|
||
|
|
|
||
|
|
TEXT ·threeReg(SB), NOSPLIT, $0-0
|
||
|
|
VADDV V1, V2, V3
|
||
|
|
VADDW V1, V2, V3
|
||
|
|
VADDV V2, V1
|
||
|
|
VANDV V1, V2, V3
|
||
|
|
VANDV V1, V2
|
||
|
|
VXORV V1, V2, V3
|
||
|
|
VXORV V1, V2
|
||
|
|
VSEQB V1, V2, V3
|
||
|
|
VSEQV V1, V2, V3
|
||
|
|
VSRAB V1, V2, V3
|
||
|
|
VROTRW V1, V2, V3
|
||
|
|
VPCNTV V1, V2
|
||
|
|
XVADDV X1, X2, X3
|
||
|
|
XVADDV X2, X1
|
||
|
|
XVANDV X1, X2, X3
|
||
|
|
XVXORV X1, X2, X3
|
||
|
|
XVSEQB X1, X2, X3
|
||
|
|
XVSEQV X1, X2, X3
|
||
|
|
XVPCNTV X1, X2
|
||
|
|
RET
|
||
|
|
|
||
|
|
TEXT ·immediates(SB), NOSPLIT, $0-0
|
||
|
|
VANDB $0, V2, V3
|
||
|
|
VANDB $255, V2
|
||
|
|
VSEQB $3, V2, V3
|
||
|
|
VSEQV $15, V2, V3
|
||
|
|
VSRAB $0, V1, V2
|
||
|
|
VSRAB $7, V1, V2
|
||
|
|
VSRAB $6, V1
|
||
|
|
VROTRW $0, V1, V2
|
||
|
|
VROTRW $16, V1, V2
|
||
|
|
VROTRW $16, V1
|
||
|
|
XVANDB $1, X2, X2
|
||
|
|
RET
|
||
|
|
|
||
|
|
TEXT ·conditions(SB), NOSPLIT, $0-0
|
||
|
|
VSETNEV V1, FCC0
|
||
|
|
VSETANYEQB V1, FCC0
|
||
|
|
VSETANYEQV V2, FCC0
|
||
|
|
VSETALLNEV V0, FCC0
|
||
|
|
XVSETNEV X1, FCC0
|
||
|
|
XVSETANYEQB X1, FCC0
|
||
|
|
XVSETANYEQV X1, FCC0
|
||
|
|
XVSETALLNEV X1, FCC0
|
||
|
|
RET
|
||
|
|
|
||
|
|
TEXT ·fpConvert(SB), NOSPLIT, $0-0
|
||
|
|
FFINTDV F0, F1
|
||
|
|
FSEL FCC0, F3, F4, F3
|
||
|
|
FSEL FCC1, F1, F2
|
||
|
|
RET
|
||
|
|
|
||
|
|
TEXT ·memMoves(SB), NOSPLIT, $0-0
|
||
|
|
VMOVQ V1, V9
|
||
|
|
VMOVQ (R4), V2
|
||
|
|
VMOVQ 16(R4), V2
|
||
|
|
VMOVQ V0, (R4)
|
||
|
|
VMOVQ V0, 32(R4)
|
||
|
|
VMOVQ V0,-16(R6)
|
||
|
|
VMOVQ (R4)(R7), V3
|
||
|
|
VMOVQ V3, (R4)(R7)
|
||
|
|
XVMOVQ X3, X7
|
||
|
|
XVMOVQ (R4), X2
|
||
|
|
XVMOVQ X0, (R4)
|
||
|
|
XVMOVQ (R4)(R7), X4
|
||
|
|
XVMOVQ X0, (R4)(R7)
|
||
|
|
RET
|
||
|
|
|
||
|
|
TEXT ·elements(SB), NOSPLIT, $0-0
|
||
|
|
VMOVQ R6, V0.B16
|
||
|
|
VMOVQ R6, V12.W4
|
||
|
|
XVMOVQ R6, X0.B32
|
||
|
|
VMOVQ (R4), V4.W4
|
||
|
|
VMOVQ (R10), V0.W4
|
||
|
|
XVMOVQ (R4), X0.B32
|
||
|
|
RET
|