@@ -62,7 +62,7 @@ impl<T: Copy, const N: usize> PackedSimd<T, N> {
6262#[ rustc_nounwind]
6363pub unsafe fn simd_shuffle_const_generic < T , U , const IDX : & ' static [ u32 ] > ( x : T , y : T ) -> U ;
6464
65- pub fn simd_ops_f16 ( ) {
65+ fn simd_ops_f16 ( ) {
6666 use intrinsics:: * ;
6767
6868 // small hack to make type inference better
@@ -273,7 +273,7 @@ fn simd_ops_f64() {
273273 assert_eq ! ( f64x2:: from_array( [ f64 :: NAN , 0.0 ] ) . reduce_min( ) , 0.0 ) ;
274274}
275275
276- pub fn simd_ops_f128 ( ) {
276+ fn simd_ops_f128 ( ) {
277277 use intrinsics:: * ;
278278
279279 // small hack to make type inference better
@@ -454,6 +454,18 @@ fn simd_ops_i32() {
454454 0x3fffffffu32 as i32
455455 ] )
456456 ) ;
457+
458+ // these values are taken from the doctests of `u32::funnel_shl` and `u32::funnel_shr`
459+ let c = u32x4:: splat ( 0x010000b3 ) ;
460+ let d = u32x4:: splat ( 0x2fe78e45 ) ;
461+
462+ unsafe {
463+ assert_eq ! ( intrinsics:: simd_funnel_shl( c, d, u32x4:: splat( 0 ) ) , c) ;
464+ assert_eq ! ( intrinsics:: simd_funnel_shl( c, d, u32x4:: splat( 8 ) ) , u32x4:: splat( 0x0000b32f ) ) ;
465+
466+ assert_eq ! ( intrinsics:: simd_funnel_shr( c, d, u32x4:: splat( 0 ) ) , d) ;
467+ assert_eq ! ( intrinsics:: simd_funnel_shr( c, d, u32x4:: splat( 8 ) ) , u32x4:: splat( 0xb32fe78e ) ) ;
468+ }
457469}
458470
459471fn simd_mask ( ) {
0 commit comments