@@ -1554,6 +1554,19 @@ mod sealed {
1554
1554
}
1555
1555
1556
1556
macro_rules! impl_vfae {
1557
+ ( [ idx $Trait: ident $m: ident] $imm: literal $( $fun: ident $ty: ident $r: ident) * ) => {
1558
+ $(
1559
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1560
+ impl $Trait<Self > for $ty {
1561
+ type Result = $r;
1562
+ #[ inline]
1563
+ #[ target_feature( enable = "vector" ) ]
1564
+ unsafe fn $m( self , b: Self ) -> Self :: Result {
1565
+ transmute( $fun:: <$imm>( transmute( self ) , transmute( b) ) )
1566
+ }
1567
+ }
1568
+ ) *
1569
+ } ;
1557
1570
( [ $Trait: ident $m: ident] $imm: literal $( $fun: ident $ty: ident) * ) => {
1558
1571
$(
1559
1572
#[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
@@ -1608,6 +1621,46 @@ mod sealed {
1608
1621
vfaef vector_unsigned_int
1609
1622
vfaef vector_bool_int
1610
1623
}
1624
+
1625
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1626
+ pub trait VectorFindAnyEqIdx < Other > {
1627
+ type Result ;
1628
+ unsafe fn vec_find_any_eq_idx ( self , other : Other ) -> Self :: Result ;
1629
+ }
1630
+
1631
+ impl_vfae ! { [ idx VectorFindAnyEqIdx vec_find_any_eq_idx] 0
1632
+ vfaeb vector_signed_char vector_signed_char
1633
+ vfaeb vector_unsigned_char vector_unsigned_char
1634
+ vfaeb vector_bool_char vector_unsigned_char
1635
+
1636
+ vfaeh vector_signed_short vector_signed_short
1637
+ vfaeh vector_unsigned_short vector_unsigned_short
1638
+ vfaeh vector_bool_short vector_unsigned_short
1639
+
1640
+ vfaef vector_signed_int vector_signed_int
1641
+ vfaef vector_unsigned_int vector_unsigned_int
1642
+ vfaef vector_bool_int vector_unsigned_int
1643
+ }
1644
+
1645
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
1646
+ pub trait VectorFindAnyNeIdx < Other > {
1647
+ type Result ;
1648
+ unsafe fn vec_find_any_ne_idx ( self , other : Other ) -> Self :: Result ;
1649
+ }
1650
+
1651
+ impl_vfae ! { [ idx VectorFindAnyNeIdx vec_find_any_ne_idx] 8
1652
+ vfaeb vector_signed_char vector_signed_char
1653
+ vfaeb vector_unsigned_char vector_unsigned_char
1654
+ vfaeb vector_bool_char vector_unsigned_char
1655
+
1656
+ vfaeh vector_signed_short vector_signed_short
1657
+ vfaeh vector_unsigned_short vector_unsigned_short
1658
+ vfaeh vector_bool_short vector_unsigned_short
1659
+
1660
+ vfaef vector_signed_int vector_signed_int
1661
+ vfaef vector_unsigned_int vector_unsigned_int
1662
+ vfaef vector_bool_int vector_unsigned_int
1663
+ }
1611
1664
}
1612
1665
1613
1666
/// Vector element-wise addition.
@@ -2413,6 +2466,26 @@ where
2413
2466
a. vec_find_any_ne ( b)
2414
2467
}
2415
2468
2469
+ #[ inline]
2470
+ #[ target_feature( enable = "vector" ) ]
2471
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
2472
+ pub unsafe fn vec_find_any_eq_idx < T , U > ( a : T , b : U ) -> <T as sealed:: VectorFindAnyEqIdx < U > >:: Result
2473
+ where
2474
+ T : sealed:: VectorFindAnyEqIdx < U > ,
2475
+ {
2476
+ a. vec_find_any_eq_idx ( b)
2477
+ }
2478
+
2479
+ #[ inline]
2480
+ #[ target_feature( enable = "vector" ) ]
2481
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
2482
+ pub unsafe fn vec_find_any_ne_idx < T , U > ( a : T , b : U ) -> <T as sealed:: VectorFindAnyNeIdx < U > >:: Result
2483
+ where
2484
+ T : sealed:: VectorFindAnyNeIdx < U > ,
2485
+ {
2486
+ a. vec_find_any_ne_idx ( b)
2487
+ }
2488
+
2416
2489
#[ cfg( test) ]
2417
2490
mod tests {
2418
2491
use super :: * ;
@@ -2945,4 +3018,26 @@ mod tests {
2945
3018
[ -5 , 3 , -7 , 8 ] ,
2946
3019
[ 0xFFFFFFFF , 0xFFFFFFFF , 0 , 0xFFFFFFFF ]
2947
3020
}
3021
+
3022
+ test_vec_2 ! { test_vec_find_any_eq_idx_1, vec_find_any_eq_idx, i32x4, i32x4 -> u32x4,
3023
+ [ 1 , 2 , 3 , 4 ] ,
3024
+ [ 5 , 3 , 7 , 8 ] ,
3025
+ [ 0 , 8 , 0 , 0 ]
3026
+ }
3027
+ test_vec_2 ! { test_vec_find_any_eq_idx_2, vec_find_any_eq_idx, i32x4, i32x4 -> u32x4,
3028
+ [ 1 , 2 , 3 , 4 ] ,
3029
+ [ 5 , 6 , 7 , 8 ] ,
3030
+ [ 0 , 16 , 0 , 0 ]
3031
+ }
3032
+
3033
+ test_vec_2 ! { test_vec_find_any_ne_idx_1, vec_find_any_ne_idx, i32x4, i32x4 -> u32x4,
3034
+ [ 1 , 2 , 3 , 4 ] ,
3035
+ [ 1 , 5 , 3 , 4 ] ,
3036
+ [ 0 , 4 , 0 , 0 ]
3037
+ }
3038
+ test_vec_2 ! { test_vec_find_any_ne_idx_2, vec_find_any_ne_idx, i32x4, i32x4 -> u32x4,
3039
+ [ 1 , 2 , 3 , 4 ] ,
3040
+ [ 1 , 2 , 3 , 4 ] ,
3041
+ [ 0 , 16 , 0 , 0 ]
3042
+ }
2948
3043
}
0 commit comments