Skip to content

Commit 732b7ed

Browse files
Add fmt and clippy to CI (#147)
* Add fmt and clippy to CI * Add rust components * Fix formatting
1 parent be96995 commit 732b7ed

File tree

6 files changed

+161
-109
lines changed

6 files changed

+161
-109
lines changed

.github/workflows/ci.yml

+47
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,53 @@ env:
1111
RUSTUP_MAX_RETRIES: 10
1212

1313
jobs:
14+
rustfmt:
15+
name: "rustfmt"
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- uses: actions/checkout@v2
20+
- name: Setup Rust
21+
run: |
22+
rustup update nightly --no-self-update
23+
rustup default nightly
24+
rustup component add rustfmt
25+
- name: Run rustfmt
26+
run: cargo fmt --all -- --check
27+
28+
clippy:
29+
name: "clippy on ${{ matrix.target }}"
30+
runs-on: ubuntu-latest
31+
strategy:
32+
fail-fast: false
33+
matrix:
34+
target:
35+
# We shouldn't really have any OS-specific code, so think of this as a list of architectures
36+
- x86_64-unknown-linux-gnu
37+
- i686-unknown-linux-gnu
38+
- i586-unknown-linux-gnu
39+
- aarch64-unknown-linux-gnu
40+
- armv7-unknown-linux-gnueabihf
41+
- mips-unknown-linux-gnu
42+
- mips64-unknown-linux-gnuabi64
43+
- powerpc-unknown-linux-gnu
44+
- powerpc64-unknown-linux-gnu
45+
- riscv64gc-unknown-linux-gnu
46+
- s390x-unknown-linux-gnu
47+
- sparc64-unknown-linux-gnu
48+
- wasm32-unknown-unknown
49+
50+
steps:
51+
- uses: actions/checkout@v2
52+
- name: Setup Rust
53+
run: |
54+
rustup update nightly --no-self-update
55+
rustup default nightly
56+
rustup target add ${{ matrix.target }}
57+
rustup component add clippy
58+
- name: Run Clippy
59+
run: cargo clippy --all-targets --target ${{ matrix.target }}
60+
1461
x86-tests:
1562
name: "${{ matrix.target_feature }} on ${{ matrix.target }}"
1663
runs-on: ${{ matrix.os }}

crates/core_simd/examples/matrix_inversion.rs

+93-92
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
//! 4x4 matrix inverse
22
// Code ported from the `packed_simd` crate
33
// Run this code with `cargo test --example matrix_inversion`
4-
#![feature(
5-
array_chunks,
6-
portable_simd,
7-
)]
4+
#![feature(array_chunks, portable_simd)]
85
use core_simd::*;
96

107
// Gotta define our own 4x4 matrix since Rust doesn't ship multidim arrays yet :^)
@@ -15,27 +12,29 @@ pub struct Matrix4x4([[f32; 4]; 4]);
1512
pub fn scalar_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
1613
let m = m.0;
1714

