forked from OSchip/llvm-project
Added log2 for log-base-2 and also modified IsPower2 to use it.
llvm-svn: 2653
This commit is contained in:
parent
18d5a88024
commit
e363307e49
|
@ -12,21 +12,27 @@
|
|||
#ifndef LLVM_SUPPORT_MATH_EXTRAS_H
|
||||
#define LLVM_SUPPORT_MATH_EXTRAS_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <Support/DataTypes.h>
|
||||
|
||||
inline bool IsPowerOf2 (int64_t C, unsigned& getPow);
|
||||
inline unsigned
|
||||
log2(uint64_t C)
|
||||
{
|
||||
unsigned getPow;
|
||||
for (getPow = 0; C > 1; getPow++)
|
||||
C = C >> 1;
|
||||
return getPow;
|
||||
}
|
||||
|
||||
inline
|
||||
bool IsPowerOf2(int64_t C, unsigned& getPow)
|
||||
inline bool
|
||||
IsPowerOf2(int64_t C, unsigned& getPow)
|
||||
{
|
||||
if (C < 0)
|
||||
C = -C;
|
||||
bool isBool = C > 0 && (C == (C & ~(C - 1)));
|
||||
if (isBool)
|
||||
for (getPow = 0; C > 1; getPow++)
|
||||
C = C >> 1;
|
||||
bool isPowerOf2 = C > 0 && (C == (C & ~(C - 1)));
|
||||
if (isPowerOf2)
|
||||
getPow = log2(C);
|
||||
|
||||
return isBool;
|
||||
return isPowerOf2;
|
||||
}
|
||||
|
||||
#endif /*LLVM_SUPPORT_MATH_EXTRAS_H*/
|
||||
|
|
Loading…
Reference in New Issue