@@ -83,9 +83,6 @@ unsafe extern "unadjusted" {
8383 #[ link_name = "llvm.nearbyint.v4f32" ] fn nearbyint_v4f32 ( a : vector_float ) -> vector_float ;
8484 #[ link_name = "llvm.nearbyint.v2f64" ] fn nearbyint_v2f64 ( a : vector_double ) -> vector_double ;
8585
86- #[ link_name = "llvm.rint.v4f32" ] fn rint_v4f32 ( a : vector_float ) -> vector_float ;
87- #[ link_name = "llvm.rint.v2f64" ] fn rint_v2f64 ( a : vector_double ) -> vector_double ;
88-
8986 #[ link_name = "llvm.roundeven.v4f32" ] fn roundeven_v4f32 ( a : vector_float ) -> vector_float ;
9087 #[ link_name = "llvm.roundeven.v2f64" ] fn roundeven_v2f64 ( a : vector_double ) -> vector_double ;
9188
@@ -101,11 +98,6 @@ unsafe extern "unadjusted" {
10198 #[ link_name = "llvm.s390.vsld" ] fn vsld ( a : i8x16 , b : i8x16 , c : u32 ) -> i8x16 ;
10299 #[ link_name = "llvm.s390.vsrd" ] fn vsrd ( a : i8x16 , b : i8x16 , c : u32 ) -> i8x16 ;
103100
104- #[ link_name = "llvm.fshl.v16i8" ] fn fshlb ( a : vector_unsigned_char , b : vector_unsigned_char , c : vector_unsigned_char ) -> vector_unsigned_char ;
105- #[ link_name = "llvm.fshl.v8i16" ] fn fshlh ( a : vector_unsigned_short , b : vector_unsigned_short , c : vector_unsigned_short ) -> vector_unsigned_short ;
106- #[ link_name = "llvm.fshl.v4i32" ] fn fshlf ( a : vector_unsigned_int , b : vector_unsigned_int , c : vector_unsigned_int ) -> vector_unsigned_int ;
107- #[ link_name = "llvm.fshl.v2i64" ] fn fshlg ( a : vector_unsigned_long_long , b : vector_unsigned_long_long , c : vector_unsigned_long_long ) -> vector_unsigned_long_long ;
108-
109101 #[ link_name = "llvm.s390.verimb" ] fn verimb ( a : vector_signed_char , b : vector_signed_char , c : vector_signed_char , d : i32 ) -> vector_signed_char ;
110102 #[ link_name = "llvm.s390.verimh" ] fn verimh ( a : vector_signed_short , b : vector_signed_short , c : vector_signed_short , d : i32 ) -> vector_signed_short ;
111103 #[ link_name = "llvm.s390.verimf" ] fn verimf ( a : vector_signed_int , b : vector_signed_int , c : vector_signed_int , d : i32 ) -> vector_signed_int ;
@@ -1197,8 +1189,8 @@ mod sealed {
11971189 test_impl ! { vec_round_f32 ( a: vector_float) -> vector_float [ roundeven_v4f32, _] }
11981190 test_impl ! { vec_round_f64 ( a: vector_double) -> vector_double [ roundeven_v2f64, _] }
11991191
1200- test_impl ! { vec_rint_f32 ( a: vector_float) -> vector_float [ rint_v4f32 , "vector-enhancements-1" vfisb] }
1201- test_impl ! { vec_rint_f64 ( a: vector_double) -> vector_double [ rint_v2f64 , vfidb] }
1192+ test_impl ! { vec_rint_f32 ( a: vector_float) -> vector_float [ simd_round_ties_even , "vector-enhancements-1" vfisb] }
1193+ test_impl ! { vec_rint_f64 ( a: vector_double) -> vector_double [ simd_round_ties_even , vfidb] }
12021194
12031195 #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
12041196 pub trait VectorRoundc {
@@ -1221,8 +1213,8 @@ mod sealed {
12211213 impl_vec_trait ! { [ VectorRound vec_round] vec_round_f32 ( vector_float) }
12221214 impl_vec_trait ! { [ VectorRound vec_round] vec_round_f64 ( vector_double) }
12231215
1224- impl_vec_trait ! { [ VectorRint vec_rint] vec_rint_f32 ( vector_float) }
1225- impl_vec_trait ! { [ VectorRint vec_rint] vec_rint_f64 ( vector_double) }
1216+ impl_vec_trait ! { [ VectorRint vec_rint] simd_round_ties_even ( vector_float) }
1217+ impl_vec_trait ! { [ VectorRint vec_rint] simd_round_ties_even ( vector_double) }
12261218
12271219 #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
12281220 pub trait VectorTrunc {
@@ -1411,43 +1403,42 @@ mod sealed {
14111403 }
14121404
14131405 macro_rules! impl_rot {
1414- ( $fun: ident $intr : ident $ ty: ident) => {
1406+ ( $fun: ident $ty: ident) => {
14151407 #[ inline]
14161408 #[ target_feature( enable = "vector" ) ]
14171409 #[ cfg_attr( test, assert_instr( $fun) ) ]
14181410 unsafe fn $fun( a: t_t_l!( $ty) , b: t_t_l!( $ty) ) -> t_t_l!( $ty) {
1419- transmute ( $intr ( transmute ( a ) , transmute ( a ) , transmute ( b ) ) )
1411+ simd_funnel_shl ( a , a , b )
14201412 }
14211413 } ;
14221414 }
14231415
1424- impl_rot ! { verllvb fshlb u8 }
1425- impl_rot ! { verllvh fshlh u16 }
1426- impl_rot ! { verllvf fshlf u32 }
1427- impl_rot ! { verllvg fshlg u64 }
1416+ impl_rot ! { verllvb u8 }
1417+ impl_rot ! { verllvh u16 }
1418+ impl_rot ! { verllvf u32 }
1419+ impl_rot ! { verllvg u64 }
14281420
14291421 impl_vec_shift ! { [ VectorRl vec_rl] ( verllvb, verllvh, verllvf, verllvg) }
14301422
14311423 macro_rules! test_rot_imm {
1432- ( $fun: ident $instr: ident $intr : ident $ ty: ident) => {
1424+ ( $fun: ident $instr: ident $ty: ident) => {
14331425 #[ inline]
14341426 #[ target_feature( enable = "vector" ) ]
14351427 #[ cfg_attr( test, assert_instr( $instr) ) ]
14361428 unsafe fn $fun( a: t_t_l!( $ty) , bits: core:: ffi:: c_ulong) -> t_t_l!( $ty) {
14371429 // mod by the number of bits in a's element type to prevent UB
14381430 let bits = ( bits % $ty:: BITS as core:: ffi:: c_ulong) as $ty;
1439- let a = transmute( a) ;
14401431 let b = <t_t_s!( $ty) >:: splat( bits) ;
14411432
1442- transmute ( $intr ( a, a, transmute( b) ) )
1433+ simd_funnel_shl ( a, a, transmute( b) )
14431434 }
14441435 } ;
14451436 }
14461437
1447- test_rot_imm ! { verllvb_imm verllb fshlb u8 }
1448- test_rot_imm ! { verllvh_imm verllh fshlh u16 }
1449- test_rot_imm ! { verllvf_imm verllf fshlf u32 }
1450- test_rot_imm ! { verllvg_imm verllg fshlg u64 }
1438+ test_rot_imm ! { verllvb_imm verllb u8 }
1439+ test_rot_imm ! { verllvh_imm verllh u16 }
1440+ test_rot_imm ! { verllvf_imm verllf u32 }
1441+ test_rot_imm ! { verllvg_imm verllg u64 }
14511442
14521443 #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
14531444 pub trait VectorRli {
0 commit comments