11
11
#[ derive( Copy , Clone , PartialEq , Debug ) ]
12
12
struct f32x4 ( pub [ f32 ; 4 ] ) ;
13
13
14
+ impl f32x4 {
15
+ fn into_array ( self ) -> [ f32 ; 4 ] {
16
+ unsafe { std:: mem:: transmute ( self ) }
17
+ }
18
+ }
19
+
14
20
use std:: intrinsics:: simd:: * ;
15
21
16
22
fn main ( ) {
@@ -29,22 +35,22 @@ fn main() {
29
35
unsafe {
30
36
let min0 = simd_fmin ( x, y) ;
31
37
let min1 = simd_fmin ( y, x) ;
32
- assert_eq ! ( min0, min1) ;
38
+ assert_eq ! ( min0. into_array ( ) , min1. into_array ( ) ) ;
33
39
let e = f32x4 ( [ 1.0 , 1.0 , 3.0 , 3.0 ] ) ;
34
- assert_eq ! ( min0, e) ;
40
+ assert_eq ! ( min0. into_array ( ) , e. into_array ( ) ) ;
35
41
let minn = simd_fmin ( x, n) ;
36
- assert_eq ! ( minn, x) ;
42
+ assert_eq ! ( minn. into_array ( ) , x. into_array ( ) ) ;
37
43
let minn = simd_fmin ( y, n) ;
38
- assert_eq ! ( minn, y) ;
44
+ assert_eq ! ( minn. into_array ( ) , y. into_array ( ) ) ;
39
45
40
46
let max0 = simd_fmax ( x, y) ;
41
47
let max1 = simd_fmax ( y, x) ;
42
- assert_eq ! ( max0, max1) ;
48
+ assert_eq ! ( max0. into_array ( ) , max1. into_array ( ) ) ;
43
49
let e = f32x4 ( [ 2.0 , 2.0 , 4.0 , 4.0 ] ) ;
44
- assert_eq ! ( max0, e) ;
50
+ assert_eq ! ( max0. into_array ( ) , e. into_array ( ) ) ;
45
51
let maxn = simd_fmax ( x, n) ;
46
- assert_eq ! ( maxn, x) ;
52
+ assert_eq ! ( maxn. into_array ( ) , x. into_array ( ) ) ;
47
53
let maxn = simd_fmax ( y, n) ;
48
- assert_eq ! ( maxn, y) ;
54
+ assert_eq ! ( maxn. into_array ( ) , y. into_array ( ) ) ;
49
55
}
50
56
}
0 commit comments