blob: 9fbb827a439113cf7bbd3fba02bb86360482b095 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// $Id$ -*-c++-*-
//***************************************************************************
// File:
// MathExtras.h
//
// Purpose:
//
// History:
// 8/25/01 - Vikram Adve - Created
//**************************************************************************/
#ifndef LLVM_SUPPORT_MATH_EXTRAS_H
#define LLVM_SUPPORT_MATH_EXTRAS_H
#include <Support/DataTypes.h>
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)
{
if (C < 0)
C = -C;
bool isPowerOf2 = C > 0 && (C == (C & ~(C - 1)));
if (isPowerOf2)
getPow = log2(C);
return isPowerOf2;
}
#endif /*LLVM_SUPPORT_MATH_EXTRAS_H*/
|