15+
#[rustfmt::skip]
1816
let mut inv = [
19-
[ // row 0:
17+
// row 0:
18+
[
2019
// 0,0:
21-
m[1][1] * m[2][2] * m[3][3] -
22-
m[1][1] * m[2][3] * m[3][2] -
23-
m[2][1] * m[1][2] * m[3][3] +
24-
m[2][1] * m[1][3] * m[3][2] +
25-
m[3][1] * m[1][2] * m[2][3] -
26-
m[3][1] * m[1][3] * m[2][2],
20+
m[1][1] * m[2][2] * m[3][3] -
21+
m[1][1] * m[2][3] * m[3][2] -
22+
m[2][1] * m[1][2] * m[3][3] +
23+
m[2][1] * m[1][3] * m[3][2] +
24+
m[3][1] * m[1][2] * m[2][3] -
25+
m[3][1] * m[1][3] * m[2][2],
2726
// 0,1:
28-
-m[0][1] * m[2][2] * m[3][3] +
29-
m[0][1] * m[2][3] * m[3][2] +
30-
m[2][1] * m[0][2] * m[3][3] -
31-
m[2][1] * m[0][3] * m[3][2] -
27+
-m[0][1] * m[2][2] * m[3][3] +
28+
m[0][1] * m[2][3] * m[3][2] +
29+
m[2][1] * m[0][2] * m[3][3] -
30+
m[2][1] * m[0][3] * m[3][2] -
3231
m[3][1] * m[0][2] * m[2][3] +
3332
m[3][1] * m[0][3] * m[2][2],
3433
// 0,2:
35-
m[0][1] * m[1][2] * m[3][3] -
36-
m[0][1] * m[1][3] * m[3][2] -
37-
m[1][1] * m[0][2] * m[3][3] +
38-
m[1][1] * m[0][3] * m[3][2] +
34+
m[0][1] * m[1][2] * m[3][3] -
35+
m[0][1] * m[1][3] * m[3][2] -
36+
m[1][1] * m[0][2] * m[3][3] +
37+
m[1][1] * m[0][3] * m[3][2] +
3938
m[3][1] * m[0][2] * m[1][3] -
4039
m[3][1] * m[0][3] * m[1][2],
4140
// 0,3:
@@ -46,26 +45,27 @@ pub fn scalar_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
4645
m[2][1] * m[0][2] * m[1][3] +
4746
m[2][1] * m[0][3] * m[1][2],
4847
],
49-
[ // row 1
48+
// row 1
49+
[
5050
// 1,0:
51-
-m[1][0] * m[2][2] * m[3][3] +
52-
m[1][0] * m[2][3] * m[3][2] +
53-
m[2][0] * m[1][2] * m[3][3] -
54-
m[2][0] * m[1][3] * m[3][2] -
55-
m[3][0] * m[1][2] * m[2][3] +
56-
m[3][0] * m[1][3] * m[2][2],
51+
-m[1][0] * m[2][2] * m[3][3] +
52+
m[1][0] * m[2][3] * m[3][2] +
53+
m[2][0] * m[1][2] * m[3][3] -
54+
m[2][0] * m[1][3] * m[3][2] -
55+
m[3][0] * m[1][2] * m[2][3] +
56+
m[3][0] * m[1][3] * m[2][2],
5757
// 1,1:
58-
m[0][0] * m[2][2] * m[3][3] -
59-
m[0][0] * m[2][3] * m[3][2] -
60-
m[2][0] * m[0][2] * m[3][3] +
61-
m[2][0] * m[0][3] * m[3][2] +
58+
m[0][0] * m[2][2] * m[3][3] -
59+
m[0][0] * m[2][3] * m[3][2] -
60+
m[2][0] * m[0][2] * m[3][3] +
61+
m[2][0] * m[0][3] * m[3][2] +
6262
m[3][0] * m[0][2] * m[2][3] -
6363
m[3][0] * m[0][3] * m[2][2],
6464
// 1,2:
65-
-m[0][0] * m[1][2] * m[3][3] +
66-
m[0][0] * m[1][3] * m[3][2] +
67-
m[1][0] * m[0][2] * m[3][3] -
68-
m[1][0] * m[0][3] * m[3][2] -
65+
-m[0][0] * m[1][2] * m[3][3] +
66+
m[0][0] * m[1][3] * m[3][2] +
67+
m[1][0] * m[0][2] * m[3][3] -
68+
m[1][0] * m[0][3] * m[3][2] -
6969
m[3][0] * m[0][2] * m[1][3] +
7070
m[3][0] * m[0][3] * m[1][2],
7171
// 1,3:
@@ -76,26 +76,27 @@ pub fn scalar_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
7676
m[2][0] * m[0][2] * m[1][3] -
7777
m[2][0] * m[0][3] * m[1][2],
7878
],
79-
[ // row 2
79+
// row 2
80+
[
8081
// 2,0:
81-
m[1][0] * m[2][1] * m[3][3] -
82-
m[1][0] * m[2][3] * m[3][1] -
83-
m[2][0] * m[1][1] * m[3][3] +
84-
m[2][0] * m[1][3] * m[3][1] +
82+
m[1][0] * m[2][1] * m[3][3] -
83+
m[1][0] * m[2][3] * m[3][1] -
84+
m[2][0] * m[1][1] * m[3][3] +
85+
m[2][0] * m[1][3] * m[3][1] +
8586
m[3][0] * m[1][1] * m[2][3] -
8687
m[3][0] * m[1][3] * m[2][1],
8788
// 2,1:
88-
-m[0][0] * m[2][1] * m[3][3] +
89-
m[0][0] * m[2][3] * m[3][1] +
90-
m[2][0] * m[0][1] * m[3][3] -
91-
m[2][0] * m[0][3] * m[3][1] -
89+
-m[0][0] * m[2][1] * m[3][3] +
90+
m[0][0] * m[2][3] * m[3][1] +
91+
m[2][0] * m[0][1] * m[3][3] -
92+
m[2][0] * m[0][3] * m[3][1] -
9293
m[3][0] * m[0][1] * m[2][3] +
9394
m[3][0] * m[0][3] * m[2][1],
9495
// 2,2:
95-
m[0][0] * m[1][1] * m[3][3] -
96-
m[0][0] * m[1][3] * m[3][1] -
97-
m[1][0] * m[0][1] * m[3][3] +
98-
m[1][0] * m[0][3] * m[3][1] +
96+
m[0][0] * m[1][1] * m[3][3] -
97+
m[0][0] * m[1][3] * m[3][1] -
98+
m[1][0] * m[0][1] * m[3][3] +
99+
m[1][0] * m[0][3] * m[3][1] +
99100
m[3][0] * m[0][1] * m[1][3] -
100101
m[3][0] * m[0][3] * m[1][1],
101102
// 2,3:
@@ -106,26 +107,27 @@ pub fn scalar_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
106107
m[2][0] * m[0][1] * m[1][3] +
107108
m[2][0] * m[0][3] * m[1][1],
108109
],
109-
[ // row 3
110+
// row 3
111+
[
110112
// 3,0:
111-
-m[1][0] * m[2][1] * m[3][2] +
112-
m[1][0] * m[2][2] * m[3][1] +
113-
m[2][0] * m[1][1] * m[3][2] -
114-
m[2][0] * m[1][2] * m[3][1] -
113+
-m[1][0] * m[2][1] * m[3][2] +
114+
m[1][0] * m[2][2] * m[3][1] +
115+
m[2][0] * m[1][1] * m[3][2] -
116+
m[2][0] * m[1][2] * m[3][1] -
115117
m[3][0] * m[1][1] * m[2][2] +
116118
m[3][0] * m[1][2] * m[2][1],
117119
// 3,1:
118-
m[0][0] * m[2][1] * m[3][2] -
119-
m[0][0] * m[2][2] * m[3][1] -
120-
m[2][0] * m[0][1] * m[3][2] +
121-
m[2][0] * m[0][2] * m[3][1] +
120+
m[0][0] * m[2][1] * m[3][2] -
121+
m[0][0] * m[2][2] * m[3][1] -
122+
m[2][0] * m[0][1] * m[3][2] +
123+
m[2][0] * m[0][2] * m[3][1] +
122124
m[3][0] * m[0][1] * m[2][2] -
123125
m[3][0] * m[0][2] * m[2][1],
124126
// 3,2:
125-
-m[0][0] * m[1][1] * m[3][2] +
126-
m[0][0] * m[1][2] * m[3][1] +
127-
m[1][0] * m[0][1] * m[3][2] -
128-
m[1][0] * m[0][2] * m[3][1] -
127+
-m[0][0] * m[1][1] * m[3][2] +
128+
m[0][0] * m[1][2] * m[3][1] +
129+
m[1][0] * m[0][1] * m[3][2] -
130+
m[1][0] * m[0][2] * m[3][1] -
129131
m[3][0] * m[0][1] * m[1][2] +
130132
m[3][0] * m[0][2] * m[1][1],
131133
// 3,3:
@@ -138,9 +140,10 @@ pub fn scalar_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
138140
],
139141
];
140142

141-
let det = m[0][0] * inv[0][0] + m[0][1] * inv[1][0] +
142-
m[0][2] * inv[2][0] + m[0][3] * inv[3][0];
143-
if det == 0. { return None; }
143+
let det = m[0][0] * inv[0][0] + m[0][1] * inv[1][0] + m[0][2] * inv[2][0] + m[0][3] * inv[3][0];
144+
if det == 0. {
145+
return None;
146+
}
144147

145148
let det_inv = 1. / det;
146149

@@ -163,76 +166,76 @@ pub fn simd_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
163166
// 2 argument shuffle, returns an f32x4
164167
// the first f32x4 is indexes 0..=3
165168
// the second f32x4 is indexed 4..=7
166-
let tmp1 = f32x4::shuffle::<{[0, 1, 4, 5]}>(m_0, m_1);
167-
let row1 = f32x4::shuffle::<{[0, 1, 4, 5]}>(m_2, m_3,);
169+
let tmp1 = f32x4::shuffle::<{ [0, 1, 4, 5] }>(m_0, m_1);
170+
let row1 = f32x4::shuffle::<{ [0, 1, 4, 5] }>(m_2, m_3);
168171

169-
let row0 = f32x4::shuffle::<{[0, 2, 4, 6]}>(tmp1, row1);
170-
let row1 = f32x4::shuffle::<{[1, 3, 5, 7]}>(row1, tmp1);
172+
let row0 = f32x4::shuffle::<{ [0, 2, 4, 6] }>(tmp1, row1);
173+
let row1 = f32x4::shuffle::<{ [1, 3, 5, 7] }>(row1, tmp1);
171174

172-
let tmp1 = f32x4::shuffle::<{[2, 3, 6, 7]}>(m_0, m_1);
173-
let row3 = f32x4::shuffle::<{[2, 3, 6, 7]}>(m_2, m_3);
174-
let row2 = f32x4::shuffle::<{[0, 2, 4, 6]}>(tmp1, row3);
175-
let row3 = f32x4::shuffle::<{[1, 3, 5, 7]}>(row3, tmp1);
175+
let tmp1 = f32x4::shuffle::<{ [2, 3, 6, 7] }>(m_0, m_1);
176+
let row3 = f32x4::shuffle::<{ [2, 3, 6, 7] }>(m_2, m_3);
177+
let row2 = f32x4::shuffle::<{ [0, 2, 4, 6] }>(tmp1, row3);
178+
let row3 = f32x4::shuffle::<{ [1, 3, 5, 7] }>(row3, tmp1);
176179

177180
let tmp1 = row2 * row3;
178181
// there's no syntax for a 1 arg shuffle yet,
179182
// so we just pass the same f32x4 twice
180-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
183+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
181184

182185
let minor0 = row1 * tmp1;
183186
let minor1 = row0 * tmp1;
184-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
187+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
185188
let minor0 = (row1 * tmp1) - minor0;
186189
let minor1 = (row0 * tmp1) - minor1;
187-
let minor1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(minor1, minor1);
190+
let minor1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(minor1, minor1);
188191

189192
let tmp1 = row1 * row2;
190-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
193+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
191194
let minor0 = (row3 * tmp1) + minor0;
192195
let minor3 = row0 * tmp1;
193-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
196+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
194197

195198
let minor0 = minor0 - row3 * tmp1;
196199
let minor3 = row0 * tmp1 - minor3;
197-
let minor3 = f32x4::shuffle::<{[2, 3, 0, 1]}>(minor3, minor3);
200+
let minor3 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(minor3, minor3);
198201

199-
let tmp1 = row3 * f32x4::shuffle::<{[2, 3, 0, 1]}>(row1, row1);
200-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
201-
let row2 = f32x4::shuffle::<{[2, 3, 0, 1]}>(row2, row2);
202+
let tmp1 = row3 * f32x4::shuffle::<{ [2, 3, 0, 1] }>(row1, row1);
203+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
204+
let row2 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(row2, row2);
202205
let minor0 = row2 * tmp1 + minor0;
203206
let minor2 = row0 * tmp1;
204-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
207+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
205208
let minor0 = minor0 - row2 * tmp1;
206209
let minor2 = row0 * tmp1 - minor2;
207-
let minor2 = f32x4::shuffle::<{[2, 3, 0, 1]}>(minor2, minor2);
210+
let minor2 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(minor2, minor2);
208211

209212
let tmp1 = row0 * row1;
210-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
213+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
211214
let minor2 = minor2 + row3 * tmp1;
212215
let minor3 = row2 * tmp1 - minor3;
213-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
216+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
214217
let minor2 = row3 * tmp1 - minor2;
215218
let minor3 = minor3 - row2 * tmp1;
216219

217220
let tmp1 = row0 * row3;
218-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
221+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
219222
let minor1 = minor1 - row2 * tmp1;
220223
let minor2 = row1 * tmp1 + minor2;
221-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
224+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
222225
let minor1 = row2 * tmp1 + minor1;
223226
let minor2 = minor2 - row1 * tmp1;
224227

225228
let tmp1 = row0 * row2;
226-
let tmp1 = f32x4::shuffle::<{[1, 0, 3, 2]}>(tmp1, tmp1);
229+
let tmp1 = f32x4::shuffle::<{ [1, 0, 3, 2] }>(tmp1, tmp1);
227230
let minor1 = row3 * tmp1 + minor1;
228231
let minor3 = minor3 - row1 * tmp1;
229-
let tmp1 = f32x4::shuffle::<{[2, 3, 0, 1]}>(tmp1, tmp1);
232+
let tmp1 = f32x4::shuffle::<{ [2, 3, 0, 1] }>(tmp1, tmp1);
230233
let minor1 = minor1 - row3 * tmp1;
231234
let minor3 = row1 * tmp1 + minor3;
232235

233236
let det = row0 * minor0;
234-
let det = f32x4::shuffle::<{[2, 3, 0, 1]}>(det, det) + det;
235-
let det = f32x4::shuffle::<{[1, 0, 3, 2]}>(det, det) + det;
237+
let det = f32x4::shuffle::<{ [2, 3, 0, 1] }>(det, det) + det;
238+
let det = f32x4::shuffle::<{ [1, 0, 3, 2] }>(det, det) + det;
236239

237240
if det.horizontal_sum() == 0. {
238241
return None;
@@ -256,7 +259,6 @@ pub fn simd_inv4x4(m: Matrix4x4) -> Option<Matrix4x4> {
256259
Some(Matrix4x4(m))
257260
}
258261

259-
260262
#[cfg(test)]
261263
#[rustfmt::skip]
262264
mod tests {
@@ -313,7 +315,6 @@ mod tests {
313315
}
314316
}
315317

316-
317318
fn main() {
318319
// Empty main to make cargo happy
319320
}

crates/core_simd/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#![no_std]
22
#![allow(incomplete_features)]
33
#![feature(
4-
const_generics,
4+
const_generics,
55
platform_intrinsics,
66
repr_simd,
77
simd_ffi,
88
staged_api,
9-
stdsimd,
9+
stdsimd
1010
)]
1111
#![warn(missing_docs)]
1212
#![unstable(feature = "portable_simd", issue = "86656")]

crates/core_simd/src/vector/float.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ macro_rules! impl_float_vector {
174174
}
175175

176176
/// Restrict each lane to a certain interval unless it is NaN.
177-
///
177+
///
178178
/// For each lane in `self`, returns the corresponding lane in `max` if the lane is
179179
/// greater than `max`, and the corresponding lane in `min` if the lane is less
180180
/// than `min`. Otherwise returns the lane in `self`.

0 commit comments

Comments
 (0)