@@ -7,9 +7,15 @@ use std::intrinsics::simd::{simd_div, simd_rem};
7
7
8
8
#[ repr( simd) ]
9
9
#[ allow( non_camel_case_types) ]
10
- #[ derive( Clone , Copy , PartialEq , Eq ) ]
10
+ #[ derive( Clone , Copy ) ]
11
11
pub struct i32x2 ( [ i32 ; 2 ] ) ;
12
12
13
+ impl i32x2 {
14
+ fn into_array ( self ) -> [ i32 ; 2 ] {
15
+ unsafe { std:: mem:: transmute ( self ) }
16
+ }
17
+ }
18
+
13
19
unsafe fn do_simd_div ( dividends : i32x2 , divisors : i32x2 ) -> i32x2 {
14
20
simd_div ( dividends, divisors)
15
21
}
@@ -25,7 +31,7 @@ fn test_simd_div_overflow() {
25
31
let divisor = -1 ;
26
32
let divisors = i32x2 ( [ divisor, divisor] ) ;
27
33
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 ] ) ;
29
35
}
30
36
31
37
#[ kani:: proof]
@@ -35,5 +41,5 @@ fn test_simd_rem_overflow() {
35
41
let divisor = -1 ;
36
42
let divisors = i32x2 ( [ divisor, divisor] ) ;
37
43
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 ] ) ;
39
45
}
0 commit comments