660 lines
19 KiB
Go
660 lines
19 KiB
Go
// 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")
|
||
|
|
}
|