Skip to content

Commit f421eef

Browse files
Rebuild CI stages (#295)
Rebuilds CI into a set of stages that indicates first the "totally supported" stage, marked "build-test-verify", then groups arches by base pointer width and tier. This surfaces all targets which currently have full expected functionality, so as to better identify and limit future regressions. - Allow improper ctypes in project to quash spurious CI error - Remove Intel SDE, as the Dockerfile is broken. - Use recent LTS Ubuntu in CI - Fix deprecation warnings for .travis.yml - Allow inlining failure on 32-bit platforms - Always test aarch64 with Neon - Move promising platforms to build-test-verify - Drop tier 3 targets - Reduce repetitive SSE2 -> SSE4 tests - Allow aarch64-apple-ios + Neon test failure
1 parent 026b10e commit f421eef

File tree

3 files changed

+81
-155
lines changed

3 files changed

+81
-155
lines changed

.travis.yml

+65-145
Original file line numberDiff line numberDiff line change
@@ -1,200 +1,137 @@
11
language: rust
2-
sudo: false
32
rust: nightly
3+
os: linux
4+
dist: focal
45

56
stages:
67
- tools
7-
- linux-tier1
8-
- osx-tier1
9-
- osx-tier2
10-
- linux-tier2
11-
- android
8+
- build-test-verify # Passes full test suite, permit no regressions (unless it's rustup :/)
9+
- 32bit-tier1
10+
- 64bit-tier2
11+
- 32bit-tier2
1212

13-
matrix:
13+
jobs:
1414
fast_finish: true
1515
include:
1616
# Android:
17-
- env: TARGET=x86_64-linux-android NOVERIFY=1
17+
- env: TARGET=x86_64-linux-android
1818
name: "x86_64-unknown-linux-android + SSE2"
19-
stage: android
19+
stage: build-test-verify
2020
- env: TARGET=arm-linux-androideabi
2121
name: "arm-linux-androideabi"
22-
stage: android
22+
stage: build-test-verify
2323
- env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
2424
name: "arm-linux-androideabi + NEON"
25-
stage: android
26-
- env: TARGET=aarch64-linux-android
27-
name: "aarch64-unknown-linux-android"
28-
stage: android
29-
- env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
30-
name: "aarch64-unknown-linux-android + NEON"
31-
stage: android
25+
stage: build-test-verify
26+
- name: "aarch64-unknown-linux-android + NEON"
27+
env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
28+
stage: build-test-verify
3229
- env: TARGET="thumbv7neon-linux-androideabi"
3330
name: "thumbv7neon-linux-androideabi"
34-
stage: android
31+
stage: 32bit-tier2
3532
# Linux:
3633
- env: TARGET=i586-unknown-linux-gnu
3734
name: "i586-unknown-linux-gnu"
38-
stage: linux-tier2
35+
stage: 32bit-tier2
3936
- env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse"
4037
name: "i586-unknown-linux-gnu + SSE"
41-
stage: linux-tier2
38+
stage: 32bit-tier2
4239
- env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse2"
4340
name: "i586-unknown-linux-gnu + SSE2"
44-
stage: linux-tier2
41+
stage: 32bit-tier2
4542
- env: TARGET=i686-unknown-linux-gnu
4643
name: "i686-unknown-linux-gnu + SSE2"
47-
stage: linux-tier1
44+
stage: 32bit-tier1
4845
- env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
4946
name: "i686-unknown-linux-gnu + SSE4.2"
50-
stage: linux-tier1
47+
stage: 32bit-tier1
5148
- env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
5249
name: "i686-unknown-linux-gnu + AVX2"
53-
stage: linux-tier1
54-
- env: TARGET=x86_64-unknown-linux-gnu
55-
name: "x86_64-unknown-linux-gnu + SSE2"
56-
install: rustup component add rustfmt-preview
57-
stage: linux-tier1
50+
stage: 32bit-tier1
5851
- env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
5952
name: "x86_64-unknown-linux-gnu + SSE4.2"
6053
install: rustup component add rustfmt-preview
61-
stage: linux-tier1
62-
- env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx"
63-
name: "x86_64-unknown-linux-gnu + AVX"
64-
install: rustup component add rustfmt-preview
65-
stage: linux-tier1
54+
stage: build-test-verify
6655
- env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
6756
name: "x86_64-unknown-linux-gnu + AVX2"
6857
install: rustup component add rustfmt-preview
69-
stage: linux-tier1
70-
- env: TARGET=x86_64-unknown-linux-gnu-emulated
71-
name: "Intel SDE + SSE2"
72-
install: true
73-
stage: linux-tier1
74-
- env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+sse4.2"
75-
name: "Intel SDE + SSE4.2"
76-
install: true
77-
stage: linux-tier1
78-
- env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx"
79-
name: "Intel SDE + AVX"
80-
install: true
81-
stage: linux-tier1
82-
- env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx2"
83-
name: "Intel SDE + AVX2"
84-
install: true
85-
stage: linux-tier1
86-
- env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx-512f"
87-
name: "Intel SDE + AVX-512"
88-
install: true
89-
stage: linux-tier1
90-
- env: TARGET=arm-unknown-linux-gnueabi
91-
name: "arm-unknown-linux-gnueabi"
92-
stage: linux-tier2
58+
stage: build-test-verify
9359
- env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
9460
name: "arm-unknown-linux-gnueabi + NEON"
95-
stage: linux-tier2
61+
stage: build-test-verify
9662
- env: TARGET=arm-unknown-linux-gnueabihf
9763
name: "arm-unknown-linux-gnueabihf"
98-
stage: linux-tier2
64+
stage: build-test-verify
9965
- env: TARGET=arm-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+v7,+neon"
10066
name: "arm-unknown-linux-gnueabihf + NEON"
101-
stage: linux-tier2
67+
stage: build-test-verify
10268
- env: TARGET=armv7-unknown-linux-gnueabihf
10369
name: "armv7-unknown-linux-gnueabihf"
104-
stage: linux-tier2
70+
stage: build-test-verify
10571
- env: TARGET=armv7-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+neon"
10672
name: "armv7-unknown-linux-gnueabihf + NEON"
107-
stage: linux-tier2
73+
stage: build-test-verify
10874
- env: TARGET="thumbv7neon-unknown-linux-gnueabihf"
10975
name: "thumbv7neon-unknown-linux-gnueabihf"
110-
stage: linux-tier2
111-
- env: TARGET=aarch64-unknown-linux-gnu
112-
name: "aarch64-unknown-linux-gnu"
113-
stage: linux-tier2
114-
- env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
115-
name: "aarch64-unknown-linux-gnu + NEON"
116-
stage: linux-tier2
76+
stage: 32bit-tier2
77+
- name: "aarch64-unknown-linux-gnu + NEON"
78+
env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
79+
stage: build-test-verify
11780
- env: TARGET=mips-unknown-linux-gnu
11881
name: "mips-unknown-linux-gnu"
119-
stage: linux-tier2
82+
stage: 32bit-tier2
12083
- env: TARGET=mipsel-unknown-linux-musl
12184
name: "mipsel-unknown-linux-musl"
122-
stage: linux-tier2
85+
stage: 32bit-tier2
12386
- env: TARGET=mips64-unknown-linux-gnuabi64
12487
name: "mips64-unknown-linux-gnuabi64"
125-
stage: linux-tier2
88+
stage: 64bit-tier2
12689
- env: TARGET=mips64el-unknown-linux-gnuabi64
12790
name: "mips64el-unknown-linux-gnuabi64"
128-
stage: linux-tier2
91+
stage: 64bit-tier2
12992
# FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/18
13093
# env: TARGET=mips64el-unknown-linux-gnuabi64 RUSTFLAGS="-C target-feature=+msa -C target-cpu=mips64r6"
13194
- env: TARGET=powerpc-unknown-linux-gnu
13295
name: "powerpc-unknown-linux-gnu"
133-
stage: linux-tier2
96+
stage: 32bit-tier2
13497
- env: TARGET=powerpc64-unknown-linux-gnu
13598
name: "powerpc64-unknown-linux-gnu"
136-
stage: linux-tier2
137-
- env: TARGET=powerpc64le-unknown-linux-gnu
138-
name: "powerpc64le-unknown-linux-gnu"
139-
stage: linux-tier2
140-
- env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
141-
name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
142-
stage: linux-tier2
143-
- env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
144-
name: "powerpc64le-unknown-linux-gnu + VSX"
145-
stage: linux-tier2
146-
- env: TARGET=s390x-unknown-linux-gnu
147-
name: "s390x-unknown-linux-gnu"
148-
stage: linux-tier2
99+
stage: 64bit-tier2
100+
- name: "powerpc64le-unknown-linux-gnu"
101+
env: TARGET=powerpc64le-unknown-linux-gnu
102+
stage: build-test-verify
103+
- name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
104+
env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
105+
stage: build-test-verify
106+
- name: "powerpc64le-unknown-linux-gnu + VSX"
107+
env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
108+
stage: build-test-verify
109+
- name: "s390x-unknown-linux-gnu"
110+
env: TARGET=s390x-unknown-linux-gnu
111+
stage: 64bit-tier2
149112
- env: TARGET=sparc64-unknown-linux-gnu
150113
name: "sparc64-unknown-linux-gnu"
151-
stage: linux-tier2
114+
stage: 64bit-tier2
152115
# WebAssembly:
153116
- env: TARGET=wasm32-unknown-unknown
154117
name: "wasm32-unknown-unknown"
155-
stage: osx-tier1 # For now
118+
stage: 32bit-tier2
156119
# MacOSX:
157-
- os: osx
158-
env: TARGET=i686-apple-darwin
159-
name: "i686-apple-darwin + SSE2"
160-
script: ci/run.sh
161-
osx_image: xcode10
162-
stage: osx-tier1
163-
- os: osx
164-
env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
165-
name: "i686-apple-darwin + SSE4.2"
166-
script: ci/run.sh
167-
osx_image: xcode10
168-
stage: osx-tier1
169-
# Travis-CI OSX build bots do not support AVX2:
170-
- os: osx
171-
env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+avx"
172-
name: "i686-apple-darwin + AVX"
173-
script: ci/run.sh
174-
osx_image: xcode10
175-
stage: osx-tier1
176-
- os: osx
177-
env: TARGET=x86_64-apple-darwin
178-
name: "x86_64-apple-darwin + SSE2"
179-
install: true
180-
script: ci/run.sh
181-
osx_image: xcode10
182-
stage: osx-tier1
183120
- os: osx
184121
env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
185122
name: "x86_64-apple-darwin + SSE4.2"
186123
install: true
187124
script: ci/run.sh
188125
osx_image: xcode10
189-
stage: osx-tier1
126+
stage: build-test-verify
190127
# Travis-CI OSX build bots do not support AVX2:
191128
- os: osx
192129
env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+avx"
193130
name: "x86_64-apple-darwin + AVX"
194131
install: true
195132
script: ci/run.sh
196133
osx_image: xcode10
197-
stage: osx-tier1
134+
stage: build-test-verify
198135
# *BSDs:
199136
#- env: TARGET=i686-unknown-freebsd NORUN=1
200137
# script: ci/run.sh
@@ -206,30 +143,18 @@ matrix:
206143
#- env: TARGET=x86_64-sun-solaris NORUN=1
207144
# script: ci/run.sh
208145
# iOS:
209-
- os: osx
210-
env: TARGET=i386-apple-ios
211-
name: "i386-apple-ios"
212-
script: ci/run.sh
213-
osx_image: xcode9.4
214-
stage: osx-tier2
215146
- os: osx
216147
env: TARGET=x86_64-apple-ios
217148
name: "x86_64-apple-ios + SSE2"
218149
script: ci/run.sh
219150
osx_image: xcode9.4
220-
stage: osx-tier2
221-
- os: osx
222-
env: TARGET=armv7-apple-ios NORUN=1
223-
name: "armv7-apple-ios [Build only]"
224-
script: ci/run.sh
151+
stage: 64bit-tier2
152+
- name: "aarch64-apple-ios + NEON"
153+
env: TARGET=aarch64-apple-ios RUSTFLAGS="-C target-feature=+neon"
154+
os: osx
225155
osx_image: xcode9.4
226-
stage: osx-tier2
227-
- os: osx
228-
env: TARGET=aarch64-apple-ios NORUN=1
229-
name: "aarch64-apple-ios [Build only]"
230156
script: ci/run.sh
231-
osx_image: xcode9.4
232-
stage: osx-tier2
157+
stage: 64bit-tier2
233158
# BENCHMARKS:
234159
- name: "Benchmarks - x86_64-unknown-linux-gnu"
235160
install: TARGET=x86_64-unknown-linux-gnu ./ci/setup_benchmarks.sh
@@ -266,27 +191,22 @@ matrix:
266191
allow_failures:
267192
# FIXME: ISPC cannot be found?
268193
- name: "Benchmarks - x86_64-apple-darwin"
269-
# FIXME: TBD
270-
- env: TARGET=powerpc-unknown-linux-gnu
271-
- env: TARGET=powerpc64-unknown-linux-gnu
272-
- env: TARGET=powerpc64le-unknown-linux-gnu
273-
- env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
274-
- env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
194+
# FIXME: i686 fails in inlining, apparently
195+
- stage: 32bit-tier1
275196
#- env: TARGET=i686-unknown-freebsd NORUN=1
276197
#- env: TARGET=x86_64-unknown-freebsd NORUN=1
277198
#- env: TARGET=x86_64-unknown-netbsd NORUN=1
278199
#- env: TARGET=x86_64-sun-solaris NORUN=1
279200

280201
# FIXME: TBD
281-
- env: TARGET=arm-linux-androideabi
282-
- env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
283-
- env: TARGET=aarch64-linux-android
284-
- env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
202+
- stage: 64bit-tier2
203+
- stage: 32bit-tier2
285204

286205
# FIXME: iOS
287206
# https://github.com/rust-lang-nursery/packed_simd/issues/26
288-
- env: TARGET=i386-apple-ios
289207
- env: TARGET=x86_64-apple-ios
208+
# Is this related to the above? Mysterious test failure
209+
- name: "aarch64-apple-ios + NEON"
290210

291211
# FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/182
292212
- env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"

src/lib.rs

+13-10
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,19 @@
215215
llvm_asm
216216
)]
217217
#![allow(non_camel_case_types, non_snake_case,
218-
clippy::cast_possible_truncation,
219-
clippy::cast_lossless,
220-
clippy::cast_possible_wrap,
221-
clippy::cast_precision_loss,
222-
// TODO: manually add the `#[must_use]` attribute where appropiate
223-
clippy::must_use_candidate,
224-
// This lint is currently broken for generic code
225-
// See https://github.com/rust-lang/rust-clippy/issues/3410
226-
clippy::use_self,
227-
clippy::wrong_self_convention
218+
// FIXME: these types are unsound in C FFI already
219+
// See https://github.com/rust-lang/rust/issues/53346
220+
improper_ctypes_definitions,
221+
clippy::cast_possible_truncation,
222+
clippy::cast_lossless,
223+
clippy::cast_possible_wrap,
224+
clippy::cast_precision_loss,
225+
// TODO: manually add the `#[must_use]` attribute where appropriate
226+
clippy::must_use_candidate,
227+
// This lint is currently broken for generic code
228+
// See https://github.com/rust-lang/rust-clippy/issues/3410
229+
clippy::use_self,
230+
clippy::wrong_self_convention,
228231
)]
229232
#![cfg_attr(test, feature(hashmap_internals))]
230233
#![deny(rust_2018_idioms, clippy::missing_inline_in_public_items)]

verify/verify/src/lib.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// FIXME: these types are unsound in C FFI already
2+
// See https://github.com/rust-lang/rust/issues/53346
3+
#![allow(improper_ctypes_definitions)]
14
#![deny(warnings, rust_2018_idioms)]
25
#![cfg_attr(test, feature(avx512_target_feature, abi_vectorcall, llvm_asm))]
36

0 commit comments

Comments
 (0)