66 - ' master'
77 - ' ci/**'
88 - ' !ci/gha**'
9+ pull_request :
10+ branches :
11+ - ' master'
912
1013jobs :
1114 formatting :
3538 # Make sure neon.h includes all the NEON headers.
3639 - name : Missing NEON includes
3740 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
41+ # Make sure sve.h includes all the SVE headers.
42+ - name : Missing SVE includes
43+ 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
44+ # Make sure msa.h includes all the MSA headers.
45+ - name : Missing MSA includes
46+ 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
3847 # Make sure we can find the expected header guards. It's easy to miss this when doing C&P
3948 - name : Header guards
4049 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
@@ -53,87 +62,30 @@ jobs:
5362 # Check indentation of preprocessor directives.
5463 - name : Preprocessor directive indentation
5564 run : find simde/*/ -name 'avx*.h' -exec pcre2grep -M '{\n#' {} + && exit 1 || exit 0
56-
57- # Running the tests in SDE is pretty slow, so we put these early
58- # in the file so hopefully they start sooner.
59-
60- SDE :
61- runs-on : ubuntu-latest
62- strategy :
63- matrix :
64- arch : ["icelake-server"]
65- env :
66- CC : clang
67- CXX : clang++
68- CFLAGS : -march=icelake-server -Wall -Wextra -Werror
69- CXXFLAGS : -march=icelake-server -Wall -Wextra -Werror
70- steps :
71- - uses : actions/checkout@v2
72- with :
73- submodules : recursive
74- - name : CPU Information
75- run : cat /proc/cpuinfo
76- - name : Install APT Dependencies
77- run : sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel parallel gcovr
78- - name : Install pip Dependencies
79- run : pip3 install meson
80- - name : Download SDE
81- run : ./test/download-sde.sh ~/sde
82- - name : Configure
83- run : ~/.local/bin/meson setup build -Db_coverage=true
84- - name : Build
85- run : ninja -C build -v
86- - name : Test
87- run : |
88- find build/test/ -type f -executable -exec parallel ~/sde/sde64 -- ::: {} \;
89- - name : Coverage Report
90- run : ninja -C build -v coverage-xml
91- - name : CodeCov.io
92- uses : codecov/codecov-action@v1
93- with :
94- file : ./build/meson-logs/coverage.xml
95-
96- sleef-SDE :
97- runs-on : ubuntu-20.04
98- strategy :
99- matrix :
100- arch : ["icelake-server"]
101- env :
102- CC : clang
103- CXX : clang++
104- CFLAGS : -march=icelake-server -Wall -Wextra -Werror
105- CXXFLAGS : -march=icelake-server -Wall -Wextra -Werror
106- steps :
107- - uses : actions/checkout@v2
108- with :
109- submodules : recursive
110- - name : CPU Information
111- run : cat /proc/cpuinfo
112- - name : Install APT Dependencies
113- run : sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel parallel gcovr libsleef-dev
114- - name : Install pip Dependencies
115- run : pip3 install meson
116- - name : Download SDE
117- run : ./test/download-sde.sh ~/sde
118- - name : Configure
119- run : ~/.local/bin/meson setup build -Dsleef=enabled -Db_coverage=true
120- - name : Build
121- run : ninja -C build -v
122- - name : Test
123- run : |
124- find build/test/ -type f -executable -exec parallel ~/sde/sde64 -- ::: {} \;
125- - name : Coverage Report
126- run : ninja -C build -v coverage-xml
127- - name : CodeCov.io
128- uses : codecov/codecov-action@v1
129- with :
130- file : ./build/meson-logs/coverage.xml
65+ - name : Stray `&& 0`
66+ run : git grep ' && 0' simde/ test/ && exit 1 || exit 0
13167
13268 x86 :
13369 runs-on : ubuntu-latest
13470 strategy :
13571 matrix :
136- isax : ["", "-msse3", "-mssse3", "-msse4.1", "-msse4.2", "-mavx", "-mfma", "-mavx2", "-march=native"]
72+ isax :
73+ - -mavx512bw -mavx512vl -mavx512cd -mavx512dq -mavx512vbmi -mavx512ifma -mavx512vpopcntdq -mavx512bitalg -mavx512vnni -mvpclmulqdq
74+ - -mavx512bw -mavx512vl -DSIMDE_NATURAL_VECTOR_SIZE=256
75+ - -mavx512f
76+ - -mavx512bw
77+ - -mavx512vl
78+ - -mavx512vl -mavx512dq
79+ - -mavx512cd
80+ - -mavx512dq
81+ - -msse2
82+ - -msse3
83+ - -mssse3
84+ - -msse4.1
85+ - -msse4.2
86+ - -mavx
87+ - -mfma
88+ - -mavx2
13789 env :
13890 CFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
13991 CXXFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
@@ -152,76 +104,52 @@ jobs:
152104 - name : Build
153105 run : ninja -C build -v
154106 - name : Test
155- run : ninja -C build -v test
107+ run : meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/ test/check-flags.sh sde"
156108 - name : Coverage Report
157109 run : ninja -C build -v coverage-xml
158110 - name : CodeCov.io
159111 uses : codecov/codecov-action@v1
160112 with :
161113 file : ./build/meson-logs/coverage.xml
162114
163- avx512 :
115+ emscripten :
164116 runs-on : ubuntu-latest
165- strategy :
166- matrix :
167- isax : ["-mavx512f", "-mavx512bw", "-mavx512cd", "-mavx512dq", "-mavx512vl", "-mavx512bw -mavx512vl", "-mavx512vl -mavx512dq"]
168117 env :
169- CFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
170- CXXFLAGS : -Wall -Wextra -Werror ${{ matrix.isax }}
118+ CFLAGS : -Weverything -Werror -O2 -msimd128
119+ CXXFLAGS : -Weverything -Werror -O2 -msimd128
120+ LDFLAGS : -s ENVIRONMENT=shell -s ASSERTIONS=1
171121 steps :
172122 - uses : actions/checkout@v2
173123 with :
174124 submodules : recursive
175125 - name : CPU Information
176126 run : cat /proc/cpuinfo
177127 - name : Install APT Dependencies
178- run : sudo add-apt-repository ' ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel parallel gcovr
128+ run : sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install ninja-build ninja-build python3-pip python3-setuptools python3-wheel gcovr
179129 - name : Install pip Dependencies
180130 run : pip3 install meson
181- - name : Configure
182- run : ~/.local/bin/meson setup build -Db_coverage=true
183- - name : Build
184- run : ninja -C build -v
185- # We can't actually run the tests without AVX-512. GitHub Actions doesn't
186- # currently support it, and SDE is too slow.
187- # - name: Test
188- # run: ninja -C build -v test
189- # - name: Coverage Report
190- # run: ninja -C build -v coverage-xml
191- # - name: CodeCov.io
192- # uses: codecov/codecov-action@v1
193- # with:
194- # file: ./build/meson-logs/coverage.xml
195-
196- emscripten :
197- runs-on : ubuntu-latest
198- env :
199- CFLAGS : -Weverything -Werror -O3 -msimd128
200- CXXFLAGS : -Weverything -Werror -O3 -msimd128
201- steps :
202- - uses : actions/checkout@v2
203- with :
204- submodules : recursive
205- - name : CPU Information
206- run : cat /proc/cpuinfo
207- - name : Install APT Dependencies
208- run : sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install ninja-build
209131 - name : Install emscripten
210132 run : |
211- git clone https://github.com/emscripten-core/emsdk.git
212- cd emsdk
133+ git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk
134+ cd /opt/ emsdk
213135 ./emsdk update-tags
214136 ./emsdk install tot
215137 ./emsdk activate tot
216138 source emsdk_env.sh
217139 - name : Install v8
218- run : sudo npm install jsvu -g && jsvu --os=linux64 --engines=v8
140+ run : |
141+ sudo npm install jsvu -g
142+ jsvu --os=linux64 --engines=v8
143+ sudo ln -s $HOME/.jsvu/v8 /usr/bin/v8
144+ ls -l /usr/bin/v8
145+ ls -l ~/.jsvu || true
146+ /usr/bin/v8 --help
219147 - name : Configure
220- run : mkdir test/build && cd test/build && ../../emsdk/upstream/emscripten/emcmake cmake -G Ninja ..
148+ run : ~/.local/bin/meson setup build --optimization 2 --cross-file docker/cross-files/emscripten.cross
221149 - name : Build
222- run : ninja -C test/ build -v
150+ run : ninja -C build -v
223151 - name : Test
224- run : cd test/ build && ~/.jsvu/v8 --experimental-wasm-simd run-tests.js
152+ run : ninja -C build -v test
225153
226154 native-aliases :
227155 runs-on : ubuntu-latest
@@ -283,16 +211,43 @@ jobs:
283211 with :
284212 file : ./build/meson-logs/coverage.xml
285213
286- xenial-gcc :
287- runs-on : ubuntu-16.04
214+ gcc :
288215 strategy :
289216 matrix :
290- version : ["4.7", "4.8", "4.9", "5"]
217+ include :
218+ # - version: 4.7
219+ # distro: ubuntu-16.04
220+ # arch_flags: -mavx2
221+ # - version: 4.8
222+ # distro: ubuntu-16.04
223+ # arch_flags: -mavx2
224+ # - version: 4.9
225+ # distro: ubuntu-16.04
226+ # arch_flags: -mavx2
227+ - version : 5
228+ distro : ubuntu-16.04
229+ arch_flags : -mavx2
230+ # - version: 6
231+ # distro: ubuntu-18.04
232+ # arch_flags: -march=native
233+ # - version: 7
234+ # distro: ubuntu-18.04
235+ # arch_flags: -march=native
236+ - version : 8
237+ distro : ubuntu-18.04
238+ arch_flags : -march=native
239+ # - version: 9
240+ # distro: ubuntu-20.04
241+ # arch_flags: -march=native
242+ - version : 10
243+ distro : ubuntu-20.04
244+ arch_flags : -march=native
245+ runs-on : ${{ matrix.distro }}
291246 env :
292247 CC : gcc-${{ matrix.version }}
293248 CXX : g++-${{ matrix.version }}
294- CFLAGS : -mavx2 -Wall -Wextra -Werror
295- CXXFLAGS : -mavx2 -Wall -Wextra -Werror
249+ CFLAGS : ${{ matrix.arch_flags }} -Wall -Wextra -Werror
250+ CXXFLAGS : ${{ matrix.arch_flags }} -Wall -Wextra -Werror
296251 steps :
297252 - uses : actions/checkout@v2
298253 with :
@@ -306,18 +261,51 @@ jobs:
306261 - name : Build
307262 run : ninja -C test/build -v
308263 - name : Test
309- run : ninja -C test/build -v test
264+ run : ctest -C test/build ---output-on-failure
310265
311- xenial-clang :
312- runs-on : ubuntu-16.04
266+ clang :
313267 strategy :
314268 matrix :
315- version : ["3.5", "3.9", "6.0"]
269+ include :
270+ - version : " 3.5"
271+ distro : ubuntu-16.04
272+ arch_flags : -mavx2
273+ # - version: "3.6"
274+ # distro: ubuntu-16.04
275+ # arch_flags: -mavx2
276+ # - version: "3.7"
277+ # distro: ubuntu-16.04
278+ # arch_flags: -mavx2
279+ # - version: "3.8"
280+ # distro: ubuntu-16.04
281+ # arch_flags: -mavx2
282+ # - version: "3.9"
283+ # distro: ubuntu-18.04
284+ # arch_flags: -mavx2
285+ # - version: "4.0"
286+ # distro: ubuntu-18.04
287+ # arch_flags: -mavx2
288+ - version : " 5.0"
289+ distro : ubuntu-18.04
290+ arch_flags : -mavx2
291+ # - version: "6.0"
292+ # distro: ubuntu-20.04
293+ # arch_flags: -march=native
294+ - version : " 7"
295+ distro : ubuntu-20.04
296+ arch_flags : -march=native
297+ # - version: "8"
298+ # distro: ubuntu-20.04
299+ # arch_flags: -march=native
300+ - version : " 10"
301+ distro : ubuntu-20.04
302+ arch_flags : -march=native
303+ runs-on : ${{ matrix.distro }}
316304 env :
317305 CC : clang-${{ matrix.version }}
318306 CXX : clang++-${{ matrix.version }}
319- CFLAGS : -mavx2 -Wall -Wextra -Werror
320- CXXFLAGS : -mavx2 -Wall -Wextra -Werror
307+ CFLAGS : ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions
308+ CXXFLAGS : ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions
321309 steps :
322310 - uses : actions/checkout@v2
323311 with :
@@ -331,7 +319,7 @@ jobs:
331319 - name : Build
332320 run : ninja -C test/build -v
333321 - name : Test
334- run : ninja -C test/build -v test
322+ run : ctest -C test/build ---output-on-failure
335323
336324 macos :
337325 runs-on : macos-latest
@@ -356,6 +344,8 @@ jobs:
356344 run : meson setup build -Db_coverage=true
357345 - name : Build
358346 run : ninja -C build -v
347+ - name : Test
348+ run : ninja -C build -v test
359349 - name : Coverage Report
360350 run : ninja -C build -v coverage-xml
361351 - name : CodeCov.io
0 commit comments