@@ -114,6 +114,9 @@ unsafe extern "unadjusted" {
114
114
#[ link_name = "llvm.s390.vsumqf" ] fn vsumqf ( a : vector_unsigned_int , b : vector_unsigned_int ) -> u128 ;
115
115
#[ link_name = "llvm.s390.vsumqg" ] fn vsumqg ( a : vector_unsigned_long_long , b : vector_unsigned_long_long ) -> u128 ;
116
116
117
+ #[ link_name = "llvm.s390.vaccq" ] fn vaccq ( a : vector_unsigned_char , b : vector_unsigned_char ) -> vector_unsigned_char ;
118
+ #[ link_name = "llvm.s390.vacccq" ] fn vacccq ( a : vector_unsigned_char , b : vector_unsigned_char , c : vector_unsigned_char ) -> vector_unsigned_char ;
119
+
117
120
#[ link_name = "llvm.s390.vscbiq" ] fn vscbiq ( a : u128 , b : u128 ) -> u128 ;
118
121
#[ link_name = "llvm.s390.vsbiq" ] fn vsbiq ( a : u128 , b : u128 , c : u128 ) -> u128 ;
119
122
#[ link_name = "llvm.s390.vsbcbiq" ] fn vsbcbiq ( a : u128 , b : u128 , c : u128 ) -> u128 ;
@@ -4692,9 +4695,11 @@ pub unsafe fn vec_addc_u128(
4692
4695
a : vector_unsigned_char ,
4693
4696
b : vector_unsigned_char ,
4694
4697
) -> vector_unsigned_char {
4695
- let a: u128 = transmute ( a) ;
4696
- let b: u128 = transmute ( b) ;
4697
- transmute ( a. overflowing_add ( b) . 1 as u128 )
4698
+ // FIXME(llvm) https://github.com/llvm/llvm-project/pull/153557
4699
+ // let a: u128 = transmute(a);
4700
+ // let b: u128 = transmute(b);
4701
+ // transmute(a.overflowing_add(b).1 as u128)
4702
+ vaccq ( a, b)
4698
4703
}
4699
4704
4700
4705
/// Vector Add With Carry unsigned 128-bits
@@ -4726,11 +4731,13 @@ pub unsafe fn vec_addec_u128(
4726
4731
b : vector_unsigned_char ,
4727
4732
c : vector_unsigned_char ,
4728
4733
) -> vector_unsigned_char {
4729
- let a: u128 = transmute ( a) ;
4730
- let b: u128 = transmute ( b) ;
4731
- let c: u128 = transmute ( c) ;
4732
- let ( _d, carry) = a. carrying_add ( b, c & 1 != 0 ) ;
4733
- transmute ( carry as u128 )
4734
+ // FIXME(llvm) https://github.com/llvm/llvm-project/pull/153557
4735
+ // let a: u128 = transmute(a);
4736
+ // let b: u128 = transmute(b);
4737
+ // let c: u128 = transmute(c);
4738
+ // let (_d, carry) = a.carrying_add(b, c & 1 != 0);
4739
+ // transmute(carry as u128)
4740
+ vacccq ( a, b, c)
4734
4741
}
4735
4742
4736
4743
/// Vector Subtract with Carryout
0 commit comments