Files
gasm-sdk/asm/riscv_vector_test.go
T

660 lines
19 KiB
Go
Raw Normal View History

// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
// SPDX-License-Identifier: BSD-3-Clause
package asm
import (
"os"
"path/filepath"
"testing"
)
// TestRISCVVectorLS_Differential proves the vector load/store families and
// the configuration settings against the toolchain: the "V" extension's
// memory section of the toolchain's own testdata (unit, constant-stride and
// indexed accesses with their segments, the fault-only-first loads, the
// whole-register moves and the mask pair, every masked and unmasked form)
// assembled by gasm and by go tool asm must agree word for word.
func TestRISCVVectorLS_Differential(t *testing.T) {
src := `#include "textflag.h"
TEXT ·vecls(SB), NOSPLIT, $0
VSETVLI X10, E8, M1, TU, MU, X12
VSETVLI X10, E16, M1, TU, MU, X12
VSETVLI X10, E32, M1, TU, MU, X12
VSETVLI X10, E64, M1, TU, MU, X12
VSETVLI X10, E32, M1, TU, MA, X12
VSETVLI X10, E32, M1, TA, MA, X12
VSETVLI X10, E32, M2, TA, MA, X12
VSETVLI X10, E32, M4, TA, MA, X12
VSETVLI X10, E32, M8, TA, MA, X12
VSETVLI X10, E32, MF8, TA, MA, X12
VSETVLI X10, E32, MF4, TA, MA, X12
VSETVLI X10, E32, MF2, TA, MA, X12
VSETVLI X10, E32, M1, TA, MA, X12
VSETVLI $15, E32, M1, TA, MA, X12
VSETIVLI $0, E32, M1, TA, MA, X12
VSETIVLI $15, E32, M1, TA, MA, X12
VSETIVLI $31, E32, M1, TA, MA, X12
VSETVL X10, X11, X12
VLE8V (X10), V3
VLE8V (X10), V0, V3
VLE16V (X10), V3
VLE16V (X10), V0, V3
VLE32V (X10), V3
VLE32V (X10), V0, V3
VLE64V (X10), V3
VLE64V (X10), V0, V3
VSE8V V3, (X10)
VSE8V V3, V0, (X10)
VSE16V V3, (X10)
VSE16V V3, V0, (X10)
VSE32V V3, (X10)
VSE32V V3, V0, (X10)
VSE64V V3, (X10)
VSE64V V3, V0, (X10)
VLMV (X10), V3
VSMV V3, (X10)
VLSE8V (X10), X11, V3
VLSE8V (X10), X11, V0, V3
VLSE16V (X10), X11, V3
VLSE16V (X10), X11, V0, V3
VLSE32V (X10), X11, V3
VLSE32V (X10), X11, V0, V3
VLSE64V (X10), X11, V3
VLSE64V (X10), X11, V0, V3
VSSE8V V3, X11, (X10)
VSSE8V V3, X11, V0, (X10)
VSSE16V V3, X11, (X10)
VSSE16V V3, X11, V0, (X10)
VSSE32V V3, X11, (X10)
VSSE32V V3, X11, V0, (X10)
VSSE64V V3, X11, (X10)
VSSE64V V3, X11, V0, (X10)
VLUXEI8V (X10), V2, V3
VLUXEI8V (X10), V2, V0, V3
VLUXEI16V (X10), V2, V3
VLUXEI16V (X10), V2, V0, V3
VLUXEI32V (X10), V2, V3
VLUXEI32V (X10), V2, V0, V3
VLUXEI64V (X10), V2, V3
VLUXEI64V (X10), V2, V0, V3
VLOXEI8V (X10), V2, V3
VLOXEI8V (X10), V2, V0, V3
VLOXEI16V (X10), V2, V3
VLOXEI16V (X10), V2, V0, V3
VLOXEI32V (X10), V2, V3
VLOXEI32V (X10), V2, V0, V3
VLOXEI64V (X10), V2, V3
VLOXEI64V (X10), V2, V0, V3
VSUXEI8V V3, V2, (X10)
VSUXEI8V V3, V2, V0, (X10)
VSUXEI16V V3, V2, (X10)
VSUXEI16V V3, V2, V0, (X10)
VSUXEI32V V3, V2, (X10)
VSUXEI32V V3, V2, V0, (X10)
VSUXEI64V V3, V2, (X10)
VSUXEI64V V3, V2, V0, (X10)
VSOXEI8V V3, V2, (X10)
VSOXEI8V V3, V2, V0, (X10)
VSOXEI16V V3, V2, (X10)
VSOXEI16V V3, V2, V0, (X10)
VSOXEI32V V3, V2, (X10)
VSOXEI32V V3, V2, V0, (X10)
VSOXEI64V V3, V2, (X10)
VSOXEI64V V3, V2, V0, (X10)
VLE8FFV (X10), V8
VLE16FFV (X10), V8
VLE32FFV (X10), V8
VLE64FFV (X10), V8
VLE8FFV (X10), V0, V8
VLE16FFV (X10), V0, V8
VLE32FFV (X10), V0, V8
VLE64FFV (X10), V0, V8
VLSEG2E8V (X10), V8
VLSEG2E16V (X10), V8
VLSEG2E32V (X10), V8
VLSEG2E64V (X10), V8
VLSEG2E8V (X10), V0, V8
VLSEG2E16V (X10), V0, V8
VLSEG2E32V (X10), V0, V8
VLSEG2E64V (X10), V0, V8
VLSEG3E8V (X10), V8
VLSEG3E16V (X10), V8
VLSEG3E32V (X10), V8
VLSEG3E64V (X10), V8
VLSEG3E8V (X10), V0, V8
VLSEG3E16V (X10), V0, V8
VLSEG3E32V (X10), V0, V8
VLSEG3E64V (X10), V0, V8
VLSEG4E8V (X10), V8
VLSEG4E16V (X10), V8
VLSEG4E32V (X10), V8
VLSEG4E64V (X10), V8
VLSEG4E8V (X10), V0, V8
VLSEG4E16V (X10), V0, V8
VLSEG4E32V (X10), V0, V8
VLSEG4E64V (X10), V0, V8
VLSEG5E8V (X10), V8
VLSEG5E16V (X10), V8
VLSEG5E32V (X10), V8
VLSEG5E64V (X10), V8
VLSEG5E8V (X10), V0, V8
VLSEG5E16V (X10), V0, V8
VLSEG5E32V (X10), V0, V8
VLSEG5E64V (X10), V0, V8
VLSEG6E8V (X10), V8
VLSEG6E16V (X10), V8
VLSEG6E32V (X10), V8
VLSEG6E64V (X10), V8
VLSEG6E8V (X10), V0, V8
VLSEG6E16V (X10), V0, V8
VLSEG6E32V (X10), V0, V8
VLSEG6E64V (X10), V0, V8
VLSEG7E8V (X10), V8
VLSEG7E16V (X10), V8
VLSEG7E32V (X10), V8
VLSEG7E64V (X10), V8
VLSEG7E8V (X10), V0, V8
VLSEG7E16V (X10), V0, V8
VLSEG7E32V (X10), V0, V8
VLSEG7E64V (X10), V0, V8
VLSEG8E8V (X10), V8
VLSEG8E16V (X10), V8
VLSEG8E32V (X10), V8
VLSEG8E64V (X10), V8
VLSEG8E8V (X10), V0, V8
VLSEG8E16V (X10), V0, V8
VLSEG8E32V (X10), V0, V8
VLSEG8E64V (X10), V0, V8
VSSEG2E8V V24, (X10)
VSSEG2E16V V24, (X10)
VSSEG2E32V V24, (X10)
VSSEG2E64V V24, (X10)
VSSEG2E8V V24, V0, (X10)
VSSEG2E16V V24, V0, (X10)
VSSEG2E32V V24, V0, (X10)
VSSEG2E64V V24, V0, (X10)
VSSEG3E8V V24, (X10)
VSSEG3E16V V24, (X10)
VSSEG3E32V V24, (X10)
VSSEG3E64V V24, (X10)
VSSEG3E8V V24, V0, (X10)
VSSEG3E16V V24, V0, (X10)
VSSEG3E32V V24, V0, (X10)
VSSEG3E64V V24, V0, (X10)
VSSEG4E8V V24, (X10)
VSSEG4E16V V24, (X10)
VSSEG4E32V V24, (X10)
VSSEG4E64V V24, (X10)
VSSEG4E8V V24, V0, (X10)
VSSEG4E16V V24, V0, (X10)
VSSEG4E32V V24, V0, (X10)
VSSEG4E64V V24, V0, (X10)
VSSEG5E8V V24, (X10)
VSSEG5E16V V24, (X10)
VSSEG5E32V V24, (X10)
VSSEG5E64V V24, (X10)
VSSEG5E8V V24, V0, (X10)
VSSEG5E16V V24, V0, (X10)
VSSEG5E32V V24, V0, (X10)
VSSEG5E64V V24, V0, (X10)
VSSEG6E8V V24, (X10)
VSSEG6E16V V24, (X10)
VSSEG6E32V V24, (X10)
VSSEG6E64V V24, (X10)
VSSEG6E8V V24, V0, (X10)
VSSEG6E16V V24, V0, (X10)
VSSEG6E32V V24, V0, (X10)
VSSEG6E64V V24, V0, (X10)
VSSEG7E8V V24, (X10)
VSSEG7E16V V24, (X10)
VSSEG7E32V V24, (X10)
VSSEG7E64V V24, (X10)
VSSEG7E8V V24, V0, (X10)
VSSEG7E16V V24, V0, (X10)
VSSEG7E32V V24, V0, (X10)
VSSEG7E64V V24, V0, (X10)
VSSEG8E8V V24, (X10)
VSSEG8E16V V24, (X10)
VSSEG8E32V V24, (X10)
VSSEG8E64V V24, (X10)
VSSEG8E8V V24, V0, (X10)
VSSEG8E16V V24, V0, (X10)
VSSEG8E32V V24, V0, (X10)
VSSEG8E64V V24, V0, (X10)
VLSEG2E8FFV (X10), V8
VLSEG2E16FFV (X10), V8
VLSEG2E32FFV (X10), V8
VLSEG2E64FFV (X10), V8
VLSEG2E8FFV (X10), V0, V8
VLSEG2E16FFV (X10), V0, V8
VLSEG2E32FFV (X10), V0, V8
VLSEG2E64FFV (X10), V0, V8
VLSEG3E8FFV (X10), V8
VLSEG3E16FFV (X10), V8
VLSEG3E32FFV (X10), V8
VLSEG3E64FFV (X10), V8
VLSEG3E8FFV (X10), V0, V8
VLSEG3E16FFV (X10), V0, V8
VLSEG3E32FFV (X10), V0, V8
VLSEG3E64FFV (X10), V0, V8
VLSEG4E8FFV (X10), V8
VLSEG4E16FFV (X10), V8
VLSEG4E32FFV (X10), V8
VLSEG4E64FFV (X10), V8
VLSEG4E8FFV (X10), V0, V8
VLSEG4E16FFV (X10), V0, V8
VLSEG4E32FFV (X10), V0, V8
VLSEG4E64FFV (X10), V0, V8
VLSEG5E8FFV (X10), V8
VLSEG5E16FFV (X10), V8
VLSEG5E32FFV (X10), V8
VLSEG5E64FFV (X10), V8
VLSEG5E8FFV (X10), V0, V8
VLSEG5E16FFV (X10), V0, V8
VLSEG5E32FFV (X10), V0, V8
VLSEG5E64FFV (X10), V0, V8
VLSEG6E8FFV (X10), V8
VLSEG6E16FFV (X10), V8
VLSEG6E32FFV (X10), V8
VLSEG6E64FFV (X10), V8
VLSEG6E8FFV (X10), V0, V8
VLSEG6E16FFV (X10), V0, V8
VLSEG6E32FFV (X10), V0, V8
VLSEG6E64FFV (X10), V0, V8
VLSEG7E8FFV (X10), V8
VLSEG7E16FFV (X10), V8
VLSEG7E32FFV (X10), V8
VLSEG7E64FFV (X10), V8
VLSEG7E8FFV (X10), V0, V8
VLSEG7E16FFV (X10), V0, V8
VLSEG7E32FFV (X10), V0, V8
VLSEG7E64FFV (X10), V0, V8
VLSEG8E8FFV (X10), V8
VLSEG8E16FFV (X10), V8
VLSEG8E32FFV (X10), V8
VLSEG8E64FFV (X10), V8
VLSEG8E8FFV (X10), V0, V8
VLSEG8E16FFV (X10), V0, V8
VLSEG8E32FFV (X10), V0, V8
VLSEG8E64FFV (X10), V0, V8
VLSSEG2E8V (X10), X11, V8
VLSSEG2E16V (X10), X11, V8
VLSSEG2E32V (X10), X11, V8
VLSSEG2E64V (X10), X11, V8
VLSSEG2E8V (X10), X11, V0, V8
VLSSEG2E16V (X10), X11, V0, V8
VLSSEG2E32V (X10), X11, V0, V8
VLSSEG2E64V (X10), X11, V0, V8
VLSSEG3E8V (X10), X11, V8
VLSSEG3E16V (X10), X11, V8
VLSSEG3E32V (X10), X11, V8
VLSSEG3E64V (X10), X11, V8
VLSSEG3E8V (X10), X11, V0, V8
VLSSEG3E16V (X10), X11, V0, V8
VLSSEG3E32V (X10), X11, V0, V8
VLSSEG3E64V (X10), X11, V0, V8
VLSSEG4E8V (X10), X11, V8
VLSSEG4E16V (X10), X11, V8
VLSSEG4E32V (X10), X11, V8
VLSSEG4E64V (X10), X11, V8
VLSSEG4E8V (X10), X11, V0, V8
VLSSEG4E16V (X10), X11, V0, V8
VLSSEG4E32V (X10), X11, V0, V8
VLSSEG4E64V (X10), X11, V0, V8
VLSSEG5E8V (X10), X11, V8
VLSSEG5E16V (X10), X11, V8
VLSSEG5E32V (X10), X11, V8
VLSSEG5E64V (X10), X11, V8
VLSSEG5E8V (X10), X11, V0, V8
VLSSEG5E16V (X10), X11, V0, V8
VLSSEG5E32V (X10), X11, V0, V8
VLSSEG5E64V (X10), X11, V0, V8
VLSSEG6E8V (X10), X11, V8
VLSSEG6E16V (X10), X11, V8
VLSSEG6E32V (X10), X11, V8
VLSSEG6E64V (X10), X11, V8
VLSSEG6E8V (X10), X11, V0, V8
VLSSEG6E16V (X10), X11, V0, V8
VLSSEG6E32V (X10), X11, V0, V8
VLSSEG6E64V (X10), X11, V0, V8
VLSSEG7E8V (X10), X11, V8
VLSSEG7E16V (X10), X11, V8
VLSSEG7E32V (X10), X11, V8
VLSSEG7E64V (X10), X11, V8
VLSSEG7E8V (X10), X11, V0, V8
VLSSEG7E16V (X10), X11, V0, V8
VLSSEG7E32V (X10), X11, V0, V8
VLSSEG7E64V (X10), X11, V0, V8
VLSSEG8E8V (X10), X11, V8
VLSSEG8E16V (X10), X11, V8
VLSSEG8E32V (X10), X11, V8
VLSSEG8E64V (X10), X11, V8
VLSSEG8E8V (X10), X11, V0, V8
VLSSEG8E16V (X10), X11, V0, V8
VLSSEG8E32V (X10), X11, V0, V8
VLSSEG8E64V (X10), X11, V0, V8
VSSSEG2E8V V24, X11, (X10)
VSSSEG2E16V V24, X11, (X10)
VSSSEG2E32V V24, X11, (X10)
VSSSEG2E64V V24, X11, (X10)
VSSSEG2E8V V24, X11, V0, (X10)
VSSSEG2E16V V24, X11, V0, (X10)
VSSSEG2E32V V24, X11, V0, (X10)
VSSSEG2E64V V24, X11, V0, (X10)
VSSSEG3E8V V24, X11, (X10)
VSSSEG3E16V V24, X11, (X10)
VSSSEG3E32V V24, X11, (X10)
VSSSEG3E64V V24, X11, (X10)
VSSSEG3E8V V24, X11, V0, (X10)
VSSSEG3E16V V24, X11, V0, (X10)
VSSSEG3E32V V24, X11, V0, (X10)
VSSSEG3E64V V24, X11, V0, (X10)
VSSSEG4E8V V24, X11, (X10)
VSSSEG4E16V V24, X11, (X10)
VSSSEG4E32V V24, X11, (X10)
VSSSEG4E64V V24, X11, (X10)
VSSSEG4E8V V24, X11, V0, (X10)
VSSSEG4E16V V24, X11, V0, (X10)
VSSSEG4E32V V24, X11, V0, (X10)
VSSSEG4E64V V24, X11, V0, (X10)
VSSSEG5E8V V24, X11, (X10)
VSSSEG5E16V V24, X11, (X10)
VSSSEG5E32V V24, X11, (X10)
VSSSEG5E64V V24, X11, (X10)
VSSSEG5E8V V24, X11, V0, (X10)
VSSSEG5E16V V24, X11, V0, (X10)
VSSSEG5E32V V24, X11, V0, (X10)
VSSSEG5E64V V24, X11, V0, (X10)
VSSSEG6E8V V24, X11, (X10)
VSSSEG6E16V V24, X11, (X10)
VSSSEG6E32V V24, X11, (X10)
VSSSEG6E64V V24, X11, (X10)
VSSSEG6E8V V24, X11, V0, (X10)
VSSSEG6E16V V24, X11, V0, (X10)
VSSSEG6E32V V24, X11, V0, (X10)
VSSSEG6E64V V24, X11, V0, (X10)
VSSSEG7E8V V24, X11, (X10)
VSSSEG7E16V V24, X11, (X10)
VSSSEG7E32V V24, X11, (X10)
VSSSEG7E64V V24, X11, (X10)
VSSSEG7E8V V24, X11, V0, (X10)
VSSSEG7E16V V24, X11, V0, (X10)
VSSSEG7E32V V24, X11, V0, (X10)
VSSSEG7E64V V24, X11, V0, (X10)
VSSSEG8E8V V24, X11, (X10)
VSSSEG8E16V V24, X11, (X10)
VSSSEG8E32V V24, X11, (X10)
VSSSEG8E64V V24, X11, (X10)
VSSSEG8E8V V24, X11, V0, (X10)
VSSSEG8E16V V24, X11, V0, (X10)
VSSSEG8E32V V24, X11, V0, (X10)
VSSSEG8E64V V24, X11, V0, (X10)
VLUXSEG2EI8V (X10), V4, V8
VLUXSEG2EI16V (X10), V4, V8
VLUXSEG2EI32V (X10), V4, V8
VLUXSEG2EI64V (X10), V4, V8
VLUXSEG2EI8V (X10), V4, V0, V8
VLUXSEG2EI16V (X10), V4, V0, V8
VLUXSEG2EI32V (X10), V4, V0, V8
VLUXSEG2EI64V (X10), V4, V0, V8
VLUXSEG3EI8V (X10), V4, V8
VLUXSEG3EI16V (X10), V4, V8
VLUXSEG3EI32V (X10), V4, V8
VLUXSEG3EI64V (X10), V4, V8
VLUXSEG3EI8V (X10), V4, V0, V8
VLUXSEG3EI16V (X10), V4, V0, V8
VLUXSEG3EI32V (X10), V4, V0, V8
VLUXSEG3EI64V (X10), V4, V0, V8
VLUXSEG4EI8V (X10), V4, V8
VLUXSEG4EI16V (X10), V4, V8
VLUXSEG4EI32V (X10), V4, V8
VLUXSEG4EI64V (X10), V4, V8
VLUXSEG4EI8V (X10), V4, V0, V8
VLUXSEG4EI16V (X10), V4, V0, V8
VLUXSEG4EI32V (X10), V4, V0, V8
VLUXSEG4EI64V (X10), V4, V0, V8
VLUXSEG5EI8V (X10), V4, V8
VLUXSEG5EI16V (X10), V4, V8
VLUXSEG5EI32V (X10), V4, V8
VLUXSEG5EI64V (X10), V4, V8
VLUXSEG5EI8V (X10), V4, V0, V8
VLUXSEG5EI16V (X10), V4, V0, V8
VLUXSEG5EI32V (X10), V4, V0, V8
VLUXSEG5EI64V (X10), V4, V0, V8
VLUXSEG6EI8V (X10), V4, V8
VLUXSEG6EI16V (X10), V4, V8
VLUXSEG6EI32V (X10), V4, V8
VLUXSEG6EI64V (X10), V4, V8
VLUXSEG6EI8V (X10), V4, V0, V8
VLUXSEG6EI16V (X10), V4, V0, V8
VLUXSEG6EI32V (X10), V4, V0, V8
VLUXSEG6EI64V (X10), V4, V0, V8
VLOXSEG6EI8V (X10), V4, V8
VLOXSEG6EI16V (X10), V4, V8
VLOXSEG6EI32V (X10), V4, V8
VLOXSEG6EI64V (X10), V4, V8
VLOXSEG6EI8V (X10), V4, V0, V8
VLOXSEG6EI16V (X10), V4, V0, V8
VLOXSEG6EI32V (X10), V4, V0, V8
VLOXSEG6EI64V (X10), V4, V0, V8
VLUXSEG7EI8V (X10), V4, V8
VLUXSEG7EI16V (X10), V4, V8
VLUXSEG7EI32V (X10), V4, V8
VLUXSEG7EI64V (X10), V4, V8
VLUXSEG7EI8V (X10), V4, V0, V8
VLUXSEG7EI16V (X10), V4, V0, V8
VLUXSEG7EI32V (X10), V4, V0, V8
VLUXSEG7EI64V (X10), V4, V0, V8
VLUXSEG8EI8V (X10), V4, V8
VLUXSEG8EI16V (X10), V4, V8
VLUXSEG8EI32V (X10), V4, V8
VLUXSEG8EI64V (X10), V4, V8
VLUXSEG8EI8V (X10), V4, V0, V8
VLUXSEG8EI16V (X10), V4, V0, V8
VLUXSEG8EI32V (X10), V4, V0, V8
VLUXSEG8EI64V (X10), V4, V0, V8
VSUXSEG2EI8V V24, V4, (X10)
VSUXSEG2EI16V V24, V4, (X10)
VSUXSEG2EI32V V24, V4, (X10)
VSUXSEG2EI64V V24, V4, (X10)
VSUXSEG2EI8V V24, V4, V0, (X10)
VSUXSEG2EI16V V24, V4, V0, (X10)
VSUXSEG2EI32V V24, V4, V0, (X10)
VSUXSEG2EI64V V24, V4, V0, (X10)
VSUXSEG3EI8V V24, V4, (X10)
VSUXSEG3EI16V V24, V4, (X10)
VSUXSEG3EI32V V24, V4, (X10)
VSUXSEG3EI64V V24, V4, (X10)
VSUXSEG3EI8V V24, V4, V0, (X10)
VSUXSEG3EI16V V24, V4, V0, (X10)
VSUXSEG3EI32V V24, V4, V0, (X10)
VSUXSEG3EI64V V24, V4, V0, (X10)
VSUXSEG4EI8V V24, V4, (X10)
VSUXSEG4EI16V V24, V4, (X10)
VSUXSEG4EI32V V24, V4, (X10)
VSUXSEG4EI64V V24, V4, (X10)
VSUXSEG4EI8V V24, V4, V0, (X10)
VSUXSEG4EI16V V24, V4, V0, (X10)
VSUXSEG4EI32V V24, V4, V0, (X10)
VSUXSEG4EI64V V24, V4, V0, (X10)
VSUXSEG5EI8V V24, V4, (X10)
VSUXSEG5EI16V V24, V4, (X10)
VSUXSEG5EI32V V24, V4, (X10)
VSUXSEG5EI64V V24, V4, (X10)
VSUXSEG5EI8V V24, V4, V0, (X10)
VSUXSEG5EI16V V24, V4, V0, (X10)
VSUXSEG5EI32V V24, V4, V0, (X10)
VSUXSEG5EI64V V24, V4, V0, (X10)
VSUXSEG6EI8V V24, V4, (X10)
VSUXSEG6EI16V V24, V4, (X10)
VSUXSEG6EI32V V24, V4, (X10)
VSUXSEG6EI64V V24, V4, (X10)
VSUXSEG6EI8V V24, V4, V0, (X10)
VSUXSEG6EI16V V24, V4, V0, (X10)
VSUXSEG6EI32V V24, V4, V0, (X10)
VSUXSEG6EI64V V24, V4, V0, (X10)
VSUXSEG7EI8V V24, V4, (X10)
VSUXSEG7EI16V V24, V4, (X10)
VSUXSEG7EI32V V24, V4, (X10)
VSUXSEG7EI64V V24, V4, (X10)
VSUXSEG7EI8V V24, V4, V0, (X10)
VSUXSEG7EI16V V24, V4, V0, (X10)
VSUXSEG7EI32V V24, V4, V0, (X10)
VSUXSEG7EI64V V24, V4, V0, (X10)
VSUXSEG8EI8V V24, V4, (X10)
VSUXSEG8EI16V V24, V4, (X10)
VSUXSEG8EI32V V24, V4, (X10)
VSUXSEG8EI64V V24, V4, (X10)
VSUXSEG8EI8V V24, V4, V0, (X10)
VSUXSEG8EI16V V24, V4, V0, (X10)
VSUXSEG8EI32V V24, V4, V0, (X10)
VSUXSEG8EI64V V24, V4, V0, (X10)
VLOXSEG2EI8V (X10), V4, V8
VLOXSEG2EI16V (X10), V4, V8
VLOXSEG2EI32V (X10), V4, V8
VLOXSEG2EI64V (X10), V4, V8
VLOXSEG2EI8V (X10), V4, V0, V8
VLOXSEG2EI16V (X10), V4, V0, V8
VLOXSEG2EI32V (X10), V4, V0, V8
VLOXSEG2EI64V (X10), V4, V0, V8
VLOXSEG3EI8V (X10), V4, V8
VLOXSEG3EI16V (X10), V4, V8
VLOXSEG3EI32V (X10), V4, V8
VLOXSEG3EI64V (X10), V4, V8
VLOXSEG3EI8V (X10), V4, V0, V8
VLOXSEG3EI16V (X10), V4, V0, V8
VLOXSEG3EI32V (X10), V4, V0, V8
VLOXSEG3EI64V (X10), V4, V0, V8
VLOXSEG4EI8V (X10), V4, V8
VLOXSEG4EI16V (X10), V4, V8
VLOXSEG4EI32V (X10), V4, V8
VLOXSEG4EI64V (X10), V4, V8
VLOXSEG4EI8V (X10), V4, V0, V8
VLOXSEG4EI16V (X10), V4, V0, V8
VLOXSEG4EI32V (X10), V4, V0, V8
VLOXSEG4EI64V (X10), V4, V0, V8
VLOXSEG5EI8V (X10), V4, V8
VLOXSEG5EI16V (X10), V4, V8
VLOXSEG5EI32V (X10), V4, V8
VLOXSEG5EI64V (X10), V4, V8
VLOXSEG5EI8V (X10), V4, V0, V8
VLOXSEG5EI16V (X10), V4, V0, V8
VLOXSEG5EI32V (X10), V4, V0, V8
VLOXSEG5EI64V (X10), V4, V0, V8
VLOXSEG7EI8V (X10), V4, V8
VLOXSEG7EI16V (X10), V4, V8
VLOXSEG7EI32V (X10), V4, V8
VLOXSEG7EI64V (X10), V4, V8
VLOXSEG7EI8V (X10), V4, V0, V8
VLOXSEG7EI16V (X10), V4, V0, V8
VLOXSEG7EI32V (X10), V4, V0, V8
VLOXSEG7EI64V (X10), V4, V0, V8
VLOXSEG8EI8V (X10), V4, V8
VLOXSEG8EI16V (X10), V4, V8
VLOXSEG8EI32V (X10), V4, V8
VLOXSEG8EI64V (X10), V4, V8
VLOXSEG8EI8V (X10), V4, V0, V8
VLOXSEG8EI16V (X10), V4, V0, V8
VLOXSEG8EI32V (X10), V4, V0, V8
VLOXSEG8EI64V (X10), V4, V0, V8
VSOXSEG2EI8V V24, V4, (X10)
VSOXSEG2EI16V V24, V4, (X10)
VSOXSEG2EI32V V24, V4, (X10)
VSOXSEG2EI64V V24, V4, (X10)
VSOXSEG2EI8V V24, V4, V0, (X10)
VSOXSEG2EI16V V24, V4, V0, (X10)
VSOXSEG2EI32V V24, V4, V0, (X10)
VSOXSEG2EI64V V24, V4, V0, (X10)
VSOXSEG3EI8V V24, V4, (X10)
VSOXSEG3EI16V V24, V4, (X10)
VSOXSEG3EI32V V24, V4, (X10)
VSOXSEG3EI64V V24, V4, (X10)
VSOXSEG3EI8V V24, V4, V0, (X10)
VSOXSEG3EI16V V24, V4, V0, (X10)
VSOXSEG3EI32V V24, V4, V0, (X10)
VSOXSEG3EI64V V24, V4, V0, (X10)
VSOXSEG4EI8V V24, V4, (X10)
VSOXSEG4EI16V V24, V4, (X10)
VSOXSEG4EI32V V24, V4, (X10)
VSOXSEG4EI64V V24, V4, (X10)
VSOXSEG4EI8V V24, V4, V0, (X10)
VSOXSEG4EI16V V24, V4, V0, (X10)
VSOXSEG4EI32V V24, V4, V0, (X10)
VSOXSEG4EI64V V24, V4, V0, (X10)
VSOXSEG5EI8V V24, V4, (X10)
VSOXSEG5EI16V V24, V4, (X10)
VSOXSEG5EI32V V24, V4, (X10)
VSOXSEG5EI64V V24, V4, (X10)
VSOXSEG5EI8V V24, V4, V0, (X10)
VSOXSEG5EI16V V24, V4, V0, (X10)
VSOXSEG5EI32V V24, V4, V0, (X10)
VSOXSEG5EI64V V24, V4, V0, (X10)
VSOXSEG6EI8V V24, V4, (X10)
VSOXSEG6EI16V V24, V4, (X10)
VSOXSEG6EI32V V24, V4, (X10)
VSOXSEG6EI64V V24, V4, (X10)
VSOXSEG6EI8V V24, V4, V0, (X10)
VSOXSEG6EI16V V24, V4, V0, (X10)
VSOXSEG6EI32V V24, V4, V0, (X10)
VSOXSEG6EI64V V24, V4, V0, (X10)
VSOXSEG7EI8V V24, V4, (X10)
VSOXSEG7EI16V V24, V4, (X10)
VSOXSEG7EI32V V24, V4, (X10)
VSOXSEG7EI64V V24, V4, (X10)
VSOXSEG7EI8V V24, V4, V0, (X10)
VSOXSEG7EI16V V24, V4, V0, (X10)
VSOXSEG7EI32V V24, V4, V0, (X10)
VSOXSEG7EI64V V24, V4, V0, (X10)
VSOXSEG8EI8V V24, V4, (X10)
VSOXSEG8EI16V V24, V4, (X10)
VSOXSEG8EI32V V24, V4, (X10)
VSOXSEG8EI64V V24, V4, (X10)
VSOXSEG8EI8V V24, V4, V0, (X10)
VSOXSEG8EI16V V24, V4, V0, (X10)
VSOXSEG8EI32V V24, V4, V0, (X10)
VSOXSEG8EI64V V24, V4, V0, (X10)
VL1RV (X10), V3
VL1RE8V (X10), V3
VL1RE16V (X10), V3
VL1RE32V (X10), V3
VL1RE64V (X10), V3
VL2RV (X10), V2
VL2RE8V (X10), V2
VL2RE16V (X10), V2
VL2RE32V (X10), V2
VL2RE64V (X10), V2
VL4RV (X10), V4
VL4RE8V (X10), V4
VL4RE16V (X10), V4
VL4RE32V (X10), V4
VL4RE64V (X10), V4
VL8RV (X10), V8
VL8RE8V (X10), V8
VL8RE16V (X10), V8
VL8RE32V (X10), V8
VL8RE64V (X10), V8
VS1RV V3, (X11)
VS2RV V2, (X11)
VS4RV V4, (X11)
VS8RV V8, (X11)
RET
`
dir := t.TempDir()
path := filepath.Join(dir, "vecls_riscv64.s")
if err := os.WriteFile(path, []byte(src), 0o644); err != nil {
t.Fatal(err)
}
assertRISCVDifferential(t, path, src, "vecls")
}