Skip to content

Commit bac3747

Browse files
authored
Merge pull request #2169 from riscv-software-src/snippy-tests-per-extension
ci: auto-generate per extension snippy tests
2 parents 6392b9e + 0f28939 commit bac3747

File tree

13 files changed

+297
-1190
lines changed

13 files changed

+297
-1190
lines changed

ci-tests/generate-snippy-test.sh

Lines changed: 0 additions & 18 deletions
This file was deleted.

ci-tests/generate-snippy-tests.sh

Lines changed: 0 additions & 39 deletions
This file was deleted.

ci-tests/run-snippy-test.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
3+
set -e -x
4+
set -o pipefail
5+
6+
ROOT="$1"
7+
NUMINSTRS="$2"
8+
BOOTCODE="$3"
9+
TRIPLE="$4"
10+
ARCH="$5"
11+
EXTENSIONS="$6"
12+
ABI="$7"
13+
SPIKE_PATH="$8"
14+
15+
CONFIGDIR="$ROOT"/ci-tests/snippy-tests
16+
17+
CONFIG="test-$ARCH-$ABI.yaml"
18+
19+
base=$(basename "$CONFIG" .yaml)
20+
testfile="$base".elf
21+
tmpelf="$base".tmp.elf
22+
# exclude C_JR and C_JALR and some othe compressed opcodes as snippy has issues with them
23+
# exclude EBREAK/ECALL as we want non-privileged instructions
24+
# exclude lr.rl and sc.aq as they don't make sense
25+
"$CONFIGDIR"/generate-snippy-test.sh --march "$ARCH" --mtriple "$TRIPLE" --extensions "$EXTENSIONS" --num-instrs $NUMINSTRS --ignore-opcode-regex "C_JR|C_JALR|EBREAK|ECALL|C_.*(SP|HINT|UNIMP).*|LR_.*_RL|SC_.*_AQ" > "$CONFIG"
26+
llvm-snippy "$CONFIG" -o "$tmpelf" --seed 1 -riscv-disable-misaligned-access --layout-include-dir "$ROOT"/ci-tests/snippy-tests
27+
riscv64-linux-gnu-gcc -O0 -march="$ARCH" -mabi="$ABI" -T "$tmpelf".ld -T "$CONFIGDIR"/linker-entry.ld "$tmpelf" "$BOOTCODE" -nostdlib -static -o "$testfile" -Wl,--build-id=none
28+
29+
error=0
30+
if ! timeout --foreground 60s "$SPIKE_PATH" -l --log-commits --isa "$ARCH" "$testfile"
31+
then
32+
echo "TIMEOUT: $testfile"
33+
error=1
34+
else
35+
echo "SUCCESS: $testfile"
36+
fi
37+
exit $error

ci-tests/run-snippy-tests.sh

Lines changed: 95 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,97 @@
11
#!/usr/bin/env bash
22

