177 lines
3.1 KiB
ArmAsm
177 lines
3.1 KiB
ArmAsm
// 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
|