Merge pull request #2800 from animalize/fix_c89
Fix a C89 error in msvc
This commit is contained in:
@@ -145,8 +145,14 @@ MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
|||||||
# if STATIC_BMI2 == 1
|
# if STATIC_BMI2 == 1
|
||||||
return _lzcnt_u32(val) ^ 31;
|
return _lzcnt_u32(val) ^ 31;
|
||||||
# else
|
# else
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
unsigned long r;
|
||||||
|
_BitScanReverse(&r, val);
|
||||||
|
return (unsigned)r;
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
|
|||||||
@@ -43,8 +43,14 @@ static U32 FSE_ctz(U32 val)
|
|||||||
assert(val != 0);
|
assert(val != 0);
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
return _BitScanForward(&r, val) ? (unsigned)r : 0;
|
unsigned long r;
|
||||||
|
_BitScanForward(&r, val);
|
||||||
|
return (unsigned)r;
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
|
||||||
return __builtin_ctz(val);
|
return __builtin_ctz(val);
|
||||||
# elif defined(__ICCARM__) /* IAR Intrinsic */
|
# elif defined(__ICCARM__) /* IAR Intrinsic */
|
||||||
|
|||||||
+29
-11
@@ -358,8 +358,14 @@ MEM_STATIC U32 ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus
|
|||||||
# if STATIC_BMI2 == 1
|
# if STATIC_BMI2 == 1
|
||||||
return _lzcnt_u32(val)^31;
|
return _lzcnt_u32(val)^31;
|
||||||
# else
|
# else
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
unsigned long r;
|
||||||
|
_BitScanReverse(&r, val);
|
||||||
|
return (unsigned)r;
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
@@ -379,10 +385,10 @@ MEM_STATIC U32 ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes CTZ on a U64.
|
* Counts the number of trailing zeros of a `size_t`.
|
||||||
* This will be slow on 32-bit mode, and on unsupported compilers.
|
* Most compilers should support CTZ as a builtin. A backup
|
||||||
* If you need this function to be fast (because it is hot) expand
|
* implementation is provided if the builtin isn't supported, but
|
||||||
* support.
|
* it may not be terribly efficient.
|
||||||
*/
|
*/
|
||||||
MEM_STATIC unsigned ZSTD_countTrailingZeros(size_t val)
|
MEM_STATIC unsigned ZSTD_countTrailingZeros(size_t val)
|
||||||
{
|
{
|
||||||
@@ -391,8 +397,14 @@ MEM_STATIC unsigned ZSTD_countTrailingZeros(size_t val)
|
|||||||
# if STATIC_BMI2
|
# if STATIC_BMI2
|
||||||
return _tzcnt_u64(val);
|
return _tzcnt_u64(val);
|
||||||
# else
|
# else
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
return _BitScanForward64( &r, (U64)val ) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanForward64(&r, (U64)val);
|
||||||
|
return (unsigned)r;
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
||||||
return __builtin_ctzll((U64)val);
|
return __builtin_ctzll((U64)val);
|
||||||
@@ -409,10 +421,16 @@ MEM_STATIC unsigned ZSTD_countTrailingZeros(size_t val)
|
|||||||
# endif
|
# endif
|
||||||
} else { /* 32 bits */
|
} else { /* 32 bits */
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
return _BitScanForward( &r, (U32)val ) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanForward(&r, (U32)val);
|
||||||
|
return (unsigned)r;
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (__builtin_ctz((U32)val) >> 3);
|
return __builtin_ctz((U32)val);
|
||||||
# else
|
# else
|
||||||
static const int DeBruijnBytePos[32] = { 0, 1, 28, 2, 29, 14, 24, 3,
|
static const int DeBruijnBytePos[32] = { 0, 1, 28, 2, 29, 14, 24, 3,
|
||||||
30, 22, 20, 15, 25, 17, 4, 8,
|
30, 22, 20, 15, 25, 17, 4, 8,
|
||||||
|
|||||||
@@ -672,8 +672,14 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
|
|||||||
# if STATIC_BMI2
|
# if STATIC_BMI2
|
||||||
return _tzcnt_u64(val) >> 3;
|
return _tzcnt_u64(val) >> 3;
|
||||||
# else
|
# else
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
return _BitScanForward64( &r, (U64)val ) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanForward64(&r, (U64)val);
|
||||||
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
||||||
return (__builtin_ctzll((U64)val) >> 3);
|
return (__builtin_ctzll((U64)val) >> 3);
|
||||||
@@ -690,8 +696,14 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
|
|||||||
# endif
|
# endif
|
||||||
} else { /* 32 bits */
|
} else { /* 32 bits */
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
return _BitScanForward( &r, (U32)val ) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanForward(&r, (U32)val);
|
||||||
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (__builtin_ctz((U32)val) >> 3);
|
return (__builtin_ctz((U32)val) >> 3);
|
||||||
# else
|
# else
|
||||||
@@ -708,8 +720,14 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
|
|||||||
# if STATIC_BMI2
|
# if STATIC_BMI2
|
||||||
return _lzcnt_u64(val) >> 3;
|
return _lzcnt_u64(val) >> 3;
|
||||||
# else
|
# else
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
return _BitScanReverse64(&r, (U64)val) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanReverse64(&r, (U64)val);
|
||||||
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
# elif defined(__GNUC__) && (__GNUC__ >= 4)
|
||||||
return (__builtin_clzll(val) >> 3);
|
return (__builtin_clzll(val) >> 3);
|
||||||
@@ -723,8 +741,14 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
|
|||||||
# endif
|
# endif
|
||||||
} else { /* 32 bits */
|
} else { /* 32 bits */
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
return _BitScanReverse( &r, (unsigned long)val ) ? (unsigned)(r >> 3) : 0;
|
unsigned long r;
|
||||||
|
_BitScanReverse(&r, (unsigned long)val);
|
||||||
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (__builtin_clz((U32)val) >> 3);
|
return (__builtin_clz((U32)val) >> 3);
|
||||||
# else
|
# else
|
||||||
|
|||||||
@@ -883,8 +883,14 @@ typedef U64 ZSTD_VecMask; /* Clarifies when we are interacting with a U64 repr
|
|||||||
static U32 ZSTD_VecMask_next(ZSTD_VecMask val) {
|
static U32 ZSTD_VecMask_next(ZSTD_VecMask val) {
|
||||||
assert(val != 0);
|
assert(val != 0);
|
||||||
# if defined(_MSC_VER) && defined(_WIN64)
|
# if defined(_MSC_VER) && defined(_WIN64)
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
return _BitScanForward64(&r, val) ? (U32)r : 0; /* _BitScanForward64 not defined outside of x86/64 */
|
unsigned long r;
|
||||||
|
_BitScanForward64(&r, val);
|
||||||
|
return (U32)(r);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif (defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))
|
# elif (defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))
|
||||||
if (sizeof(size_t) == 4) {
|
if (sizeof(size_t) == 4) {
|
||||||
U32 mostSignificantWord = (U32)(val >> 32);
|
U32 mostSignificantWord = (U32)(val >> 32);
|
||||||
|
|||||||
+24
-4
@@ -135,9 +135,14 @@ static unsigned ZDICT_NbCommonBytes (size_t val)
|
|||||||
if (MEM_isLittleEndian()) {
|
if (MEM_isLittleEndian()) {
|
||||||
if (MEM_64bits()) {
|
if (MEM_64bits()) {
|
||||||
# if defined(_MSC_VER) && defined(_WIN64)
|
# if defined(_MSC_VER) && defined(_WIN64)
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
|
unsigned long r;
|
||||||
_BitScanForward64(&r, (U64)val);
|
_BitScanForward64(&r, (U64)val);
|
||||||
return (unsigned)(r >> 3);
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (unsigned)(__builtin_ctzll((U64)val) >> 3);
|
return (unsigned)(__builtin_ctzll((U64)val) >> 3);
|
||||||
# else
|
# else
|
||||||
@@ -146,9 +151,14 @@ static unsigned ZDICT_NbCommonBytes (size_t val)
|
|||||||
# endif
|
# endif
|
||||||
} else { /* 32 bits */
|
} else { /* 32 bits */
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
unsigned long r=0;
|
if (val != 0) {
|
||||||
|
unsigned long r;
|
||||||
_BitScanForward(&r, (U32)val);
|
_BitScanForward(&r, (U32)val);
|
||||||
return (unsigned)(r >> 3);
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (unsigned)(__builtin_ctz((U32)val) >> 3);
|
return (unsigned)(__builtin_ctz((U32)val) >> 3);
|
||||||
# else
|
# else
|
||||||
@@ -159,9 +169,14 @@ static unsigned ZDICT_NbCommonBytes (size_t val)
|
|||||||
} else { /* Big Endian CPU */
|
} else { /* Big Endian CPU */
|
||||||
if (MEM_64bits()) {
|
if (MEM_64bits()) {
|
||||||
# if defined(_MSC_VER) && defined(_WIN64)
|
# if defined(_MSC_VER) && defined(_WIN64)
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
|
unsigned long r;
|
||||||
_BitScanReverse64(&r, val);
|
_BitScanReverse64(&r, val);
|
||||||
return (unsigned)(r >> 3);
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (unsigned)(__builtin_clzll(val) >> 3);
|
return (unsigned)(__builtin_clzll(val) >> 3);
|
||||||
# else
|
# else
|
||||||
@@ -174,9 +189,14 @@ static unsigned ZDICT_NbCommonBytes (size_t val)
|
|||||||
# endif
|
# endif
|
||||||
} else { /* 32 bits */
|
} else { /* 32 bits */
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
unsigned long r = 0;
|
if (val != 0) {
|
||||||
|
unsigned long r;
|
||||||
_BitScanReverse(&r, (unsigned long)val);
|
_BitScanReverse(&r, (unsigned long)val);
|
||||||
return (unsigned)(r >> 3);
|
return (unsigned)(r >> 3);
|
||||||
|
} else {
|
||||||
|
/* Should not reach this code path */
|
||||||
|
__assume(0);
|
||||||
|
}
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
# elif defined(__GNUC__) && (__GNUC__ >= 3)
|
||||||
return (unsigned)(__builtin_clz((U32)val) >> 3);
|
return (unsigned)(__builtin_clz((U32)val) >> 3);
|
||||||
# else
|
# else
|
||||||
|
|||||||
@@ -343,8 +343,7 @@ FORCE_INLINE unsigned FSE_highbit32 (U32 val)
|
|||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (GCC_VERSION >= 304) /* GCC Intrinsic */
|
# elif defined(__GNUC__) && (GCC_VERSION >= 304) /* GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -353,9 +353,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -356,9 +356,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -627,9 +627,8 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -756,9 +756,8 @@ MEM_STATIC size_t BITv05_readBitsFast(BITv05_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BITv05_highbit32 (U32 val)
|
MEM_STATIC unsigned BITv05_highbit32 (U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -860,9 +860,8 @@ MEM_STATIC size_t BITv06_readBitsFast(BITv06_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BITv06_highbit32 ( U32 val)
|
MEM_STATIC unsigned BITv06_highbit32 ( U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
@@ -530,9 +530,8 @@ MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, unsigned nbBits);
|
|||||||
MEM_STATIC unsigned BITv07_highbit32 (U32 val)
|
MEM_STATIC unsigned BITv07_highbit32 (U32 val)
|
||||||
{
|
{
|
||||||
# if defined(_MSC_VER) /* Visual */
|
# if defined(_MSC_VER) /* Visual */
|
||||||
unsigned long r=0;
|
unsigned long r;
|
||||||
_BitScanReverse ( &r, val );
|
return _BitScanReverse(&r, val) ? (unsigned)r : 0;
|
||||||
return (unsigned) r;
|
|
||||||
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
||||||
return __builtin_clz (val) ^ 31;
|
return __builtin_clz (val) ^ 31;
|
||||||
# else /* Software version */
|
# else /* Software version */
|
||||||
|
|||||||
Reference in New Issue
Block a user