3-
set -x
4-
5-
TESTDIR="$1"
6-
SPIKE_PATH="$2"
7-
8-
error=0
9-
for testfile in "$TESTDIR"/*; do
10-
bitness=$(basename "$testfile" .elf | grep -o "[0-9]\+")
11-
if ! timeout --foreground 5s "$SPIKE_PATH" -l --log-commits --isa rv"$bitness"ifdcv_zicsr "$testfile"
12-
then
13-
echo "TIMEOUT: $testfile"
14-
error=1
15-
else
16-
echo "SUCCESS: $testfile"
17-
fi
18-
done
19-
exit $error
3+
set -e -x
4+
5+
WORKDIR="$1"
6+
CONFIGDIR="$2"
7+
SPIKE_PATH="$3"
8+
RESULTDIR="$WORKDIR"/snippy-tests
9+
10+
mkdir -p "$WORKDIR"
11+
mkdir -p "$RESULTDIR"
12+
13+
ROOT=`git rev-parse --show-toplevel`
14+
run_test_script="$ROOT"/ci-tests/run-snippy-test.sh
15+
16+
"$run_test_script" "$ROOT" 3000 \
17+
"$CONFIGDIR"/boot-code.s riscv64 rv64i_zicsr_zifencei "i" lp64 "$SPIKE_PATH"
18+
19+
"$run_test_script" "$ROOT" 3000 \
20+
"$CONFIGDIR"/boot-code.s riscv32 rv32i_zicsr_zifencei "i" ilp32 "$SPIKE_PATH"
21+
22+
"$run_test_script" "$ROOT" 3000 \
23+
"$CONFIGDIR"/boot-code.s riscv64 rv64ic_zicsr_zifencei "c - d" lp64 "$SPIKE_PATH"
24+
25+
"$run_test_script" "$ROOT" 3000 \
26+
"$CONFIGDIR"/boot-code.s riscv32 rv32ic_zicsr_zifencei "c - d" ilp32 "$SPIKE_PATH"
27+
28+
"$run_test_script" "$ROOT" 3000 \
29+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifd_zicsr_zifencei "d - c - zfa - zvfh" lp64d "$SPIKE_PATH"
30+
31+
"$run_test_script" "$ROOT" 3000 \
32+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifd_zicsr_zifencei "d - c - zfa - zvfh" ilp32d "$SPIKE_PATH"
33+
34+
"$run_test_script" "$ROOT" 3000 \
35+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64if_zicsr_zifencei "f - c" lp64f "$SPIKE_PATH"
36+
37+
"$run_test_script" "$ROOT" 3000 \
38+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32if_zicsr_zifencei "f - c" ilp32f "$SPIKE_PATH"
39+
40+
"$run_test_script" "$ROOT" 3000 \
41+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifc_zicsr_zifencei "f" lp64f "$SPIKE_PATH"
42+
43+
"$run_test_script" "$ROOT" 3000 \
44+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifc_zicsr_zifencei "f" ilp32f "$SPIKE_PATH"
45+
46+
"$run_test_script" "$ROOT" 2000 \
47+
"$CONFIGDIR"/boot-code-vf.s riscv64 rv64gcv_zfa_zvfh "v" lp64d "$SPIKE_PATH"
48+
49+
"$run_test_script" "$ROOT" 3000 \
50+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifc_zicsr_zifencei_zfhmin "f + zfhmin - d" lp64f "$SPIKE_PATH"
51+
52+
"$run_test_script" "$ROOT" 3000 \
53+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifc_zicsr_zifencei_zfhmin "f + zfhmin - d" ilp32f "$SPIKE_PATH"
54+
55+
"$run_test_script" "$ROOT" 3000 \
56+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifdc_zicsr_zifencei "d - zfa - zvfh" lp64d "$SPIKE_PATH"
57+
58+
"$run_test_script" "$ROOT" 3000 \
59+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifdc_zicsr_zifencei "d - zfa - zvfh" ilp32d "$SPIKE_PATH"
60+
61+
"$run_test_script" "$ROOT" 3000 \
62+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifdc_zicsr_zifencei_zfhmin "d - zfa + zfhmin" lp64d "$SPIKE_PATH"
63+
64+
"$run_test_script" "$ROOT" 3000 \
65+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifdc_zicsr_zifencei_zfhmin "d - zfa + zfhmin" ilp32d "$SPIKE_PATH"
66+
67+
"$run_test_script" "$ROOT" 3000 \
68+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifdc_zicsr_zifencei_zfh_zfa "d + zfh" lp64d "$SPIKE_PATH"
69+
70+
"$run_test_script" "$ROOT" 3000 \
71+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifdc_zicsr_zifencei_zfh_zfa "d + zfh" ilp32d "$SPIKE_PATH"
72+
73+
"$run_test_script" "$ROOT" 3000 \
74+
"$CONFIGDIR"/boot-code.s riscv64 rv64i_zicsr_zifencei_zca "zca" lp64 "$SPIKE_PATH"
75+
76+
"$run_test_script" "$ROOT" 3000 \
77+
"$CONFIGDIR"/boot-code.s riscv32 rv32i_zicsr_zifencei_zca "zca" ilp32 "$SPIKE_PATH"
78+
79+
# rv32-only zcf
80+
"$run_test_script" "$ROOT" 3000 \
81+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32if_zicsr_zifencei_zca_zcf "zcf" ilp32f "$SPIKE_PATH"
82+
# zcd
83+
"$run_test_script" "$ROOT" 3000 \
84+
"$CONFIGDIR"/boot-code-f.s riscv64 rv64ifd_zicsr_zifencei_zca_zcd "zca + zcd - zfa - zfh" lp64d "$SPIKE_PATH"
85+
"$run_test_script" "$ROOT" 3000 \
86+
"$CONFIGDIR"/boot-code-f.s riscv32 rv32ifd_zicsr_zifencei_zca_zcd "zca + zcd - zfa - zfh" ilp32d "$SPIKE_PATH"
87+
# zcb
88+
"$run_test_script" "$ROOT" 3000 \
89+
"$CONFIGDIR"/boot-code.s riscv64 rv64i_zicsr_zifencei_zca_zcb_zmmul_zba_zbb "zca + zcb" lp64 "$SPIKE_PATH"
90+
"$run_test_script" "$ROOT" 3000 \
91+
"$CONFIGDIR"/boot-code.s riscv32 rv32i_zicsr_zifencei_zca_zcb_zmmul_zba_zbb "zca + zcb" ilp32 "$SPIKE_PATH"
92+
# zawrs
93+
"$run_test_script" "$ROOT" 3000 \
94+
"$CONFIGDIR"/boot-code.s riscv64 rv64ia_zicsr_zifencei_zawrs "zawrs + zalrsc" lp64 "$SPIKE_PATH"
95+
"$run_test_script" "$ROOT" 3000 \
96+
"$CONFIGDIR"/boot-code.s riscv32 rv32ia_zicsr_zifencei_zawrs "zawrs + zalrsc" ilp32 "$SPIKE_PATH"
97+

ci-tests/snippy-tests/atomic.yaml

Lines changed: 0 additions & 67 deletions
This file was deleted.

ci-tests/snippy-tests/basic.yaml

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)