Skip to content

Commit 3a9da52

Browse files
authored
RISCV64-CI: don't rely on dependency resolution for qemu-user (#5506)
* install current qemu as the Ubuntu package is too old * add shgemm and bgemm tests for zvl256b target - curiously, sbgemm&sbgemv tests fail in this configuration
1 parent 9c8626d commit 3a9da52

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

.github/workflows/riscv64_vector.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
env:
1717
triple: riscv64-unknown-linux-gnu
1818
riscv_gnu_toolchain: https://github.com/riscv-collab/riscv-gnu-toolchain
19-
riscv_gnu_toolchain_version: 13.2.0
19+
riscv_gnu_toolchain_version: 15.1.0
2020
riscv_gnu_toolchain_nightly_download_path: /releases/download/2025.08.29/riscv64-glibc-ubuntu-22.04-llvm-nightly-2025.08.29-nightly.tar.xz
2121
strategy:
2222
fail-fast: false
@@ -27,7 +27,7 @@ jobs:
2727
qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=128,elen=64
2828
- target: RISCV64_ZVL256B
2929
opts: TARGET=RISCV64_ZVL256B BINARY=64 ARCH=riscv64 BUILD_BFLOAT16=1 BUILD_HFLOAT16=1
30-
qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64
30+
qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64,zfh=true,zvfh=true,zvfbfwma=true
3131
- target: DYNAMIC_ARCH=1
3232
opts: TARGET=RISCV64_GENERIC BINARY=64 ARCH=riscv64 DYNAMIC_ARCH=1
3333
qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64
@@ -40,10 +40,13 @@ jobs:
4040
run: |
4141
sudo apt-get update
4242
sudo apt-get install autoconf automake autotools-dev ninja-build make \
43-
libgomp1-riscv64-cross ccache qemu-kvm
43+
libgomp1-riscv64-cross ccache qemu-kvm qemu-user libc6-riscv64-cross
4444
wget ${riscv_gnu_toolchain}/${riscv_gnu_toolchain_nightly_download_path}
4545
tar -xvf $(basename ${riscv_gnu_toolchain_nightly_download_path}) -C /opt
46-
46+
wget https://gist.github.com/martin-frbg/bb630e0de34978e578eeb496b1538d4e/raw/7fd8d971f327f7a517b8f5f7989479ff2b36f71f/qemu-riscv64-10.1-ubuntu24 -P /opt/riscv/bin -o riscv64-qemu
47+
mv /opt/riscv/bin/qemu-riscv64-10.1-ubuntu24 /opt/riscv/bin/qemu-riscv64
48+
chmod +x /opt/riscv/bin/qemu-riscv64
49+
4750
- name: Compilation cache
4851
uses: actions/cache@v3
4952
with:
@@ -74,7 +77,7 @@ jobs:
7477
run: |
7578
export PATH="/opt/riscv/bin:$PATH"
7679
make TARGET=${{ matrix.target }} CFLAGS="-DTARGET=${{ matrix.target }}" \
77-
CC='${triple}-gcc' \
80+
CC='ccache clang --rtlib=compiler-rt -target ${triple} --sysroot /opt/riscv/sysroot --gcc-toolchain=/opt/riscv/lib/gcc/riscv64-unknown-linux-gnu/${riscv_gnu_toolchain_version}/' \
7881
AR='ccache ${triple}-ar' AS='ccache ${triple}-gcc' LD='ccache ${triple}-gcc' \
7982
RANLIB='ccache ${triple}-ranlib' \
8083
FC='ccache ${triple}-gfortran' ${{ matrix.opts }} \
@@ -98,6 +101,8 @@ jobs:
98101
shell: bash
99102
run: |
100103
export PATH="/opt/riscv/bin:$PATH"
104+
export LD_LIBRARY_PATH=/opt/riscv/sysroot/lib
105+
sudo ln -s /opt/riscv/sysroot/lib/ld-linux-riscv64-lp64d.so.1 /lib
101106
export QEMU_CPU=${{ matrix.qemu_cpu }}
102107
rm -rf ./test_out
103108
mkdir -p ./test_out
@@ -134,6 +139,12 @@ jobs:
134139
wait
135140
while IFS= read -r -d $'\0' LOG; do cat $LOG ; FAILURES=1 ; done < <(grep -lZ FAIL ./test_out/*)
136141
if [[ ! -z $FAILURES ]]; then echo "==========" ; echo "== FAIL ==" ; echo "==========" ; echo ; exit 1 ; fi
142+
if [ "${{matrix.target}}" == "RISCV64_ZVL256B" ]; then
143+
qemu-riscv64 test/test_shgemm &
144+
qemu-riscv64 test/test_shgemv &
145+
qemu-riscv64 test/test_bgemm
146+
fi
147+
137148
138149
- name: netlib tests
139150
shell: bash

0 commit comments

Comments
 (0)