| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 1 | //===-- Support/MathExtras.h - Useful math functions -------------*- C++ -*--=// | 
|  | 2 | // | 
|  | 3 | // This file contains some functions that are useful for math stuff. | 
|  | 4 | // | 
|  | 5 | //===----------------------------------------------------------------------===// | 
| Chris Lattner | 5de2204 | 2001-11-27 00:03:19 +0000 | [diff] [blame] | 6 |  | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 7 | #ifndef SUPPORT_MATH_EXTRAS_H | 
|  | 8 | #define SUPPORT_MATH_EXTRAS_H | 
| Chris Lattner | 5de2204 | 2001-11-27 00:03:19 +0000 | [diff] [blame] | 9 |  | 
| Vikram S. Adve | e363307 | 2002-05-19 15:46:52 +0000 | [diff] [blame] | 10 | #include <Support/DataTypes.h> | 
| Chris Lattner | 5de2204 | 2001-11-27 00:03:19 +0000 | [diff] [blame] | 11 |  | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 12 | inline unsigned log2(uint64_t C) { | 
| Vikram S. Adve | e363307 | 2002-05-19 15:46:52 +0000 | [diff] [blame] | 13 | unsigned getPow; | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 14 | for (getPow = 0; C > 1; ++getPow) | 
|  | 15 | C >>= 1; | 
| Vikram S. Adve | e363307 | 2002-05-19 15:46:52 +0000 | [diff] [blame] | 16 | return getPow; | 
|  | 17 | } | 
| Chris Lattner | 5de2204 | 2001-11-27 00:03:19 +0000 | [diff] [blame] | 18 |  | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 19 | inline bool isPowerOf2(int64_t C, unsigned &getPow) { | 
|  | 20 | if (C < 0) C = -C; | 
|  | 21 | if (C > 0 && C == (C & ~(C - 1))) { | 
| Vikram S. Adve | e363307 | 2002-05-19 15:46:52 +0000 | [diff] [blame] | 22 | getPow = log2(C); | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 23 | return true; | 
|  | 24 | } | 
|  | 25 |  | 
|  | 26 | return false; | 
| Chris Lattner | 5de2204 | 2001-11-27 00:03:19 +0000 | [diff] [blame] | 27 | } | 
|  | 28 |  | 
| Chris Lattner | 84dc863 | 2002-05-19 21:19:55 +0000 | [diff] [blame] | 29 | #endif |