@@ -35,6 +35,7 @@ extern "platform-intrinsic" {
35
35
fn simd_sub < T > ( x : T , y : T ) -> T ;
36
36
fn simd_mul < T > ( x : T , y : T ) -> T ;
37
37
fn simd_div < T > ( x : T , y : T ) -> T ;
38
+ fn simd_rem < T > ( x : T , y : T ) -> T ;
38
39
fn simd_shl < T > ( x : T , y : T ) -> T ;
39
40
fn simd_shr < T > ( x : T , y : T ) -> T ;
40
41
fn simd_and < T > ( x : T , y : T ) -> T ;
@@ -72,9 +73,22 @@ fn main() {
72
73
all_eq ! ( simd_sub( z2, z1) , f32x4( 1.0 , 1.0 , 1.0 , 1.0 ) ) ;
73
74
all_eq ! ( simd_sub( z1, z2) , f32x4( -1.0 , -1.0 , -1.0 , -1.0 ) ) ;
74
75
76
+ all_eq ! ( simd_div( x1, x1) , i32x4( 1 , 1 , 1 , 1 ) ) ;
77
+ all_eq ! ( simd_div( i32x4( 2 , 4 , 6 , 8 ) , i32x4( 2 , 2 , 2 , 2 ) ) , x1) ;
78
+ all_eq ! ( simd_div( y1, y1) , u32x4( 1 , 1 , 1 , 1 ) ) ;
79
+ all_eq ! ( simd_div( u32x4( 2 , 4 , 6 , 8 ) , u32x4( 2 , 2 , 2 , 2 ) ) , y1) ;
80
+ all_eq ! ( simd_div( z1, z1) , f32x4( 1.0 , 1.0 , 1.0 , 1.0 ) ) ;
75
81
all_eq ! ( simd_div( z1, z2) , f32x4( 1.0 /2.0 , 2.0 /3.0 , 3.0 /4.0 , 4.0 /5.0 ) ) ;
76
82
all_eq ! ( simd_div( z2, z1) , f32x4( 2.0 /1.0 , 3.0 /2.0 , 4.0 /3.0 , 5.0 /4.0 ) ) ;
77
83
84
+ all_eq ! ( simd_rem( x1, x1) , i32x4( 0 , 0 , 0 , 0 ) ) ;
85
+ all_eq ! ( simd_rem( x2, x1) , i32x4( 0 , 1 , 1 , 1 ) ) ;
86
+ all_eq ! ( simd_rem( y1, y1) , u32x4( 0 , 0 , 0 , 0 ) ) ;
87
+ all_eq ! ( simd_rem( y2, y1) , u32x4( 0 , 1 , 1 , 1 ) ) ;
88
+ all_eq ! ( simd_rem( z1, z1) , f32x4( 0.0 , 0.0 , 0.0 , 0.0 ) ) ;
89
+ all_eq ! ( simd_rem( z1, z2) , z1) ;
90
+ all_eq ! ( simd_rem( z2, z1) , f32x4( 0.0 , 1.0 , 1.0 , 1.0 ) ) ;
91
+
78
92
all_eq ! ( simd_shl( x1, x2) , i32x4( 1 << 2 , 2 << 3 , 3 << 4 , 4 << 5 ) ) ;
79
93
all_eq ! ( simd_shl( x2, x1) , i32x4( 2 << 1 , 3 << 2 , 4 << 3 , 5 << 4 ) ) ;
80
94
all_eq ! ( simd_shl( y1, y2) , u32x4( 1 << 2 , 2 << 3 , 3 << 4 , 4 << 5 ) ) ;
0 commit comments