1111#[ derive( Copy , Clone , PartialEq , Debug ) ]
1212struct f32x4 ( pub [ f32 ; 4 ] ) ;
1313
14+ impl f32x4 {
15+ fn into_array ( self ) -> [ f32 ; 4 ] {
16+ unsafe { std:: mem:: transmute ( self ) }
17+ }
18+ }
19+
1420use std:: intrinsics:: simd:: * ;
1521
1622fn main ( ) {
@@ -29,22 +35,22 @@ fn main() {
2935 unsafe {
3036 let min0 = simd_fmin ( x, y) ;
3137 let min1 = simd_fmin ( y, x) ;
32- assert_eq ! ( min0, min1) ;
38+ assert_eq ! ( min0. into_array ( ) , min1. into_array ( ) ) ;
3339 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 ( ) ) ;
3541 let minn = simd_fmin ( x, n) ;
36- assert_eq ! ( minn, x) ;
42+ assert_eq ! ( minn. into_array ( ) , x. into_array ( ) ) ;
3743 let minn = simd_fmin ( y, n) ;
38- assert_eq ! ( minn, y) ;
44+ assert_eq ! ( minn. into_array ( ) , y. into_array ( ) ) ;
3945
4046 let max0 = simd_fmax ( x, y) ;
4147 let max1 = simd_fmax ( y, x) ;
42- assert_eq ! ( max0, max1) ;
48+ assert_eq ! ( max0. into_array ( ) , max1. into_array ( ) ) ;
4349 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 ( ) ) ;
4551 let maxn = simd_fmax ( x, n) ;
46- assert_eq ! ( maxn, x) ;
52+ assert_eq ! ( maxn. into_array ( ) , x. into_array ( ) ) ;
4753 let maxn = simd_fmax ( y, n) ;
48- assert_eq ! ( maxn, y) ;
54+ assert_eq ! ( maxn. into_array ( ) , y. into_array ( ) ) ;
4955 }
5056}
0 commit comments