Skip to content

Commit f1ede97

Browse files
committed
Update portable-simd test and implement new simd_* platform intrinsics
1 parent 9536ec3 commit f1ede97

File tree

4 files changed

+58
-73
lines changed

4 files changed

+58
-73
lines changed

build_system/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ pub(crate) static REGEX: CargoProject = CargoProject::new(&REGEX_REPO.source_dir
124124
pub(crate) static PORTABLE_SIMD_REPO: GitRepo = GitRepo::github(
125125
"rust-lang",
126126
"portable-simd",
127-
"7c7dbe0c505ccbc02ff30c1e37381ab1d47bf46f",
128-
"5bcc9c544f6fa7bd",
127+
"4825b2a64d765317066948867e8714674419359b",
128+
"8b188cc41f5af835",
129129
"portable-simd",
130130
);
131131

patches/0001-portable-simd-Allow-internal-features.patch

Lines changed: 0 additions & 24 deletions
This file was deleted.

patches/portable-simd-lock.toml

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
1616

1717
[[package]]
1818
name = "bumpalo"
19-
version = "3.13.0"
19+
version = "3.14.0"
2020
source = "registry+https://github.com/rust-lang/crates.io-index"
21-
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
21+
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
2222

2323
[[package]]
2424
name = "byteorder"
@@ -55,33 +55,33 @@ dependencies = [
5555

5656
[[package]]
5757
name = "js-sys"
58-
version = "0.3.63"
58+
version = "0.3.64"
5959
source = "registry+https://github.com/rust-lang/crates.io-index"
60-
checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790"
60+
checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
6161
dependencies = [
6262
"wasm-bindgen",
6363
]
6464

6565
[[package]]
6666
name = "log"
67-
version = "0.4.18"
67+
version = "0.4.20"
6868
source = "registry+https://github.com/rust-lang/crates.io-index"
69-
checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de"
69+
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
7070

7171
[[package]]
7272
name = "num-traits"
73-
version = "0.2.15"
73+
version = "0.2.16"
7474
source = "registry+https://github.com/rust-lang/crates.io-index"
75-
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
75+
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
7676
dependencies = [
7777
"autocfg",
7878
]
7979

8080
[[package]]
8181
name = "once_cell"
82-
version = "1.17.2"
82+
version = "1.18.0"
8383
source = "registry+https://github.com/rust-lang/crates.io-index"
84-
checksum = "9670a07f94779e00908f3e686eab508878ebb390ba6e604d3a284c00e8d0487b"
84+
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
8585

8686
[[package]]
8787
name = "ppv-lite86"
@@ -91,9 +91,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
9191

9292
[[package]]
9393
name = "proc-macro2"
94-
version = "1.0.59"
94+
version = "1.0.67"
9595
source = "registry+https://github.com/rust-lang/crates.io-index"
96-
checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b"
96+
checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
9797
dependencies = [
9898
"unicode-ident",
9999
]
@@ -114,9 +114,9 @@ dependencies = [
114114

115115
[[package]]
116116
name = "quote"
117-
version = "1.0.28"
117+
version = "1.0.33"
118118
source = "registry+https://github.com/rust-lang/crates.io-index"
119-
checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
119+
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
120120
dependencies = [
121121
"proc-macro2",
122122
]
@@ -181,9 +181,9 @@ dependencies = [
181181

182182
[[package]]
183183
name = "syn"
184-
version = "2.0.18"
184+
version = "2.0.37"
185185
source = "registry+https://github.com/rust-lang/crates.io-index"
186-
checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
186+
checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
187187
dependencies = [
188188
"proc-macro2",
189189
"quote",
@@ -199,25 +199,25 @@ dependencies = [
199199

200200
[[package]]
201201
name = "unicode-ident"
202-
version = "1.0.9"
202+
version = "1.0.12"
203203
source = "registry+https://github.com/rust-lang/crates.io-index"
204-
checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
204+
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
205205

206206
[[package]]
207207
name = "wasm-bindgen"
208-
version = "0.2.86"
208+
version = "0.2.87"
209209
source = "registry+https://github.com/rust-lang/crates.io-index"
210-
checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73"
210+
checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
211211
dependencies = [
212212
"cfg-if",
213213
"wasm-bindgen-macro",
214214
]
215215

216216
[[package]]
217217
name = "wasm-bindgen-backend"
218-
version = "0.2.86"
218+
version = "0.2.87"
219219
source = "registry+https://github.com/rust-lang/crates.io-index"
220-
checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb"
220+
checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
221221
dependencies = [
222222
"bumpalo",
223223
"log",
@@ -230,9 +230,9 @@ dependencies = [
230230

231231
[[package]]
232232
name = "wasm-bindgen-futures"
233-
version = "0.4.36"
233+
version = "0.4.37"
234234
source = "registry+https://github.com/rust-lang/crates.io-index"
235-
checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e"
235+
checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
236236
dependencies = [
237237
"cfg-if",
238238
"js-sys",
@@ -242,19 +242,19 @@ dependencies = [
242242

243243
[[package]]
244244
name = "wasm-bindgen-macro"
245-
version = "0.2.86"
245+
version = "0.2.87"
246246
source = "registry+https://github.com/rust-lang/crates.io-index"
247-
checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258"
247+
checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
248248
dependencies = [
249249
"quote",
250250
"wasm-bindgen-macro-support",
251251
]
252252

253253
[[package]]
254254
name = "wasm-bindgen-macro-support"
255-
version = "0.2.86"
255+
version = "0.2.87"
256256
source = "registry+https://github.com/rust-lang/crates.io-index"
257-
checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8"
257+
checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
258258
dependencies = [
259259
"proc-macro2",
260260
"quote",
@@ -265,15 +265,15 @@ dependencies = [
265265

266266
[[package]]
267267
name = "wasm-bindgen-shared"
268-
version = "0.2.86"
268+
version = "0.2.87"
269269
source = "registry+https://github.com/rust-lang/crates.io-index"
270-
checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93"
270+
checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
271271

272272
[[package]]
273273
name = "wasm-bindgen-test"
274-
version = "0.3.36"
274+
version = "0.3.37"
275275
source = "registry+https://github.com/rust-lang/crates.io-index"
276-
checksum = "c9e636f3a428ff62b3742ebc3c70e254dfe12b8c2b469d688ea59cdd4abcf502"
276+
checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671"
277277
dependencies = [
278278
"console_error_panic_hook",
279279
"js-sys",
@@ -285,19 +285,19 @@ dependencies = [
285285

286286
[[package]]
287287
name = "wasm-bindgen-test-macro"
288-
version = "0.3.36"
288+
version = "0.3.37"
289289
source = "registry+https://github.com/rust-lang/crates.io-index"
290-
checksum = "f18c1fad2f7c4958e7bcce014fa212f59a65d5e3721d0f77e6c0b27ede936ba3"
290+
checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575"
291291
dependencies = [
292292
"proc-macro2",
293293
"quote",
294294
]
295295

296296
[[package]]
297297
name = "web-sys"
298-
version = "0.3.63"
298+
version = "0.3.64"
299299
source = "registry+https://github.com/rust-lang/crates.io-index"
300-
checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2"
300+
checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
301301
dependencies = [
302302
"js-sys",
303303
"wasm-bindgen",

src/intrinsics/simd.rs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -345,24 +345,33 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
345345
ret.write_cvalue(fx, ret_lane);
346346
}
347347

348-
sym::simd_neg => {
348+
sym::simd_neg
349+
| sym::simd_bswap
350+
| sym::simd_bitreverse
351+
| sym::simd_ctlz
352+
| sym::simd_cttz => {
349353
intrinsic_args!(fx, args => (a); intrinsic);
350354

351355
if !a.layout().ty.is_simd() {
352356
report_simd_type_validation_error(fx, intrinsic, span, a.layout().ty);
353357
return;
354358
}
355359

356-
simd_for_each_lane(
357-
fx,
358-
a,
359-
ret,
360-
&|fx, lane_ty, _ret_lane_ty, lane| match lane_ty.kind() {
361-
ty::Int(_) => fx.bcx.ins().ineg(lane),
362-
ty::Float(_) => fx.bcx.ins().fneg(lane),
363-
_ => unreachable!(),
364-
},
365-
);
360+
simd_for_each_lane(fx, a, ret, &|fx, lane_ty, _ret_lane_ty, lane| match (
361+
lane_ty.kind(),
362+
intrinsic,
363+
) {
364+
(ty::Int(_), sym::simd_neg) => fx.bcx.ins().ineg(lane),
365+
(ty::Float(_), sym::simd_neg) => fx.bcx.ins().fneg(lane),
366+
367+
(ty::Uint(ty::UintTy::U8) | ty::Int(ty::IntTy::I8), sym::simd_bswap) => lane,
368+
(ty::Uint(_) | ty::Int(_), sym::simd_bswap) => fx.bcx.ins().bswap(lane),
369+
(ty::Uint(_) | ty::Int(_), sym::simd_bitreverse) => fx.bcx.ins().bitrev(lane),
370+
(ty::Uint(_) | ty::Int(_), sym::simd_ctlz) => fx.bcx.ins().clz(lane),
371+
(ty::Uint(_) | ty::Int(_), sym::simd_cttz) => fx.bcx.ins().ctz(lane),
372+
373+
_ => unreachable!(),
374+
});
366375
}
367376

368377
sym::simd_add

0 commit comments

Comments
 (0)