@@ -219,6 +219,9 @@ extern "C" {
219
219
fn vcmpequh ( a : vector_unsigned_short , b : vector_unsigned_short ) -> vector_bool_short ;
220
220
#[ link_name = "llvm.ppc.altivec.vcmpequw" ]
221
221
fn vcmpequw ( a : vector_unsigned_int , b : vector_unsigned_int ) -> vector_bool_int ;
222
+
223
+ #[ link_name = "llvm.ppc.altivec.vcmpgefp" ]
224
+ fn vcmpgefp ( a : vector_float , b : vector_float ) -> vector_bool_int ;
222
225
}
223
226
224
227
macro_rules! s_t_l {
@@ -375,6 +378,8 @@ mod sealed {
375
378
}
376
379
}
377
380
381
+ test_impl ! { vec_vcmpgefp( a: vector_float, b: vector_float) -> vector_bool_int [ vcmpgefp, vcmpgefp ] }
382
+
378
383
test_impl ! { vec_vcmpequb( a: vector_unsigned_char, b: vector_unsigned_char) -> vector_bool_char [ vcmpequb, vcmpequb ] }
379
384
test_impl ! { vec_vcmpequh( a: vector_unsigned_short, b: vector_unsigned_short) -> vector_bool_short [ vcmpequh, vcmpequh ] }
380
385
test_impl ! { vec_vcmpequw( a: vector_unsigned_int, b: vector_unsigned_int) -> vector_bool_int [ vcmpequw, vcmpequw ] }
@@ -1318,6 +1323,13 @@ mod sealed {
1318
1323
vector_mladd ! { vector_signed_short, vector_signed_short, vector_signed_short }
1319
1324
}
1320
1325
1326
+ /// Vector cmpge.
1327
+ #[ inline]
1328
+ #[ target_feature( enable = "altivec" ) ]
1329
+ pub unsafe fn vec_cmpge ( a : vector_float , b : vector_float ) -> vector_bool_int {
1330
+ sealed:: vec_vcmpgefp ( a, b)
1331
+ }
1332
+
1321
1333
/// Vector cmpeq.
1322
1334
#[ inline]
1323
1335
#[ target_feature( enable = "altivec" ) ]
@@ -1679,6 +1691,12 @@ mod tests {
1679
1691
}
1680
1692
}
1681
1693
1694
+ test_vec_2 ! { test_vec_cmpge, vec_cmpge, f32x4 -> m32x4,
1695
+ [ 0.1 , -0.1 , 0.0 , 0.99 ] ,
1696
+ [ 0.1 , 0.0 , 0.1 , 1.0 ] ,
1697
+ [ true , false , false , false ]
1698
+ }
1699
+
1682
1700
test_vec_2 ! { test_vec_cmpeq_i8, vec_cmpeq, i8x16 -> m8x16,
1683
1701
[ 1 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
1684
1702
[ 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
0 commit comments