13#if !defined(__i386__) && !defined(__x86_64__)
14#error "This header is only meant to be used on x86 and x64 architecture"
18#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
21#if defined(__cplusplus)
22#define __INLINE __inline
24#define __INLINE static __inline
27#if defined(__cplusplus)
58 return __builtin_ia32_addcarryx_u32(__cf, __x,
__y,
__p);
89 return __builtin_ia32_subborrow_u32(__cf, __x,
__y,
__p);
117_addcarry_u64(
unsigned char __cf,
unsigned long long __x,
118 unsigned long long __y,
unsigned long long *
__p) {
119 return __builtin_ia32_addcarryx_u64(__cf, __x,
__y,
__p);
147_subborrow_u64(
unsigned char __cf,
unsigned long long __x,
148 unsigned long long __y,
unsigned long long *
__p) {
149 return __builtin_ia32_subborrow_u64(__cf, __x,
__y,
__p);
153#if defined(__cplusplus)
158#undef __DEFAULT_FN_ATTRS
#define __DEFAULT_FN_ATTRS
__INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf, unsigned int __x, unsigned int __y, unsigned int *__p)
Adds unsigned 32-bit integers __x and __y, plus 0 or 1 as indicated by the carry flag __cf.
__INLINE unsigned char __DEFAULT_FN_ATTRS _subborrow_u32(unsigned char __cf, unsigned int __x, unsigned int __y, unsigned int *__p)
Adds unsigned 32-bit integer __y to 0 or 1 as indicated by the carry flag __cf, and subtracts the res...
static __inline__ uint32_t volatile uint32_t * __p
static __inline__ uint32_t uint32_t __y