Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/util.h
Show First 20 Lines • Show All 164 Lines • ▼ Show 20 Lines | |||||
#if defined(_WIN32) | #if defined(_WIN32) | ||||
# define I64FORMAT "I64d" | # define I64FORMAT "I64d" | ||||
# define I64uFORMAT "I64u" | # define I64uFORMAT "I64u" | ||||
#else | #else | ||||
# define I64FORMAT "lld" | # define I64FORMAT "lld" | ||||
# define I64uFORMAT "llu" | # define I64uFORMAT "llu" | ||||
#endif | #endif | ||||
#if defined(HAVE___INT128) | |||||
# if defined(__GNUC__) | #if defined(__GNUC__) | ||||
# define SECP256K1_GNUC_EXT __extension__ | # define SECP256K1_GNUC_EXT __extension__ | ||||
# else | #else | ||||
# define SECP256K1_GNUC_EXT | # define SECP256K1_GNUC_EXT | ||||
# endif | #endif | ||||
SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; | |||||
#endif | |||||
#if defined(__BYTE_ORDER__) | #if defined(__BYTE_ORDER__) | ||||
# if defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && !defined(SECP256K1_LITTLE_ENDIAN) | # if defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && !defined(SECP256K1_LITTLE_ENDIAN) | ||||
# define SECP256K1_LITTLE_ENDIAN | # define SECP256K1_LITTLE_ENDIAN | ||||
# elif defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && !defined(SECP256K1_BIG_ENDIAN) | # elif defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && !defined(SECP256K1_BIG_ENDIAN) | ||||
# define SECP256K1_BIG_ENDIAN | # define SECP256K1_BIG_ENDIAN | ||||
# endif | # endif | ||||
#endif | #endif | ||||
Show All 33 Lines | static SECP256K1_INLINE void secp256k1_int_cmov(int *r, const int *a, int flag) { | ||||
mask0 = (unsigned int)vflag + ~0u; | mask0 = (unsigned int)vflag + ~0u; | ||||
mask1 = ~mask0; | mask1 = ~mask0; | ||||
r_masked = ((unsigned int)*r & mask0); | r_masked = ((unsigned int)*r & mask0); | ||||
a_masked = ((unsigned int)*a & mask1); | a_masked = ((unsigned int)*a & mask1); | ||||
*r = (int)(r_masked | a_masked); | *r = (int)(r_masked | a_masked); | ||||
} | } | ||||
/* If USE_FORCE_WIDEMUL_{INT128,INT64} is set, use that wide multiplication implementation. | |||||
* Otherwise use the presence of __SIZEOF_INT128__ to decide. | |||||
*/ | |||||
#if defined(USE_FORCE_WIDEMUL_INT128) | |||||
# define SECP256K1_WIDEMUL_INT128 1 | |||||
#elif defined(USE_FORCE_WIDEMUL_INT64) | |||||
# define SECP256K1_WIDEMUL_INT64 1 | |||||
#elif defined(__SIZEOF_INT128__) | |||||
# define SECP256K1_WIDEMUL_INT128 1 | |||||
#else | |||||
# define SECP256K1_WIDEMUL_INT64 1 | |||||
#endif | |||||
#if defined(SECP256K1_WIDEMUL_INT128) | |||||
SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; | |||||
#endif | |||||
#endif /* SECP256K1_UTIL_H */ | #endif /* SECP256K1_UTIL_H */ |