@@ -35,6 +35,7 @@ extern "platform-intrinsic" {
3535 fn simd_sub < T > ( x : T , y : T ) -> T ;
3636 fn simd_mul < T > ( x : T , y : T ) -> T ;
3737 fn simd_div < T > ( x : T , y : T ) -> T ;
38+ fn simd_rem < T > ( x : T , y : T ) -> T ;
3839 fn simd_shl < T > ( x : T , y : T ) -> T ;
3940 fn simd_shr < T > ( x : T , y : T ) -> T ;
4041 fn simd_and < T > ( x : T , y : T ) -> T ;
@@ -72,9 +73,22 @@ fn main() {
7273 all_eq ! ( simd_sub( z2, z1) , f32x4( 1.0 , 1.0 , 1.0 , 1.0 ) ) ;
7374 all_eq ! ( simd_sub( z1, z2) , f32x4( -1.0 , -1.0 , -1.0 , -1.0 ) ) ;
7475
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 ) ) ;
7581 all_eq ! ( simd_div( z1, z2) , f32x4( 1.0 /2.0 , 2.0 /3.0 , 3.0 /4.0 , 4.0 /5.0 ) ) ;
7682 all_eq ! ( simd_div( z2, z1) , f32x4( 2.0 /1.0 , 3.0 /2.0 , 4.0 /3.0 , 5.0 /4.0 ) ) ;
7783
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+
7892 all_eq ! ( simd_shl( x1, x2) , i32x4( 1 << 2 , 2 << 3 , 3 << 4 , 4 << 5 ) ) ;
7993 all_eq ! ( simd_shl( x2, x1) , i32x4( 2 << 1 , 3 << 2 , 4 << 3 , 5 << 4 ) ) ;
8094 all_eq ! ( simd_shl( y1, y2) , u32x4( 1 << 2 , 2 << 3 , 3 << 4 , 4 << 5 ) ) ;
0 commit comments