Skip to content

Commit 7cd7f52

Browse files
committed
Upgrade Rust toolchain to 2025-07-24
Relevant upstream PR: - rust-lang/rust#143833 (Ban projecting into SIMD types [MCP838])
1 parent 9707a9c commit 7cd7f52

File tree

36 files changed

+361
-111
lines changed

36 files changed

+361
-111
lines changed

library/kani/src/models/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ mod test {
247247
}
248248

249249
#[repr(simd)]
250-
#[derive(Clone, Debug)]
250+
#[derive(Copy, Clone, Debug)]
251251
struct CustomMask<T, const LANES: usize>([T; LANES]);
252252

253253
/// Check that the bitmask model can handle odd size SIMD arrays.
@@ -276,15 +276,14 @@ mod test {
276276
/// Compare the value returned by our model and the simd_bitmask intrinsic.
277277
fn check_bitmask<T, U, E, const LANES: usize>(mask: T)
278278
where
279-
T: Clone,
279+
T: Clone + Copy,
280280
U: PartialEq + Debug,
281281
E: kani_intrinsic::MaskElement,
282282
[u8; kani_intrinsic::mask_len(LANES)]: Sized,
283283
{
284-
assert_eq!(
285-
unsafe { kani_intrinsic::simd_bitmask::<_, U, E, LANES>(mask.clone()) },
286-
unsafe { simd_bitmask::<T, U>(mask) }
287-
);
284+
assert_eq!(unsafe { kani_intrinsic::simd_bitmask::<_, U, E, LANES>(mask) }, unsafe {
285+
simd_bitmask::<T, U>(mask)
286+
});
288287
}
289288

290289
/// Similar to portable simd_harness.

rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
# SPDX-License-Identifier: Apache-2.0 OR MIT
33

44
[toolchain]
5-
channel = "nightly-2025-07-21"
5+
channel = "nightly-2025-07-24"
66
components = ["llvm-tools", "rustc-dev", "rust-src", "rustfmt"]

tests/expected/intrinsics/simd-arith-overflows/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::intrinsics::simd::{simd_add, simd_mul, simd_sub};
77

88
#[repr(simd)]
99
#[allow(non_camel_case_types)]
10-
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
10+
#[derive(Clone, Copy)]
1111
pub struct i8x2([i8; 2]);
1212

1313
#[kani::proof]

tests/expected/intrinsics/simd-cmp-result-type-is-diff-size/main.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,33 @@ use std::intrinsics::simd::simd_eq;
88

99
#[repr(simd)]
1010
#[allow(non_camel_case_types)]
11-
#[derive(Clone, Copy, PartialEq, Eq)]
11+
#[derive(Clone, Copy)]
1212
pub struct i64x2([i64; 2]);
1313

1414
#[repr(simd)]
1515
#[allow(non_camel_case_types)]
16-
#[derive(Clone, Copy, PartialEq, Eq)]
16+
#[derive(Clone, Copy)]
1717
pub struct u64x2([u64; 2]);
1818

1919
#[repr(simd)]
2020
#[allow(non_camel_case_types)]
21-
#[derive(Clone, Copy, PartialEq, Eq)]
21+
#[derive(Clone, Copy)]
2222
pub struct u32x4([u32; 4]);
2323

24+
impl u32x4 {
25+
fn into_array(self) -> [u32; 4] {
26+
unsafe { std::mem::transmute(self) }
27+
}
28+
}
29+
2430
#[kani::proof]
2531
fn main() {
2632
let x = u64x2([0, 0]);
2733
let y = u64x2([0, 1]);
2834

2935
unsafe {
3036
let invalid_simd: u32x4 = simd_eq(x, y);
31-
assert!(invalid_simd == u32x4([u32::MAX, u32::MAX, 0, 0]));
37+
assert!(invalid_simd.into_array() == u32x4([u32::MAX, u32::MAX, 0, 0]).into_array());
3238
// ^^^^ The code above fails to type-check in Rust with the error:
3339
// ```
3440
// error[E0511]: invalid monomorphization of `simd_eq` intrinsic: expected

tests/expected/intrinsics/simd-div-div-zero/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::intrinsics::simd::simd_div;
77

88
#[repr(simd)]
99
#[allow(non_camel_case_types)]
10-
#[derive(Clone, Copy, PartialEq, Eq)]
10+
#[derive(Clone, Copy)]
1111
pub struct i32x2([i32; 2]);
1212

1313
#[kani::proof]
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
FAILURE\
22
attempt to compute simd_div which would overflow
33
UNREACHABLE\
4-
assertion failed: quotients.0[0] == quotients.0[1]
4+
assertion failed: quotients.into_array()[0] == quotients.into_array()[1]
55
FAILURE\
66
attempt to compute simd_rem which would overflow
77
UNREACHABLE\
8-
assertion failed: remainders.0[0] == remainders.0[1]
8+
assertion failed: remainders.into_array()[0] == remainders.into_array()[1]

tests/expected/intrinsics/simd-div-rem-overflow/main.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ use std::intrinsics::simd::{simd_div, simd_rem};
77

88
#[repr(simd)]
99
#[allow(non_camel_case_types)]
10-
#[derive(Clone, Copy, PartialEq, Eq)]
10+
#[derive(Clone, Copy)]
1111
pub struct i32x2([i32; 2]);
1212

13+
impl i32x2 {
14+
fn into_array(self) -> [i32; 2] {
15+
unsafe { std::mem::transmute(self) }
16+
}
17+
}
18+
1319
unsafe fn do_simd_div(dividends: i32x2, divisors: i32x2) -> i32x2 {
1420
simd_div(dividends, divisors)
1521
}
@@ -25,7 +31,7 @@ fn test_simd_div_overflow() {
2531
let divisor = -1;
2632
let divisors = i32x2([divisor, divisor]);
2733
let quotients = unsafe { do_simd_div(dividends, divisors) };
28-
assert_eq!(quotients.0[0], quotients.0[1]);
34+
assert_eq!(quotients.into_array()[0], quotients.into_array()[1]);
2935
}
3036

3137
#[kani::proof]
@@ -35,5 +41,5 @@ fn test_simd_rem_overflow() {
3541
let divisor = -1;
3642
let divisors = i32x2([divisor, divisor]);
3743
let remainders = unsafe { do_simd_rem(dividends, divisors) };
38-
assert_eq!(remainders.0[0], remainders.0[1]);
44+
assert_eq!(remainders.into_array()[0], remainders.into_array()[1]);
3945
}

tests/expected/intrinsics/simd-extract-wrong-type/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::intrinsics::simd::simd_extract;
99

1010
#[repr(simd)]
1111
#[allow(non_camel_case_types)]
12-
#[derive(Clone, Copy, PartialEq, Eq)]
12+
#[derive(Clone, Copy)]
1313
pub struct i64x2([i64; 2]);
1414

1515
#[kani::proof]

tests/expected/intrinsics/simd-insert-wrong-type/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::intrinsics::simd::simd_insert;
99

1010
#[repr(simd)]
1111
#[allow(non_camel_case_types)]
12-
#[derive(Clone, Copy, PartialEq, Eq)]
12+
#[derive(Clone, Copy)]
1313
pub struct i64x2([i64; 2]);
1414

1515
#[kani::proof]

tests/expected/intrinsics/simd-rem-div-zero/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::intrinsics::simd::simd_rem;
77

88
#[repr(simd)]
99
#[allow(non_camel_case_types)]
10-
#[derive(Clone, Copy, PartialEq, Eq)]
10+
#[derive(Clone, Copy)]
1111
pub struct i32x2([i32; 2]);
1212

1313
#[kani::proof]

0 commit comments

Comments
 (0)