use crate::arch::word::Word;
#[inline]
#[allow(unused_unsafe)]
pub fn add_with_carry(a: Word, b: Word, carry: Word) -> (Word, Word) {
let mut sum = 0;
let carry = unsafe { core::arch::x86_64::_addcarry_u64((carry & 1) as u8, a, b, &mut sum) };
(sum, Word::from(carry))
}
#[inline]
#[allow(unused_unsafe)]
pub fn sub_with_borrow(a: Word, b: Word, borrow: Word) -> (Word, Word) {
let mut diff = 0;
let borrow = unsafe { core::arch::x86_64::_subborrow_u64((borrow & 1) as u8, a, b, &mut diff) };
(diff, Word::from(borrow))
}