13#if !defined(__i386__) && !defined(__x86_64__)
14#error "This header is only meant to be used on x86 and x64 architecture"
18#if defined(__cplusplus) && (__cplusplus >= 201103L)
19#define __DEFAULT_FN_ATTRS \
20 __attribute__((__always_inline__, __nodebug__)) constexpr
22#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
26#if defined(__cplusplus)
27#define __INLINE __inline
29#define __INLINE static __inline
32#if defined(__cplusplus)
63 return __builtin_ia32_addcarryx_u32(__cf, __x,
__y,
__p);
94 return __builtin_ia32_subborrow_u32(__cf, __x,
__y,
__p);
122_addcarry_u64(
unsigned char __cf,
unsigned long long __x,
123 unsigned long long __y,
unsigned long long *
__p) {
124 return __builtin_ia32_addcarryx_u64(__cf, __x,
__y,
__p);
152_subborrow_u64(
unsigned char __cf,
unsigned long long __x,
153 unsigned long long __y,
unsigned long long *
__p) {
154 return __builtin_ia32_subborrow_u64(__cf, __x,
__y,
__p);
158#if defined(__cplusplus)
163#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