@@ -114,6 +114,9 @@ unsafe extern "unadjusted" {
114114 #[ link_name = "llvm.s390.vsumqf" ] fn vsumqf ( a : vector_unsigned_int , b : vector_unsigned_int ) -> u128 ;
115115 #[ link_name = "llvm.s390.vsumqg" ] fn vsumqg ( a : vector_unsigned_long_long , b : vector_unsigned_long_long ) -> u128 ;
116116
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+
117120 #[ link_name = "llvm.s390.vscbiq" ] fn vscbiq ( a : u128 , b : u128 ) -> u128 ;
118121 #[ link_name = "llvm.s390.vsbiq" ] fn vsbiq ( a : u128 , b : u128 , c : u128 ) -> u128 ;
119122 #[ link_name = "llvm.s390.vsbcbiq" ] fn vsbcbiq ( a : u128 , b : u128 , c : u128 ) -> u128 ;
@@ -4692,9 +4695,11 @@ pub unsafe fn vec_addc_u128(
46924695 a : vector_unsigned_char ,
46934696 b : vector_unsigned_char ,
46944697) -> 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)
46984703}
46994704
47004705/// Vector Add With Carry unsigned 128-bits
@@ -4726,11 +4731,13 @@ pub unsafe fn vec_addec_u128(
47264731 b : vector_unsigned_char ,
47274732 c : vector_unsigned_char ,
47284733) -> 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)
47344741}
47354742
47364743/// Vector Subtract with Carryout
0 commit comments