// Copyright (c) 2026 Petr Balvín (https://petrbalvin.org) // SPDX-License-Identifier: BSD-3-Clause // Seed corpus for FuzzAssembleLOONG64: the shuffle/permute immediate family. // VSHUF4I.B/H/W take a ui8 packing two position nibbles; VSHUF4I.V is // range-gated to 0..15 although its field is ui8, the same gate the // toolchain keeps. VPERMI.W and the VEXTRINS pack an element index and an // insert/extract order in one ui8. #include "textflag.h" TEXT ·shuf4(SB), NOSPLIT, $0 VSHUF4IB $0, V2, V1 VSHUF4IB $16, V2, V1 VSHUF4IB $255, V2, V1 VSHUF4IH $0, V2, V1 VSHUF4IH $128, V2, V1 VSHUF4IH $255, V2, V1 VSHUF4IW $0, V2, V1 VSHUF4IW $96, V2, V1 VSHUF4IW $255, V2, V1 VSHUF4IV $0, V2, V1 VSHUF4IV $8, V2, V1 VSHUF4IV $15, V2, V1 RET TEXT ·shuf4X(SB), NOSPLIT, $0 XVSHUF4IB $0, X2, X1 XVSHUF4IB $255, X2, X1 XVSHUF4IH $255, X2, X1 XVSHUF4IW $255, X2, X1 XVSHUF4IV $0, X2, X1 XVSHUF4IV $15, X2, X1 RET TEXT ·permi(SB), NOSPLIT, $0 VPERMIW $0, V2, V1 VPERMIW $255, V2, V1 XVPERMIW $0, X2, X1 XVPERMIW $255, X2, X1 XVPERMIV $0, X2, X1 XVPERMIV $255, X2, X1 XVPERMIQ $0, X2, X1 XVPERMIQ $255, X2, X1 RET TEXT ·extrins(SB), NOSPLIT, $0 VEXTRINSB $0, V2, V1 VEXTRINSB $255, V2, V1 VEXTRINSH $0, V2, V1 VEXTRINSH $255, V2, V1 VEXTRINSW $0, V2, V1 VEXTRINSW $255, V2, V1 VEXTRINSV $0, V2, V1 VEXTRINSV $255, V2, V1 XVEXTRINSB $0, X2, X1 XVEXTRINSB $255, X2, X1 XVEXTRINSH $255, X2, X1 XVEXTRINSW $255, X2, X1 XVEXTRINSV $255, X2, X1 RET