test(asm): seed the riscv64 and loong64 assemble fuzz targets
Assisted-by: GLM 5.3
This commit is contained in:
1 parent
b9dfb48d79
commit
965b33e5b0
11 files changed
+1288
No files matched your search
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: the CSR instructions over the whole
|
||||
// 12-bit address range and the 5-bit immediate window of the CSRRWI family.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·csrRegs(SB), NOSPLIT, $0
|
||||
CSRRW $0x300, X5, X6
|
||||
CSRRS $0x304, X7, X8
|
||||
CSRRC $0x305, X9, X10
|
||||
CSRRW $0, X5, X6
|
||||
CSRRS $0xFFF, X7, X8
|
||||
CSRRC $0x7FF, X9, X10
|
||||
CSRRW $0x341, X0, X6
|
||||
CSRRS $0x342, X0, X6
|
||||
RET
|
||||
|
||||
TEXT ·csrImm(SB), NOSPLIT, $0
|
||||
CSRRWI $0x300, $0, X6
|
||||
CSRRSI $0x304, $31, X8
|
||||
CSRRCI $0x305, $1, X10
|
||||
CSRRWI $0xFFF, $15, X6
|
||||
CSRRSI $0, $31, X8
|
||||
CSRRCI $0x7FF, $16, X10
|
||||
RET
|
||||
|
||||
TEXT ·csrNamed(SB), NOSPLIT, $0
|
||||
CSRRS $0xC00, X0, X14
|
||||
CSRRS $0xC01, X0, X15
|
||||
CSRRS $0xC02, X0, X16
|
||||
CSRRW $0x105, X5, X6
|
||||
CSRRSI $0x106, $1, X7
|
||||
RET
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: the immediate-range ladder of the
|
||||
// I-type arithmetic and the U-type pair, the family GOROOT's riscv64
|
||||
// assembler corpus walks (cmd/asm/internal/asm/testdata/riscv64.s). Every
|
||||
// boundary sits on an encoder gate: the 12-bit signed window, the
|
||||
// one-instruction and two-instruction decompositions, the shamt widths and
|
||||
// the wide MOV immediate that goes through the literal pool.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·immIType(SB), NOSPLIT, $0
|
||||
ADDI $2047, X5, X6
|
||||
ADDI $-2048, X5, X6
|
||||
ADDI $2048, X5, X6
|
||||
ADDI $-2049, X5, X6
|
||||
ADDI $4094, X5, X6
|
||||
ADDI $-4096, X5, X6
|
||||
ADDI $4095, X5, X6
|
||||
ADDI $-4097, X5, X6
|
||||
ADDI $0, X5, X6
|
||||
SLTI $2047, X5, X7
|
||||
SLTI $-2048, X5, X7
|
||||
SLTIU $2047, X5, X7
|
||||
SLTIU $-2048, X5, X7
|
||||
ANDI $-2048, X5, X6
|
||||
ANDI $2047, X5, X6
|
||||
ORI $-1, X5, X6
|
||||
XORI $2047, X5, X6
|
||||
XORI $-2048, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·immAlias(SB), NOSPLIT, $0
|
||||
ADD $2047, X5, X6
|
||||
ADD $2048, X5, X6
|
||||
SUB $1, X5, X6
|
||||
SUB $2049, X5, X6
|
||||
AND $-1, X5, X6
|
||||
OR $2047, X5, X6
|
||||
XOR $-2048, X5, X6
|
||||
SLT $55, X5, X7
|
||||
SLTU $55, X5, X7
|
||||
ADDW $2047, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·immUType(SB), NOSPLIT, $0
|
||||
LUI $0x7FFFF, X6
|
||||
LUI $-0x80000, X6
|
||||
LUI $1, X6
|
||||
AUIPC $0x7FFFF, X7
|
||||
AUIPC $-0x80000, X7
|
||||
RET
|
||||
|
||||
TEXT ·immShift(SB), NOSPLIT, $0
|
||||
SLLI $0, X5, X6
|
||||
SLLI $31, X5, X6
|
||||
SLLI $63, X5, X6
|
||||
SRLI $31, X5, X6
|
||||
SRLI $63, X5, X6
|
||||
SRAI $1, X5, X6
|
||||
SRAI $63, X5, X6
|
||||
SLLIW $31, X5, X6
|
||||
SRLIW $31, X5, X6
|
||||
SRAIW $31, X5, X6
|
||||
SLLIUW $31, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·immWide(SB), NOSPLIT, $0
|
||||
MOV $0, X10
|
||||
MOV $2047, X10
|
||||
MOV $2048, X10
|
||||
MOV $-2048, X10
|
||||
MOV $4095, X10
|
||||
MOV $-4097, X10
|
||||
MOV $0x12345678, X10
|
||||
MOV $0x123456789, X10
|
||||
MOV $0x123456789ABCDEF0, X10
|
||||
MOV $-1, X11
|
||||
MOV $-0x8000000000000000, X11
|
||||
MOV $0x7FFFFFFFFFFFFFFF, X12
|
||||
RET
|
||||
|
||||
TEXT ·memOffsets(SB), NOSPLIT, $0
|
||||
LD 0(X10), X11
|
||||
LD 2047(X10), X11
|
||||
LD -2048(X10), X11
|
||||
LD 2048(X10), X11
|
||||
LD 4095(X10), X11
|
||||
LD -4096(X10), X11
|
||||
LW 0(X10), X12
|
||||
LBU -1(X10), X12
|
||||
LHU 2(X10), X12
|
||||
LWU -3(X10), X12
|
||||
SD X11, 0(X10)
|
||||
SD X11, 2047(X10)
|
||||
SD X11,-2048(X10)
|
||||
SD X11, 4095(X10)
|
||||
SW X12,-4096(X10)
|
||||
SH X12, 6(X10)
|
||||
SB X12, 7(X10)
|
||||
FLW 8(X10), F8
|
||||
FLD -8(X10), F8
|
||||
FSW F8, 16(X10)
|
||||
FSD F8,-16(X10)
|
||||
RET
|
||||
Vendored
+95
@@ -0,0 +1,95 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: the RVC-compressible shapes. Every
|
||||
// instruction here has a compressed 16-bit encoding the compression pass may
|
||||
// pick: the two-operand ALU forms over x8-x15, the stack-pointer loads and
|
||||
// stores at the scaled offset boundaries, C.ADDI16SP and C.ADDI4SPN ranges,
|
||||
// the compressed branches and the uncompressible spellings beside them.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·primeALU(SB), NOSPLIT, $0
|
||||
ADD X9, X8, X8
|
||||
ADD X15, X8, X8
|
||||
ADDI $1, X8, X8
|
||||
ADDI $31, X15, X15
|
||||
ADDI $-32, X8, X8
|
||||
AND X9, X8, X8
|
||||
ANDI $3, X8, X8
|
||||
OR X10, X9, X9
|
||||
XOR X11, X10, X10
|
||||
SUB X13, X12, X12
|
||||
SLLI $2, X8, X8
|
||||
SRLI $5, X9, X9
|
||||
SRAI $7, X10, X10
|
||||
MOV X9, X8
|
||||
MOV X1, X8
|
||||
MOV X8, X1
|
||||
RET
|
||||
|
||||
TEXT ·stackOffsets(SB), NOSPLIT, $0
|
||||
LW 0(X2), X8
|
||||
LW 4(X2), X8
|
||||
LW 124(X2), X9
|
||||
LW 2044(X2), X10
|
||||
LD 0(X2), X8
|
||||
LD 8(X2), X8
|
||||
LD 504(X2), X9
|
||||
SW X8, 0(X2)
|
||||
SW X8, 124(X2)
|
||||
SW X8, 2044(X2)
|
||||
SD X8, 0(X2)
|
||||
SD X8, 504(X2)
|
||||
FLW 0(X2), F8
|
||||
FLD 504(X2), F8
|
||||
FSW F8, 0(X2)
|
||||
FSD F8, 504(X2)
|
||||
RET
|
||||
|
||||
TEXT ·frameAdj(SB), NOSPLIT, $0
|
||||
ADDI $16, X2, X2
|
||||
ADDI $-16, X2, X2
|
||||
ADDI $496, X2, X2
|
||||
ADDI $-512, X2, X2
|
||||
ADDI $1024, X2, X2
|
||||
ADDI $2048, X2, X2
|
||||
ADDI $1, X2, X2
|
||||
RET
|
||||
|
||||
TEXT ·primeMem(SB), NOSPLIT, $0
|
||||
LW 0(X8), X9
|
||||
LW 4(X8), X10
|
||||
LW 124(X8), X11
|
||||
LD 0(X8), X9
|
||||
LD 8(X8), X10
|
||||
LD 120(X8), X11
|
||||
SW X9, 0(X8)
|
||||
SW X9, 124(X8)
|
||||
SD X9, 0(X8)
|
||||
SD X9, 120(X8)
|
||||
RET
|
||||
|
||||
TEXT ·cBranches(SB), NOSPLIT, $0
|
||||
BEQ X8, X0, cb1
|
||||
BNE X9, X0, cb2
|
||||
BLT X10, X0, cb1
|
||||
BGE X11, X0, cb2
|
||||
BLTU X12, X0, cb1
|
||||
BGEU X13, X0, cb2
|
||||
|
||||
cb1:
|
||||
MOV X8, X9
|
||||
|
||||
cb2:
|
||||
MOV X9, X8
|
||||
RET
|
||||
|
||||
TEXT ·uncompressible(SB), NOSPLIT, $0
|
||||
ADD X17, X16, X16
|
||||
ADDI $2048, X8, X8
|
||||
LW 2048(X2), X10
|
||||
LD 512(X2), X10
|
||||
SW X8, 2048(X2)
|
||||
ADDI $2049, X2, X2
|
||||
RET
|
||||
Vendored
+233
@@ -0,0 +1,233 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: the RVV surface. The configuration
|
||||
// setters, the load/store families with their segment and fault-only-first
|
||||
// variants, the arithmetic operand classes (VV/VX/VI, the masks, the
|
||||
// merge and carry forms, the reductions and the whole-register moves).
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·config(SB), NOSPLIT, $0
|
||||
VSETVLI X5, E8, M8, TA, MA, X6
|
||||
VSETVLI X5, E8, M1, TU, MU, X6
|
||||
VSETVLI $15, E32, M1, TA, MA, X12
|
||||
VSETVLI $31, E64, M2, TU, MU, X12
|
||||
VSETIVLI $0, E16, M4, TA, MA, X0
|
||||
VSETIVLI $4, E32, M1, TA, MA, X0
|
||||
VSETIVLI $31, E8, M8, TU, MU, X15
|
||||
RET
|
||||
|
||||
TEXT ·loads(SB), NOSPLIT, $0
|
||||
VLE8V (X10), V8
|
||||
VLE16V (X10), V8
|
||||
VLE32V (X10), V8
|
||||
VLE64V (X11), V16
|
||||
VSE8V V8, (X10)
|
||||
VSE16V V8, (X10)
|
||||
VSE32V V15, (X11)
|
||||
VSE64V V24, (X10)
|
||||
VLSE8V (X14), X9, V0
|
||||
VLSE32V (X14), X5, V4
|
||||
VSSE64V V4, X7, (X14)
|
||||
VLUXEI8V (X10), V20, V4
|
||||
VLOXEI32V (X10), V20, V4
|
||||
VSUXEI64V V4, V20, (X10)
|
||||
VSOXEI16V V4, V20, (X10)
|
||||
VLE8FFV (X10), V8
|
||||
RET
|
||||
|
||||
TEXT ·segments(SB), NOSPLIT, $0
|
||||
VLSEG2E8V (X14), V0
|
||||
VLSEG4E32V (X14), V0
|
||||
VLSEG8E64V (X14), V4
|
||||
VSSEG2E32V V0, (X14)
|
||||
VSSEG8E8V V4, (X14)
|
||||
VLSSEG4E32V (X14), X0, V0
|
||||
VLSSEG8E32V (X10), X0, V4
|
||||
VLUXSEG2EI32V (X10), V20, V4
|
||||
VLOXSEG4EI64V (X10), V20, V4
|
||||
VSUXSEG2EI8V V4, V20, (X10)
|
||||
VLSEG4E8FFV (X14), V0
|
||||
RET
|
||||
|
||||
TEXT ·wholeReg(SB), NOSPLIT, $0
|
||||
VL1RV (X10), V8
|
||||
VL2RV (X10), V16
|
||||
VL4RV (X10), V0
|
||||
VL8RV (X10), V0
|
||||
VS1RV V8, (X10)
|
||||
VS2RV V16, (X10)
|
||||
VS4RV V0, (X10)
|
||||
VS8RV V0, (X10)
|
||||
VL1RE8V (X10), V8
|
||||
VL2RE16V (X10), V16
|
||||
VL4RE32V (X10), V0
|
||||
VL8RE64V (X10), V0
|
||||
VL2RE64V (X10), V16
|
||||
VLMV (X10), V0
|
||||
VSMV V0, (X10)
|
||||
RET
|
||||
|
||||
TEXT ·arith(SB), NOSPLIT, $0
|
||||
VADDVV V1, V2, V3
|
||||
VADDVV V1, V2, V0, V3
|
||||
VADDVX X10, V2, V0, V3
|
||||
VADDVI $15, V2, V0, V3
|
||||
VADDVI $-16, V2, V0, V3
|
||||
VADDVI $0, V2, V3
|
||||
VSUBVV V1, V2, V0, V3
|
||||
VSUBVX X10, V2, V3
|
||||
VRSUBVX X10, V2, V0, V3
|
||||
VRSUBVI $15, V2, V0, V3
|
||||
VANDVI $-1, V2, V3
|
||||
VORVI $15, V2, V3
|
||||
VORVI $-16, V2, V3
|
||||
VXORVI $0, V2, V3
|
||||
VNEGV V2, V0, V3
|
||||
VNOTV V2, V3
|
||||
VIDV V12
|
||||
VFMVVF F10, V14
|
||||
VMVVI $15, V14
|
||||
VMVVI $-16, V14
|
||||
VMVVV V1, V4
|
||||
VMVVX X10, V4
|
||||
VMVXS V4, X10
|
||||
VFMVSF F10, X11
|
||||
RET
|
||||
|
||||
TEXT ·shiftsSliding(SB), NOSPLIT, $0
|
||||
VSLLVI $0, V28, V30
|
||||
VSLLVI $31, V28, V30
|
||||
VSRLVI $25, V29, V29
|
||||
VSRAVI $31, V4, V5
|
||||
VNSRLWI $31, V6, V7
|
||||
VNSRAWI $0, V6, V7
|
||||
VSLLVV V1, V2, V3
|
||||
VSRLVX X10, V2, V3
|
||||
VSRAVV V1, V2, V3
|
||||
VRORVI $7, V4, V5
|
||||
VRORVI $31, V4, V5
|
||||
VRORVV V1, V2, V3
|
||||
VROLVX X10, V2, V3
|
||||
VSLIDEUPVI $31, V4, V5
|
||||
VSLIDEUPVX X10, V4, V5
|
||||
VSLIDEDOWNVI $0, V4, V5
|
||||
VSLIDEDOWNVX X10, V4, V5
|
||||
VFSLIDE1UPVF F10, V4, V5
|
||||
VFSLIDE1DOWNVF F10, V4, V5
|
||||
VRGATHERVI $31, V2, V3
|
||||
VRGATHERVV V1, V2, V3
|
||||
VRGATHERVX X10, V2, V3
|
||||
RET
|
||||
|
||||
TEXT ·compareMask(SB), NOSPLIT, $0
|
||||
VMSEQVV V1, V2, V0
|
||||
VMSEQVX X10, V2, V0
|
||||
VMSEQVI $0, V2, V0
|
||||
VMSNEVI $-16, V2, V0
|
||||
VMSLTVI $15, V2, V0
|
||||
VMSLTUVI $15, V2, V0
|
||||
VMSLEVI $-1, V2, V0
|
||||
VMSGEVI $15, V2, V0
|
||||
VMSGEUVI $0, V2, V0
|
||||
VMSGTVV V1, V2, V0
|
||||
VMSLEVV V1, V2, V0
|
||||
VMFEQVF F10, V2, V0
|
||||
VMFLTVF F10, V2, V0
|
||||
VMFGEVF F10, V2, V0
|
||||
VMANDMM V1, V2, V3
|
||||
VMNANDMM V1, V2, V3
|
||||
VMANDNMM V1, V2, V3
|
||||
VMORMM V1, V2, V3
|
||||
VMXORMM V1, V2, V3
|
||||
VMXNORMM V1, V2, V3
|
||||
VMNORMM V1, V2, V3
|
||||
VMORNMM V1, V2, V3
|
||||
VMCLRM V1
|
||||
VMSETM V1
|
||||
VMNOTM V1, V2
|
||||
VCPOPM V0, X6
|
||||
VFIRSTM V0, X7
|
||||
VIOTAM V0, X5
|
||||
VMSBFM V0, V1
|
||||
VMSIFM V0, V1
|
||||
VMSOFM V0, V1
|
||||
RET
|
||||
|
||||
TEXT ·carryMerge(SB), NOSPLIT, $0
|
||||
VADCVVM V1, V2, V0, V3
|
||||
VADCVXM X10, V2, V0, V3
|
||||
VADCVIM $15, V2, V0, V3
|
||||
VMADCVV V1, V2, V3
|
||||
VMADCVX X10, V2, V3
|
||||
VMADCVI $-16, V2, V3
|
||||
VSBCVVM V1, V2, V0, V3
|
||||
VSBCVXM X10, V2, V0, V3
|
||||
VSBCVVM V1, V2, V0, V3
|
||||
VSBCVXM X10, V2, V0, V3
|
||||
VMADCVV V1, V2, V3
|
||||
VMADCVX X10, V2, V3
|
||||
VMADCVI $0, V2, V3
|
||||
VMADCVVM V1, V2, V0, V3
|
||||
VMERGEVVM V1, V2, V0, V3
|
||||
VMERGEVXM X10, V2, V0, V3
|
||||
VMERGEVIM $15, V2, V0, V3
|
||||
VFMERGEVFM F10, V2, V0, V3
|
||||
RET
|
||||
|
||||
TEXT ·reduceWiden(SB), NOSPLIT, $0
|
||||
VREDSUMVS V1, V2, V3
|
||||
VREDMAXUVS V1, V2, V3
|
||||
VREDMINVS V1, V2, V3
|
||||
VREDANDVS V1, V2, V3
|
||||
VREDORVS V1, V2, V3
|
||||
VREDXORVS V1, V2, V3
|
||||
VWREDSUMUVS V1, V2, V3
|
||||
VWREDSUMVS V1, V2, V3
|
||||
VFWREDOSUMVS V1, V2, V3
|
||||
VFWREDUSUMVS V1, V2, V3
|
||||
VWADDUVV V1, V2, V3
|
||||
VWADDWV V1, V2, V3
|
||||
VWSUBUVV V1, V2, V3
|
||||
VWSUBWV V1, V2, V3
|
||||
VWADDUWX X10, V2, V3
|
||||
VWADDWX X10, V2, V3
|
||||
VMULVV V1, V2, V3
|
||||
VMULHUVV V1, V2, V3
|
||||
VMULHSUVV V1, V2, V3
|
||||
VDIVUVV V1, V2, V3
|
||||
VREMVV V1, V2, V3
|
||||
VSMULVV V1, V2, V3
|
||||
VCLMULVV V1, V2, V3
|
||||
VCLMULHVX X10, V2, V3
|
||||
RET
|
||||
|
||||
TEXT ·fpVec(SB), NOSPLIT, $0
|
||||
VFADDVV V1, V2, V3
|
||||
VFADDVF F10, V2, V3
|
||||
VFSUBVF F10, V2, V3
|
||||
VFMULVV V1, V2, V3
|
||||
VFDIVVF F10, V2, V3
|
||||
VFRSUBVF F10, V2, V3
|
||||
VFMINVV V1, V2, V3
|
||||
VFMAXVF F10, V2, V3
|
||||
VFMACCVV V1, V2, V3
|
||||
VFMACCVF F10, V2, V3
|
||||
VFMSACVV V1, V2, V3
|
||||
VFNMSACVF F10, V2, V3
|
||||
VFMADDVV V1, V2, V3
|
||||
VFNMADDVF F10, V2, V3
|
||||
VFWMACCVV V1, V2, V3
|
||||
VFWMSACVF F10, V2, V3
|
||||
VFSQRTV V4, V5
|
||||
VFCLASSV V4, V5
|
||||
VFREC7V V4, V5
|
||||
VFRSQRT7V V4, V5
|
||||
VFCVTXFV V4, V5
|
||||
VFCVTRTZXFV V4, V5
|
||||
VFNCVTFFW V4, V5
|
||||
VFWCVTFFV V4, V5
|
||||
VSEXTVF2 V4, V5
|
||||
VZEXTVF8 V4, V5
|
||||
RET
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: branches over their offset range, the
|
||||
// jumps and calls, the system instructions, the atomics with the LR/SC pair,
|
||||
// the FP arithmetic, compare, conversion and fused multiply-add families in
|
||||
// every width including quad.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·branches(SB), NOSPLIT, $0
|
||||
BEQ X5, X6, b1
|
||||
BNE X5, X6, b2
|
||||
BLT X5, X6, b1
|
||||
BGE X5, X6, b2
|
||||
BLTU X5, X6, b1
|
||||
BGEU X5, X6, b2
|
||||
BGT X6, X5, b1
|
||||
BLE X6, X5, b2
|
||||
BGTU X6, X5, b1
|
||||
BLEU X6, X5, b2
|
||||
|
||||
b1:
|
||||
ADDI $1, X5, X5
|
||||
|
||||
b2:
|
||||
ADDI $-1, X6, X6
|
||||
BEQ X5, X6, b1
|
||||
RET
|
||||
|
||||
TEXT ·farBranch(SB), NOSPLIT, $0
|
||||
BEQ X5, X6, far
|
||||
SLTI $2047, X5, X6
|
||||
BEQ X5, X6, far
|
||||
|
||||
far:
|
||||
SLTIU $2047, X5, X6
|
||||
BGE X5, X6, far
|
||||
RET
|
||||
|
||||
TEXT ·jumps(SB), NOSPLIT, $0
|
||||
JAL X1, j1
|
||||
|
||||
j1:
|
||||
JALR X0, (X1)
|
||||
JALR X1, 0(X5)
|
||||
JMP j2
|
||||
|
||||
j2:
|
||||
JMP (X5)
|
||||
CALL (X5)
|
||||
JMP -3(PC)
|
||||
CALL runtime·morestack_noctxt(SB)
|
||||
RET
|
||||
|
||||
TEXT ·system(SB), NOSPLIT, $0
|
||||
FENCE
|
||||
FENCE.TSO
|
||||
PAUSE
|
||||
ECALL
|
||||
EBREAK
|
||||
RET
|
||||
|
||||
TEXT ·atomics(SB), NOSPLIT, $0
|
||||
AMOSWAPW X5, (X6), X7
|
||||
AMOSWAPD X5, (X6), X7
|
||||
AMOADDW X5, (X6), X7
|
||||
AMOADDD X5, (X6), X7
|
||||
AMOANDW X5, (X6), X7
|
||||
AMOORW X5, (X6), X7
|
||||
AMOXORW X5, (X6), X7
|
||||
AMOMINW X5, (X6), X7
|
||||
AMOMAXW X5, (X6), X7
|
||||
AMOMINUW X5, (X6), X7
|
||||
AMOMAXUW X5, (X6), X7
|
||||
AMOMIND X5, (X6), X7
|
||||
AMOMAXD X5, (X6), X7
|
||||
AMOMINUD X5, (X6), X7
|
||||
AMOMAXUD X5, (X6), X7
|
||||
LRW (X6), X7
|
||||
LRD (X6), X7
|
||||
SCW X5, (X6), X7
|
||||
SCD X5, (X6), X7
|
||||
RET
|
||||
|
||||
TEXT ·fpArith(SB), NOSPLIT, $0
|
||||
FADDS F1, F2, F3
|
||||
FSUBS F1, F2, F3
|
||||
FMULS F1, F2, F3
|
||||
FDIVS F1, F2, F3
|
||||
FADDD F1, F2, F3
|
||||
FSUBD F1, F2, F3
|
||||
FMULD F1, F2, F3
|
||||
FDIVD F1, F2, F3
|
||||
FADDQ F1, F2, F3
|
||||
FSUBQ F1, F2, F3
|
||||
FMULQ F1, F2, F3
|
||||
FDIVQ F1, F2, F3
|
||||
FSQRTS F1, F2
|
||||
FSQRTD F1, F2
|
||||
FSQRTQ F1, F2
|
||||
FMINS F1, F2, F3
|
||||
FMAXS F1, F2, F3
|
||||
FMIND F1, F2, F3
|
||||
FMAXD F1, F2, F3
|
||||
FMINQ F1, F2, F3
|
||||
FMAXQ F1, F2, F3
|
||||
RET
|
||||
|
||||
TEXT ·fpFma(SB), NOSPLIT, $0
|
||||
FMADDS F1, F2, F3, F4
|
||||
FMSUBS F1, F2, F3, F4
|
||||
FNMSUBS F1, F2, F3, F4
|
||||
FNMADDS F1, F2, F3, F4
|
||||
FMADDD F1, F2, F3, F4
|
||||
FMSUBD F1, F2, F3, F4
|
||||
FNMSUBD F1, F2, F3, F4
|
||||
FNMADDD F1, F2, F3, F4
|
||||
FMADDQ F1, F2, F3, F4
|
||||
FMSUBQ F1, F2, F3, F4
|
||||
FNMSUBQ F1, F2, F3, F4
|
||||
FNMADDQ F1, F2, F3, F4
|
||||
RET
|
||||
|
||||
TEXT ·fpCvt(SB), NOSPLIT, $0
|
||||
FCVTWS F1, X5
|
||||
FCVTWUS F1, X5
|
||||
FCVTLS F1, X5
|
||||
FCVTLUS F1, X5
|
||||
FCVTWD F1, X5
|
||||
FCVTWUD F1, X5
|
||||
FCVTLD F1, X5
|
||||
FCVTLUD F1, X5
|
||||
FCVTSW X5, F1
|
||||
FCVTSWU X5, F1
|
||||
FCVTSL X5, F1
|
||||
FCVTSLU X5, F1
|
||||
FCVTDW X5, F1
|
||||
FCVTDWU X5, F1
|
||||
FCVTDL X5, F1
|
||||
FCVTDLU X5, F1
|
||||
FCVTSD F1, F2
|
||||
FCVTDS F1, F2
|
||||
FCVTSQ F1, F2
|
||||
FCVTDQ F1, F2
|
||||
FCVTQS F1, F2
|
||||
FCVTQD F1, F2
|
||||
FCVTWQ F1, X5
|
||||
FCVTLQ F1, X5
|
||||
FCVTQW X5, F1
|
||||
FCVTQL X5, F1
|
||||
FCLASSS F1, X5
|
||||
FCLASSD F1, X5
|
||||
FCLASSQ F1, X5
|
||||
FMVXD F1, X5
|
||||
FMVDX X5, F1
|
||||
FMVXW F1, X5
|
||||
FMVWX X5, F1
|
||||
RET
|
||||
|
||||
TEXT ·fpSign(SB), NOSPLIT, $0
|
||||
FSGNJS F1, F0, F2
|
||||
FSGNJNS F1, F0, F2
|
||||
FSGNJXS F1, F0, F2
|
||||
FSGNJD F1, F0, F2
|
||||
FSGNJND F1, F0, F2
|
||||
FSGNJXD F1, F0, F2
|
||||
FLTS F1, F2, X5
|
||||
FLES F1, F2, X5
|
||||
FEQS F1, F2, X5
|
||||
FLTD F1, F2, X5
|
||||
FLED F1, F2, X5
|
||||
FEQD F1, F2, X5
|
||||
FLTQ F1, F2, X5
|
||||
FLEQ F1, F2, X5
|
||||
FEQQ F1, F2, X5
|
||||
RET
|
||||
Vendored
+65
@@ -0,0 +1,65 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Seed corpus for FuzzAssembleRISCV64: the Zbb/Zba/Zbs/Zicond bit-manipulation
|
||||
// and address-generation set, with every unary form's W variant and the
|
||||
// shamt-range immediate forms.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT ·unary(SB), NOSPLIT, $0
|
||||
CLZ X5, X6
|
||||
CLZW X5, X6
|
||||
CTZ X5, X6
|
||||
CTZW X5, X6
|
||||
CPOP X5, X6
|
||||
CPOPW X5, X6
|
||||
SEXTB X5, X6
|
||||
SEXTH X5, X6
|
||||
ZEXTH X5, X6
|
||||
ORCB X5, X6
|
||||
REV8 X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·rolRor(SB), NOSPLIT, $0
|
||||
ROL X7, X5, X6
|
||||
ROR X7, X5, X6
|
||||
RORI $0, X5, X6
|
||||
RORI $63, X5, X6
|
||||
ANDN X7, X5, X6
|
||||
ORN X7, X5, X6
|
||||
XNOR X7, X5, X6
|
||||
MAX X7, X5, X6
|
||||
MAXU X7, X5, X6
|
||||
MIN X7, X5, X6
|
||||
MINU X7, X5, X6
|
||||
CLMUL X7, X5, X6
|
||||
CLMULH X7, X5, X6
|
||||
CLMULR X7, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·addrGen(SB), NOSPLIT, $0
|
||||
SH1ADD X7, X5, X6
|
||||
SH2ADD X7, X5, X6
|
||||
SH3ADD X7, X5, X6
|
||||
SH1ADDUW X7, X5, X6
|
||||
SH2ADDUW X7, X5, X6
|
||||
SH3ADDUW X7, X5, X6
|
||||
ADDUW X7, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·bitImm(SB), NOSPLIT, $0
|
||||
BCLR $31, X5, X6
|
||||
BEXT $63, X5, X6
|
||||
BINV $0, X5, X6
|
||||
BSET $31, X5, X6
|
||||
BCLRI $63, X5, X6
|
||||
BEXTI $31, X5, X6
|
||||
BINVI $63, X5, X6
|
||||
BSETI $63, X5, X6
|
||||
RET
|
||||
|
||||
TEXT ·condZero(SB), NOSPLIT, $0
|
||||
CZEROEQZ X7, X5, X6
|
||||
CZERONEZ X7, X5, X6
|
||||
RET
|
||||
Reference in new issue
Block a user