ARM NEON: fix arm64 gcc11 build excess elements in vector failure #4178
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches-ignore: | |
- 'ci/**' | |
- '!ci/gha**' | |
- 'dependabot/**' | |
pull_request: | |
branches: | |
- 'master' | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
checkinstall: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Install APT Dependencies | |
run: | | |
sudo apt-get install -y ninja-build ninja-build pipx | |
pipx install meson==0.55.1 | |
- run: | | |
meson setup build --prefix $PWD/install -Dtests=false | |
meson install -C build --quiet | |
diff <(find simde/ -type f -name "*.h") <(cd install/include/; find simde -type f -name "*.h" ) | |
formatting: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Install pcre2grep | |
run: sudo apt-get update && sudo apt-get install -y pcre2-utils | |
# Check for trailing whitespace | |
- name: Trailing whitespace | |
run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP '\s+$' {} + && exit 1 || exit 0 | |
# We use spaces, not tabs. I don't want to start a holy war here; | |
# I don't actually have a strong preference between the two, but I | |
# do have a strong preference for consistency, so don't @ me. | |
- name: Tabs | |
run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP '\t' {} + && exit 1 || exit 0 | |
# s/8/16/ will result in this if the input is x86. | |
- name: Bad substitutions | |
run: git grep -i 'x''1''6''6' && exit 1 || exit 0 | |
- name: Incorrect assertions in test/ | |
run: grep -PR '(?<=[^a-zA-Z0-9_])simde_assert_u?int(8|16|32|64)(?>[^a-zA-Z0-9_])' test/ && exit 1 || exit 0 | |
# Check to make sure no source files have the executable bit set | |
- name: Executable sources | |
run: find \( -name '*.c' -o -name '*.h' \) -executable | grep -q '.' && exit 1 || exit 0 | |
# Make sure neon.h includes all the NEON headers. | |
- name: Missing NEON includes | |
run: for f in simde/arm/neon/*.h; do grep -q "include \"neon/$(basename "$f")\"" simde/arm/neon.h || (echo "Missing $f" && exit 1); done | |
# Make sure sve.h includes all the SVE headers. | |
- name: Missing SVE includes | |
run: for f in simde/arm/sve/*.h; do grep -q "include \"sve/$(basename "$f")\"" simde/arm/sve.h || (echo "Missing $f" && exit 1); done | |
# Make sure msa.h includes all the MSA headers. | |
- name: Missing MSA includes | |
run: for f in simde/mips/msa/*.h; do grep -q "include \"msa/$(basename "$f")\"" simde/mips/msa.h || (echo "Missing $f" && exit 1); done | |
# Make sure we can find the expected header guards. It's easy to miss this when doing C&P | |
- name: Header guards | |
run: for file in $(find simde/*/ -name '*.h'); do grep -q "$(echo "$file" | tr '[:lower:]' '[:upper:]' | tr '[:punct:]' '_')" "$file" || (echo "Missing or incorrect header guard in $file" && exit 1); done | |
# There should be an empty line at the end of every file | |
- name: Newline at EOF | |
run: for file in $(find simde -name '*.h'); do if [ -n "$(tail -c 1 "$file")" ]; then echo "No newline at end of $file" && exit 1; fi; done | |
# Don't #ifndef ; use !defined(...) instead. ifndef leads to annoying inconsistencies | |
- name: ifndef | |
run: for file in $(find simde -name '*.h'); do grep -qP '^ *# *ifndef ' "${file}" && exit 1 || exit 0; done | |
# List of headers we want Meson to install | |
- name: Meson install headers | |
run: for file in $(find simde -name '*.h'); do grep -qF "$(basename "${file}" .h)" meson.build || (echo "${file} missing from top-level meson.build" && exit 1); done | |
# Make sure we don't accidentally use `vector ...` instead of SIMDE_POWER_ALTIVEC_VECTOR(...) | |
- name: AltiVec raw vector keyword | |
run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP 'vector( +)((bool|signed|unsigned) +)?(double|float|long long|long|int|short|char)' {} + && exit 1 || exit 0 | |
# Check indentation of preprocessor directives. | |
- name: Preprocessor directive indentation | |
run: find simde/*/ -name 'avx*.h' -exec pcre2grep -M '{\n#' {} + && exit 1 || exit 0 | |
- name: Stray `&& 0` | |
run: git grep ' && 0' simde/ test/ && exit 1 || exit 0 | |
x86: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
isax: | |
- -DSIMDE_NATURAL_VECTOR_SIZE=256 -march=x86-64-v3 -mavx512bw -mavx512vl | |
# https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels | |
- -march=x86-64 -maes -mpclmul # the x86-64 baseline is CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2 | |
- -march=x86-64-v2 # CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3 | |
- -march=x86-64-v3 # AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE | |
- -march=x86-64-v4 # AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL a.k.a. skylake+ (including zen4) | |
include: | |
- target: tgl | |
- isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes # icelake | |
target: icl | |
- isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes -mpconfig -mwbnoinvd -mclwb -mmovdiri -mmovdir64b -menqcmd -mcldemote -mptwrite -mwaitpkg -mserialize -mtsxldtrk -muintr -mavxvnni -mavx512fp16 # sapphire rapids without bf16 | |
# See https://github.com/simd-everywhere/simde/issues/1095 | |
target: spr | |
env: | |
CFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} | |
CXXFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} | |
INTEL_TARGET: ${{ matrix.target }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- run: sudo apt-get update | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.isax }} | |
- name: Install APT Dependencies | |
run: | | |
sudo apt-get install -y ninja-build ninja-build python3-pip parallel gcovr g++-12 gcc-12 | |
sudo apt-get purge -y gcc g++ | |
sudo ln -s /usr/bin/gcc-12 /usr/bin/gcc | |
sudo ln -s /usr/bin/g++-12 /usr/bin/g++ | |
sudo ln -s /usr/bin/gcov-12 /usr/bin/gcov | |
sudo python3 -m pip install meson==0.55.1 | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: meson setup build -Db_coverage=true || (cat build/meson-logs/meson-log.txt ; false) | |
- name: Test run native? | |
run: | | |
test/check-flags.sh query && echo Tests with $CFLAGS will be run natively | |
test/check-flags.sh query || echo Tests with $CFLAGS will be run using SDE | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/test/check-flags.sh sde" $(meson test -C build --list | grep -v emul) | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
x86-xop: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
env: | |
CFLAGS: -Wall -Wextra -Werror -march=bdver2 | |
CXXFLAGS: -Wall -Wextra -Werror -march=bdver2 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}- | |
- name: Install APT Dependencies | |
run: | | |
#sudo add-apt-repository ppa:aschultz/backports | |
sudo apt-get update | |
sudo apt-get install -y ninja-build ninja-build python3-pip parallel gcovr g++-12 gcc-12 qemu-user-static | |
sudo apt-get purge -y gcc g++ | |
sudo ln -s /usr/bin/gcc-12 /usr/bin/gcc | |
sudo ln -s /usr/bin/g++-12 /usr/bin/g++ | |
sudo ln -s /usr/bin/gcov-12 /usr/bin/gcov | |
sudo python3 -m pip install meson==0.55.1 | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: meson setup build -Db_coverage=true || (cat build/meson-logs/meson-log.txt ; false) | |
- name: Build | |
run: ninja -C build -v | |
# can't test until we find a combination of `gcc -march=` and `qemu -cpu` that both enable XOP and allows qemu to test it | |
# - name: Test | |
# run: meson test -C build --print-errorlogs --wrapper "qemu-amd64-static -cpu Opteron_G5-v1" | |
# - name: Coverage Report | |
# run: ninja -C build -v coverage-xml | |
# - name: CodeCov.io | |
# uses: codecov/codecov-action@v4 | |
# with: | |
# file: ./build/meson-logs/coverage.xml | |
# env: | |
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
emscripten: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
variant: | |
- "32" | |
- "64" | |
- "32-relaxed" | |
- "64-relaxed" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo apt-get update && \ | |
sudo apt-get install -y ninja-build ninja-build python3-pip parallel gcovr &&\ | |
sudo python3 -m pip install meson==0.55.1 | |
- name: Install emscripten | |
run: | | |
git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk | |
cd /opt/emsdk | |
./emsdk install tot | |
./emsdk activate tot | |
source emsdk_env.sh | |
- name: Install v8 | |
run: | | |
sudo npm install jsvu -g | |
jsvu --os=linux64 --engines=v8 | |
sudo ln -s "$HOME/.jsvu/bin/v8" /usr/bin/v8 | |
ls -l /usr/bin/v8 | |
ls -l ~/.jsvu || true | |
/usr/bin/v8 --help | |
- name: Configure | |
run: meson setup build --optimization 2 --cross-file docker/cross-files/emscripten${{ matrix.variant }}.cross | |
- name: Build | |
run: meson compile -C build --verbose | |
- name: Test | |
run: meson test -C build --print-errorlogs | |
native-aliases: | |
runs-on: ubuntu-22.04 | |
env: | |
CFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -Wall -Wextra -Werror | |
CXXFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo apt-get update && \ | |
sudo apt-get -yq install libxml2-utils ninja-build parallel gcovr && \ | |
sudo python3 -m pip install meson==0.55.1 | |
- name: Convert | |
run: ./test/native-aliases.sh | |
- name: Configure | |
run: meson setup build -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
sleef: | |
runs-on: ubuntu-22.04 | |
env: | |
CFLAGS: -march=native -Wall -Wextra -Werror | |
CXXFLAGS: -march=native -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- run: sudo apt-get update | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo apt-get install -y ninja-build ninja-build parallel gcovr libsleef-dev | |
sudo python3 -m pip install meson==0.55.1 | |
- name: Configure | |
run: meson setup build -Dsleef=enabled -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
gcc: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- version: 9 | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
- version: 10 | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
- version: 10 | |
distro: ubuntu-20.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: 11 | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: 11 | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: 12 | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: 12 | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: 13 | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: 13 | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
runs-on: ${{ matrix.distro }} | |
env: | |
CFLAGS: ${{ matrix.arch_flags }} -Wall -Wextra -Werror | |
CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get -yq install gcovr python3-pip ninja-build parallel gcc-${{ matrix.version }} g++-${{ matrix.version }} | |
sudo apt-get -y purge g++ gcc | |
sudo python3 -m pip install meson==0.55.1 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
if: ${{ matrix.ccache == 'true' }} | |
with: | |
key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }} | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
sudo ln -s /usr/bin/gcc-${{ matrix.version }} /usr/bin/gcc | |
sudo ln -s /usr/bin/g++-${{ matrix.version }} /usr/bin/g++ | |
sudo ln -s /usr/bin/gcov-${{ matrix.version }} /usr/bin/gcov | |
- name: Configure | |
run: meson setup build | |
- name: Build | |
run: meson compile -C build --verbose | |
- name: Test | |
run: meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) | |
gcc-qemu: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- version: 11 | |
cross: aarch64 | |
arch_gnu: aarch64 | |
arch_deb: arm64 | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: armel | |
arch_gnu_abi: eabi | |
arch_deb: armel | |
arch_gnu: arm | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: armv7 | |
arch_gnu: arm | |
arch_gnu_abi: eabihf | |
arch_deb: armhf | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: aarch64 | |
arch_gnu: aarch64 | |
arch_deb: arm64 | |
distro: ubuntu-22.04 | |
- extra: -32bit | |
version: 12 | |
cross: armv8 | |
arch_gnu: arm | |
arch_gnu_abi: eabihf | |
arch_deb: armhf | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: riscv64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- extra: -O3 | |
version: 12 | |
cross: riscv64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: s390x | |
arch_gnu: s390x | |
arch_deb: s390x | |
distro: ubuntu-22.04 | |
- version: 12 | |
cross: power9 | |
arch_gnu: powerpc64le | |
arch_deb: ppc64el | |
distro: ubuntu-22.04 | |
# - version: 12 # needs newer Ubuntu version (23.04+) | |
# cross: mips64el | |
# arch_gnu: mips64el | |
# arch_gnu_abi: abi64 | |
# arch_deb: mips64el | |
# distro: ubuntu-22.04 | |
runs-on: ${{ matrix.distro }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- run: sudo apt-get update | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo add-apt-repository ppa:savoury1/virtualisation | |
sudo apt-get update -y | |
sudo apt-get -yq install ninja-build parallel \ | |
gcc-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} \ | |
g++-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} binfmt-support \ | |
qemu-user-static python3-pip libc6-${{ matrix.arch_deb }}-cross libstdc++-${{ matrix.version }}-dev-${{ matrix.arch_deb }}-cross | |
sudo python3 -m pip install meson==0.55.1 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.distro }}-${{ matrix.cross }} | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-gcc-${{ matrix.version }}${{ matrix.extra}}-ccache.cross build | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs --print-errorlogs $(meson test -C build --list | grep -v emul) | |
clang-qemu-rvv: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- version: 17 | |
cross: riscv64+rvv_vlen128_elen64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64+rvv_vlen256_elen64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64+rvv_vlen512_elen64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64+rvv_vlen128_elen64_zvfh | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64+rvv_vlen256_elen64_zvfh | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64+rvv_vlen512_elen64_zvfh | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
runs-on: ${{ matrix.distro }} | |
container: | |
image: amd64/ubuntu:23.10 | |
steps: | |
- run: apt-get update | |
- name: Install git | |
run: | | |
apt-get install -y git | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
apt-get install -y python3 python3-pip git ninja-build pkg-config libglib2.0-dev \ | |
lsb-release wget software-properties-common gnupg qemu-user pipx | |
apt-get install -y clang-${{ matrix.version }} lldb-${{ matrix.version }} lld-${{ matrix.version }} | |
#add-apt-repository ppa:savoury1/virtualisation | |
#add-apt-repository ppa:savoury1/display | |
apt-get update -y | |
apt-get -yq install ninja-build parallel \ | |
binfmt-support libc6-${{ matrix.arch_deb }}-cross \ | |
libstdc++-12-dev-${{ matrix.arch_deb }}-cross binutils-${{ matrix.arch_gnu }}-linux-gnu | |
apt install meson | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.distro }}-${{ matrix.cross }} | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: | | |
meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \ | |
|| (cat build/meson-logs/meson-log.txt ; false) | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs --print-errorlogs $(meson test -C build --list | grep -v emul) | |
clang-qemu: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- version: 17 | |
cross: armv7 | |
arch_deb: armhf | |
arch_gnu_abi: eabihf | |
arch_gnu: arm | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: aarch64 | |
arch_gnu: aarch64 | |
arch_deb: arm64 | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: armel | |
arch_gnu_abi: eabi | |
arch_deb: armel | |
arch_gnu: arm | |
distro: ubuntu-22.04 | |
- version: 17 | |
cross: riscv64 | |
arch_gnu: riscv64 | |
arch_deb: riscv64 | |
distro: ubuntu-22.04 | |
# - version: 17 | |
# cross: s390x | |
# arch_gnu: s390x | |
# arch_deb: s390x | |
# distro: ubuntu-22.04 | |
- version: 17 | |
cross: ppc64el | |
arch_deb: ppc64el | |
arch_gnu: powerpc64le | |
distro: ubuntu-22.04 | |
# - version: 17 | |
# cross: mips64el # needs newer Ubuntu (23.04+) | |
# arch_deb: mips64el | |
# arch_gnu: mips64el | |
# arch_gnu_abi: abi64 | |
# distro: ubuntu-22.04 | |
runs-on: ${{ matrix.distro }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- run: sudo apt-get update | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo add-apt-repository ppa:savoury1/virtualisation | |
sudo add-apt-repository ppa:savoury1/build-tools | |
sudo add-apt-repository ppa:savoury1/display | |
sudo apt-get update -y | |
sudo apt-get -yq install ninja-build parallel \ | |
binfmt-support clang-${{ matrix.version }} clang++-${{ matrix.version }} \ | |
qemu-user-static python3-pip libc6-${{ matrix.arch_deb }}-cross libstdc++-12-dev-${{ matrix.arch_deb }}-cross \ | |
binutils-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} | |
sudo python3 -m pip install meson==0.55.1 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.distro }}-${{ matrix.cross }} | |
- name: add ccache to the build path | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: | | |
meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \ | |
|| (cat build/meson-logs/meson-log.txt ; false) | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs --print-errorlogs $(meson test -C build --list | grep -v emul) | |
clang: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- version: "7" | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
# clang-8 is tested on Semaphore-CI https://nemequ.semaphoreci.com/projects/simde | |
- version: "9" | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
# clang-10 is tested on Semaphore-CI https://nemequ.semaphoreci.com/projects/simde | |
- version: "11" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: "12" | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
- version: "12" | |
distro: ubuntu-20.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: "13" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: "13" | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: "14" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: "14" | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: "15" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native | |
- version: "15" | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math | |
ccache: 'true' | |
- version: "16" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native -Wno-unsafe-buffer-usage | |
- version: "16" | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math -Wno-unsafe-buffer-usage | |
ccache: 'true' | |
- version: "17" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native -Wno-unsafe-buffer-usage | |
- version: "17" | |
distro: ubuntu-22.04 | |
arch_flags: -ffast-math -Wno-unsafe-buffer-usage | |
ccache: 'true' | |
- version: "17" | |
distro: ubuntu-22.04 | |
arch_flags: -march=native -Wno-unsafe-buffer-usage -O2 | |
runs-on: ${{ matrix.distro }} | |
env: | |
CFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions | |
CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository ppa:savoury1/build-tools | |
sudo add-apt-repository ppa:savoury1/display | |
sudo add-apt-repository ppa:savoury1/llvm-defaults-16 | |
sudo apt-get update | |
sudo apt-get -yq install gcovr ninja-build python3-pip clang-${{ matrix.version }} | |
sudo python3 -m pip install meson==0.55.1 | |
sudo rm /usr/bin/gcc /usr/bin/g++ /usr/bin/cc /usr/bin/c++ | |
sudo ln -s $(command -v clang-${{ matrix.version }}) /usr/bin/cc | |
sudo ln -s $(command -v clang-${{ matrix.version }}) /usr/bin/c++ | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
if: ${{ matrix.ccache == 'true' }} | |
with: | |
key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }} | |
- name: add ccache to the build path | |
if: ${{ matrix.ccache == 'true' }} | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
- name: Configure | |
run: meson setup build | |
- name: Build | |
run: meson compile -C build --verbose | |
- name: Test | |
run: meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) | |
macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
# https://www.jessesquires.com/blog/2020/01/06/selecting-an-xcode-version-on-github-ci/ | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#xcode | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md#xcode | |
# https://trac.macports.org/wiki/XcodeVersionInfo | |
include: | |
- xcode: "13.1" | |
os: macos-12 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "13.3.1" | |
os: macos-12 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "14.2" | |
os: macos-13 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "14.3.1" | |
os: macos-13 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "15.0.1" | |
os: macos-13 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "15.1" | |
os: macos-13 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "15.2" | |
os: macos-13 | |
arch_flags: -Wno-poison-system-directories # due to meson test | |
- xcode: "14.3.1" | |
os: macos-14 # arm64 | |
arch_flags: -march=native -Wno-poison-system-directories | |
# "-Wno-poison-system-directories": due to meson test | |
# "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled | |
- xcode: "15.2" | |
os: macos-14 # arm64 | |
arch_flags: -march=native -Wno-poison-system-directories | |
# "-Wno-poison-system-directories": due to meson test | |
# "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled | |
- xcode: "15.3" | |
os: macos-14 # arm64 | |
arch_flags: -march=native -Wno-poison-system-directories | |
# "-Wno-poison-system-directories": due to meson test | |
# "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled | |
- xcode: "15.4" | |
os: macos-14 # arm64 | |
arch_flags: -march=native -Wno-poison-system-directories | |
# "-Wno-poison-system-directories": due to meson test | |
# "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled | |
- xcode: "16.0" | |
os: macos-14 # arm64 | |
arch_flags: -march=native -Wno-poison-system-directories | |
# "-Wno-poison-system-directories": due to meson test | |
# "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled | |
runs-on: ${{ matrix.os }} | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app | |
CFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -Wno-complex-component-init | |
CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -Wno-complex-component-init | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# - name: System Information | |
# run: system_profiler | |
- name: Compiler version | |
run: cc --version | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.xcode }} | |
- name: Python install bug workaround # https://github.com/actions/setup-python/issues/577 | |
run: | | |
find /usr/local/bin -type l -exec sh -c 'readlink -f "$1" \ | |
| grep -q ^/Library/Frameworks/Python.framework/Versions/' _ {} \; -exec rm -v {} \; | |
- name: Install Homebrew Dependencies | |
run: brew install meson ninja # gcovr | |
- name: Configure | |
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) # -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) | |
# - name: Coverage Report | |
# run: ninja -C build -v coverage-xml | |
# - name: CodeCov.io | |
# uses: codecov/codecov-action@v4 | |
# with: | |
# file: ./build/meson-logs/coverage.xml | |
# env: | |
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
icc: | |
runs-on: ubuntu-22.04 | |
env: | |
CC: /home/runner/.local/bin/icx | |
CXX: /home/runner/.local/bin/icpx | |
CFLAGS: -Wall -Werror -march=native -fp-model precise | |
CXXFLAGS: -Wall -Werror -march=native -fp-model precise | |
steps: | |
- uses: actions/checkout@v4 | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo apt-get install -y ninja-build python3-pip && sudo pip install meson==0.64 | |
- name: Install ICC | |
run: | | |
# download the key to system keyring | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ | |
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
# add signed entry to apt sources and configure the APT client to use Intel repository: | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt-get update | |
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp | |
mkdir -p ~/.local/bin/ || true | |
for exe in icx icpx; do | |
printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > ~/.local/bin/"${exe}" | |
chmod 0755 ~/.local/bin/"${exe}"; | |
done | |
- name: Configure | |
run: meson setup build | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) | |
msvc-arm64: | |
name: Windows MSVC-AArch64 | |
runs-on: [windows-latest] | |
env: | |
CFLAGS: /WX /Z7 | |
CXXFLAGS: /WX /Z7 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Meson, Ninja and coverage | |
run: | | |
python3 -m pip install --upgrade ninja meson | |
choco install opencppcoverage codecov | |
- name: Use ARM64 Developer Command Prompt | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: amd64_arm64 | |
- name: Configure and Build | |
run: | | |
meson --backend=ninja build --cross-file test/arm64cl.txt | |
ninja -C build test | |
linux-gcc-loongarch64: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: | | |
sudo add-apt-repository ppa:savoury1/virtualisation | |
sudo apt-get install -y ninja-build ninja-build meson qemu-user-static | |
- name: Download and install loongarch64-toolchain | |
run: | | |
wget https://github.com/loongson/build-tools/releases/download/2022.09.06/loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz | |
tar -xf loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz -C /opt | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-loongarch64-gcc-13 | |
- name: set env | |
run: | | |
echo "LD_LIBRARY_PATH=/opt/cross-tools/target/usr/lib64:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
echo "PATH=$GITHUB_WORKSPACE:/opt/cross-tools/bin:$PATH" >> $GITHUB_ENV | |
- name: Disable SVML tests | |
run: | | |
sed -i "/svml/d" test/x86/meson.build | |
rm test/x86/svml.c | |
echo "Due to the qemu versions 7.2 through 8.0 causing timeouts in four sets of test cases," | |
echo "the SVML tests have been temporarily disabled." | |
- name: Disable RND*X tests | |
run: | | |
sed -i "/rndx/d" meson.build | |
sed -i "/rnd..x/d" meson.build | |
rm test/arm/neon/rndx.c test/arm/neon/rnd32x.c test/arm/neon/rnd64x.c | |
echo "Due to the qemu versions 7.2 through 8.0 causing timeouts in four sets of test cases," | |
echo "the RNDX, RND32X, and RND64X tests have been temporarily disabled." | |
- name: Configure | |
run: meson setup build --cross-file=docker/cross-files/loongarch64-gcc-13-ccache.cross | |
- name: Build | |
run: meson compile -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs |