@@ -83,9 +83,6 @@ unsafe extern "unadjusted" {
83
83
#[ link_name = "llvm.nearbyint.v4f32" ] fn nearbyint_v4f32 ( a : vector_float ) -> vector_float ;
84
84
#[ link_name = "llvm.nearbyint.v2f64" ] fn nearbyint_v2f64 ( a : vector_double ) -> vector_double ;
85
85
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
-
89
86
#[ link_name = "llvm.roundeven.v4f32" ] fn roundeven_v4f32 ( a : vector_float ) -> vector_float ;
90
87
#[ link_name = "llvm.roundeven.v2f64" ] fn roundeven_v2f64 ( a : vector_double ) -> vector_double ;
91
88
@@ -101,11 +98,6 @@ unsafe extern "unadjusted" {
101
98
#[ link_name = "llvm.s390.vsld" ] fn vsld ( a : i8x16 , b : i8x16 , c : u32 ) -> i8x16 ;
102
99
#[ link_name = "llvm.s390.vsrd" ] fn vsrd ( a : i8x16 , b : i8x16 , c : u32 ) -> i8x16 ;
103
100
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
-
109
101
#[ link_name = "llvm.s390.verimb" ] fn verimb ( a : vector_signed_char , b : vector_signed_char , c : vector_signed_char , d : i32 ) -> vector_signed_char ;
110
102
#[ link_name = "llvm.s390.verimh" ] fn verimh ( a : vector_signed_short , b : vector_signed_short , c : vector_signed_short , d : i32 ) -> vector_signed_short ;
111
103
#[ 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 {
1197
1189
test_impl ! { vec_round_f32 ( a: vector_float) -> vector_float [ roundeven_v4f32, _] }
1198
1190
test_impl ! { vec_round_f64 ( a: vector_double) -> vector_double [ roundeven_v2f64, _] }
1199
1191
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] }
1202
1194
1203
1195
#[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1204
1196
pub trait VectorRoundc {
@@ -1221,8 +1213,8 @@ mod sealed {
1221
1213
impl_vec_trait ! { [ VectorRound vec_round] vec_round_f32 ( vector_float) }
1222
1214
impl_vec_trait ! { [ VectorRound vec_round] vec_round_f64 ( vector_double) }
1223
1215
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) }
1226
1218
1227
1219
#[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1228
1220
pub trait VectorTrunc {
@@ -1411,43 +1403,42 @@ mod sealed {
1411
1403
}
1412
1404
1413
1405
macro_rules! impl_rot {
1414
- ( $fun: ident $intr : ident $ ty: ident) => {
1406
+ ( $fun: ident $ty: ident) => {
1415
1407
#[ inline]
1416
1408
#[ target_feature( enable = "vector" ) ]
1417
1409
#[ cfg_attr( test, assert_instr( $fun) ) ]
1418
1410
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 )
1420
1412
}
1421
1413
} ;
1422
1414
}
1423
1415
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 }
1428
1420
1429
1421
impl_vec_shift ! { [ VectorRl vec_rl] ( verllvb, verllvh, verllvf, verllvg) }
1430
1422
1431
1423
macro_rules! test_rot_imm {
1432
- ( $fun: ident $instr: ident $intr : ident $ ty: ident) => {
1424
+ ( $fun: ident $instr: ident $ty: ident) => {
1433
1425
#[ inline]
1434
1426
#[ target_feature( enable = "vector" ) ]
1435
1427
#[ cfg_attr( test, assert_instr( $instr) ) ]
1436
1428
unsafe fn $fun( a: t_t_l!( $ty) , bits: core:: ffi:: c_ulong) -> t_t_l!( $ty) {
1437
1429
// mod by the number of bits in a's element type to prevent UB
1438
1430
let bits = ( bits % $ty:: BITS as core:: ffi:: c_ulong) as $ty;
1439
- let a = transmute( a) ;
1440
1431
let b = <t_t_s!( $ty) >:: splat( bits) ;
1441
1432
1442
- transmute ( $intr ( a, a, transmute( b) ) )
1433
+ simd_funnel_shl ( a, a, transmute( b) )
1443
1434
}
1444
1435
} ;
1445
1436
}
1446
1437
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 }
1451
1442
1452
1443
#[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1453
1444
pub trait VectorRli {
0 commit comments