@@ -15,6 +15,105 @@ concurrency:
1515 cancel-in-progress : true
1616
1717jobs :
18+ x86 :
19+ runs-on : ubuntu-24.04
20+ strategy :
21+ fail-fast : false
22+ matrix :
23+ isax :
24+ - -DSIMDE_NATURAL_VECTOR_SIZE=256 -march=x86-64-v3 -mavx512bw -mavx512vl
25+ # https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels
26+ - -march=x86-64 -maes -mpclmul # the x86-64 baseline is CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2
27+ - -march=x86-64-v2 # CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3
28+ - -march=x86-64-v3 # AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE
29+ - -march=x86-64-v4 # AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL a.k.a. skylake+ (including zen4)
30+ include :
31+ - target : tgl
32+ - 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
33+ target : icl
34+ - 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
35+ # See https://github.com/simd-everywhere/simde/issues/1095
36+ target : spr
37+ env :
38+ CFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
39+ CXXFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
40+ INTEL_TARGET : ${{ matrix.target }}
41+ steps :
42+ - uses : actions/checkout@v6
43+ with :
44+ submodules : recursive
45+ - name : CPU Information
46+ run : cat /proc/cpuinfo
47+ - name : Install APT Dependencies
48+ run : |
49+ sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
50+ sudo add-apt-repository ppa:stephanosio/ccache && sudo apt-get update
51+ sudo apt-get install -y --no-install-recommends ninja-build ninja-build \
52+ pipx gcc-16 g++-16
53+ sudo apt-get purge -y gcc g++
54+ sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
55+ sudo ln -s /usr/bin/g++-16 /usr/bin/g++
56+ pipx install meson==0.55.1
57+ - name : ccache
58+ uses : hendrikmuhs/ccache-action@v1.2
59+ with :
60+ key : ${{ github.job }}-${{ matrix.isax }}
61+ verbose : 2
62+ - name : add ccache to the build path
63+ run : |
64+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
65+ - name : Configure
66+ run : meson setup build || (cat build/meson-logs/meson-log.txt ; false)
67+ - name : Test run native?
68+ run : |
69+ test/check-flags.sh query && echo Tests with "$CFLAGS" will be run natively
70+ test/check-flags.sh query || echo Tests with "$CFLAGS" will be run using SDE
71+ - name : Build
72+ run : ninja -C build -v
73+ - name : Test
74+ run : |
75+ # shellcheck disable=SC2046
76+ meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/test/check-flags.sh sde" $(meson test -C build --list | grep -v emul)
77+
78+ x86-xop :
79+ runs-on : ubuntu-24.04
80+ strategy :
81+ fail-fast : false
82+ env :
83+ CFLAGS : -Wall -Wextra -Werror -march=bdver2
84+ CXXFLAGS : -Wall -Wextra -Werror -march=bdver2
85+ steps :
86+ - uses : actions/checkout@v6
87+ with :
88+ submodules : recursive
89+ - name : CPU Information
90+ run : cat /proc/cpuinfo
91+ - name : Install APT Dependencies
92+ run : |
93+ sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
94+ sudo add-apt-repository ppa:stephanosio/ccache && sudo apt-get update
95+ sudo apt-get install -y --no-install-recommends ninja-build ninja-build \
96+ pipx g++-16 gcc-16 qemu-user-static
97+ sudo apt-get purge -y gcc g++
98+ sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
99+ sudo ln -s /usr/bin/g++-16 /usr/bin/g++
100+ pipx install meson==0.55.1
101+ - name : ccache
102+ uses : hendrikmuhs/ccache-action@v1.2
103+ with :
104+ key : ${{ github.job }}
105+ verbose : 2
106+ - name : add ccache to the build path
107+ run : |
108+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
109+ - name : Configure
110+ run : meson setup build || (cat build/meson-logs/meson-log.txt ; false)
111+ - name : Build
112+ run : ninja -C build -v
113+ # can't test until we find a combination of `gcc -march=` and `qemu -cpu` that both enable XOP and allows qemu to test it
114+ # - name: Test
115+ # run: meson test -C build --print-errorlogs --wrapper "qemu-amd64-static -cpu Opteron_G5-v1"
116+
18117 sleef-arm :
19118 runs-on : ubuntu-24.04-arm
20119 env :
0 commit comments