// Copyright (c) 2026 Petr Balvín (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