42#if defined(__ANDROID__)
46#if defined(__sun) && defined(__SVR4)
54 static_assert(
sizeof(
uint32_t) ==
sizeof(
unsigned int),
"this code assumes 32-bit integers");
65 return (x << (r & 31)) | (x >> (-r & 31));
69 return (x << (r & 63)) | (x >> (-r & 63));
79 return val & 0xFFFFFFFF;
97 uint64_t adbc_carry = adbc < ad ? 1 : 0;
100 uint64_t product_lo = bd + (adbc << 32);
101 uint64_t product_lo_carry = product_lo < bd ? 1 : 0;
102 *product_hi = ac + (adbc >> 32) + (adbc_carry << 32) + product_lo_carry;
103 assert(ac <= *product_hi);
109 dividend |= ((
uint64_t)*remainder) << 32;
110 *remainder = dividend % divisor;
111 return dividend / divisor;
119 dividend_dwords[3] =
hi_dword(dividend_hi);
120 dividend_dwords[2] =
lo_dword(dividend_hi);
121 dividend_dwords[1] =
hi_dword(dividend_lo);
122 dividend_dwords[0] =
lo_dword(dividend_lo);
138 if (*
value > maxval - add)
152#define IDENT16(x) ((uint16_t) (x))
153#define IDENT32(x) ((uint32_t) (x))
154#define IDENT64(x) ((uint64_t) (x))
156#define SWAP16(x) ((((uint16_t) (x) & 0x00ff) << 8) | \
157 (((uint16_t) (x) & 0xff00) >> 8))
158#define SWAP32(x) ((((uint32_t) (x) & 0x000000ff) << 24) | \
159 (((uint32_t) (x) & 0x0000ff00) << 8) | \
160 (((uint32_t) (x) & 0x00ff0000) >> 8) | \
161 (((uint32_t) (x) & 0xff000000) >> 24))
162#define SWAP64(x) ((((uint64_t) (x) & 0x00000000000000ff) << 56) | \
163 (((uint64_t) (x) & 0x000000000000ff00) << 40) | \
164 (((uint64_t) (x) & 0x0000000000ff0000) << 24) | \
165 (((uint64_t) (x) & 0x00000000ff000000) << 8) | \
166 (((uint64_t) (x) & 0x000000ff00000000) >> 8) | \
167 (((uint64_t) (x) & 0x0000ff0000000000) >> 24) | \
168 (((uint64_t) (x) & 0x00ff000000000000) >> 40) | \
169 (((uint64_t) (x) & 0xff00000000000000) >> 56))
176# if defined(__ANDROID__) && defined(__swap16) && !defined(swap16)
177# define swap16 __swap16
178# elif !defined(swap16)
180 return ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
183# if defined(__ANDROID__) && defined(__swap32) && !defined(swap32)
184# define swap32 __swap32
185# elif !defined(swap32)
187 x = ((x & 0x00ff00ff) << 8) | ((x & 0xff00ff00) >> 8);
188 return (x << 16) | (x >> 16);
191# if defined(__ANDROID__) && defined(__swap64) && !defined(swap64)
192# define swap64 __swap64
193# elif !defined(swap64)
195 x = ((x & 0x00ff00ff00ff00ff) << 8) | ((x & 0xff00ff00ff00ff00) >> 8);
196 x = ((x & 0x0000ffff0000ffff) << 16) | ((x & 0xffff0000ffff0000) >> 16);
197 return (x << 32) | (x >> 32);
203#define UNUSED __attribute__((unused))
212 for (i = 0; i < n; i++) {
218 for (i = 0; i < n; i++) {
224 for (i = 0; i < n; i++) {
241 for (i = 0; i < n; i++) {
247 for (i = 0; i < n; i++) {
253 for (i = 0; i < n; i++) {
259# define LITTLE_ENDIAN 1234
260# define BIG_ENDIAN 4321
261# define BYTE_ORDER LITTLE_ENDIAN
264#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || !defined(BIG_ENDIAN)
265static_assert(
false,
"BYTE_ORDER is undefined. Perhaps, GNU extensions are not enabled");
268#if BYTE_ORDER == LITTLE_ENDIAN
269#define SWAP16LE IDENT16
270#define SWAP16BE SWAP16
271#define swap16le ident16
272#define swap16be swap16
273#define mem_inplace_swap16le mem_inplace_ident
274#define mem_inplace_swap16be mem_inplace_swap16
275#define memcpy_swap16le memcpy_ident16
276#define memcpy_swap16be memcpy_swap16
277#define SWAP32LE IDENT32
278#define SWAP32BE SWAP32
279#define swap32le ident32
280#define swap32be swap32
281#define mem_inplace_swap32le mem_inplace_ident
282#define mem_inplace_swap32be mem_inplace_swap32
283#define memcpy_swap32le memcpy_ident32
284#define memcpy_swap32be memcpy_swap32
285#define SWAP64LE IDENT64
286#define SWAP64BE SWAP64
287#define swap64le ident64
288#define swap64be swap64
289#define mem_inplace_swap64le mem_inplace_ident
290#define mem_inplace_swap64be mem_inplace_swap64
291#define memcpy_swap64le memcpy_ident64
292#define memcpy_swap64be memcpy_swap64
295#if BYTE_ORDER == BIG_ENDIAN
296#define SWAP16BE IDENT16
297#define SWAP16LE SWAP16
298#define swap16be ident16
299#define swap16le swap16
300#define mem_inplace_swap16be mem_inplace_ident
301#define mem_inplace_swap16le mem_inplace_swap16
302#define memcpy_swap16be memcpy_ident16
303#define memcpy_swap16le memcpy_swap16
304#define SWAP32BE IDENT32
305#define SWAP32LE SWAP32
306#define swap32be ident32
307#define swap32le swap32
308#define mem_inplace_swap32be mem_inplace_ident
309#define mem_inplace_swap32le mem_inplace_swap32
310#define memcpy_swap32be memcpy_ident32
311#define memcpy_swap32le memcpy_swap32
312#define SWAP64BE IDENT64
313#define SWAP64LE SWAP64
314#define swap64be ident64
315#define swap64le swap64
316#define mem_inplace_swap64be mem_inplace_ident
317#define mem_inplace_swap64le mem_inplace_swap64
318#define memcpy_swap64be memcpy_ident64
319#define memcpy_swap64le memcpy_swap64
cryptonote::block b
Definition block.cpp:40
void * memcpy(void *a, const void *b, size_t c)
Definition glibc_compat.cpp:16
static uint64_t div_with_reminder(uint64_t dividend, uint32_t divisor, uint32_t *remainder)
Definition int-util.h:108
static void mem_inplace_swap32(void *mem, size_t n)
Definition int-util.h:216
static void memcpy_ident16(void *dst, const void *src, size_t n)
Definition int-util.h:229
static uint32_t swap32(uint32_t x)
Definition int-util.h:186
static void memcpy_swap32(void *dst, const void *src, size_t n)
Definition int-util.h:245
static void mem_inplace_swap16(void *mem, size_t n)
Definition int-util.h:210
static uint64_t ident64(uint64_t x)
Definition int-util.h:173
static void mem_inplace_swap64(void *mem, size_t n)
Definition int-util.h:222
static void memcpy_swap16(void *dst, const void *src, size_t n)
Definition int-util.h:239
static void memcpy_swap64(void *dst, const void *src, size_t n)
Definition int-util.h:251
static uint64_t swap64(uint64_t x)
Definition int-util.h:194
static uint32_t rol32(uint32_t x, int r)
Definition int-util.h:64
static uint64_t rol64(uint64_t x, int r)
Definition int-util.h:68
static uint32_t div128_32(uint64_t dividend_hi, uint64_t dividend_lo, uint32_t divisor, uint64_t *quotient_hi, uint64_t *quotient_lo)
Definition int-util.h:115
static uint32_t ident32(uint32_t x)
Definition int-util.h:172
static void memcpy_ident32(void *dst, const void *src, size_t n)
Definition int-util.h:232
static uint16_t ident16(uint16_t x)
Definition int-util.h:171
static void sub64clamp(uint64_t *value, uint64_t sub)
Definition int-util.h:144
void div128_64(uint64_t dividend_hi, uint64_t dividend_lo, uint64_t divisor, uint64_t *quotient_hi, uint64_t *quotient_lo, uint64_t *remainder_hi, uint64_t *remainder_lo)
Definition int-util.cpp:31
static uint64_t lo_dword(uint64_t val)
Definition int-util.h:78
static void add64clamp(uint64_t *value, uint64_t add)
Definition int-util.h:135
static void mem_inplace_ident(void *mem UNUSED, size_t n UNUSED)
Definition int-util.h:207
static uint64_t hi_dword(uint64_t val)
Definition int-util.h:74
static uint16_t swap16(uint16_t x)
Definition int-util.h:179
static void memcpy_ident64(void *dst, const void *src, size_t n)
Definition int-util.h:235
static uint64_t mul128(uint64_t multiplier, uint64_t multiplicand, uint64_t *product_hi)
Definition int-util.h:82
int
Definition pymoduletest.py:17
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1124
unsigned short uint16_t
Definition stdint.h:125
unsigned int uint32_t
Definition stdint.h:126
unsigned __int64 uint64_t
Definition stdint.h:136
#define UNUSED(expr)
Definition test-libusb-version.c:31