Lines 1-9
Link Here
|
|
|
1 |
// Only use __has_builtin in compilers that support it. |
2 |
#ifndef __has_builtin |
3 |
#define __has_builtin(x) 0 |
4 |
#endif |
1 |
|
5 |
|
|
|
6 |
#if !__has_builtin(__builtin_clz) |
2 |
int __builtin_clz(unsigned int); |
7 |
int __builtin_clz(unsigned int); |
|
|
8 |
#endif |
9 |
#if !__has_builtin(__builtin_ctz) |
3 |
int __builtin_ctz(unsigned int); |
10 |
int __builtin_ctz(unsigned int); |
|
|
11 |
#endif |
12 |
#if !__has_builtin(__builtin_clzl) |
4 |
int __builtin_clzl(unsigned long); |
13 |
int __builtin_clzl(unsigned long); |
|
|
14 |
#endif |
15 |
#if !__has_builtin(__builtin_ctzl) |
5 |
int __builtin_ctzl(unsigned long); |
16 |
int __builtin_ctzl(unsigned long); |
|
|
17 |
#endif |
6 |
|
18 |
|
|
|
19 |
#if !__has_builtin(__builtin_clz) |
7 |
int |
20 |
int |
8 |
__builtin_clz(unsigned int v) |
21 |
__builtin_clz(unsigned int v) |
9 |
{ |
22 |
{ |
Lines 14-20
__builtin_clz(unsigned int v)
Link Here
|
14 |
break; |
27 |
break; |
15 |
return i; |
28 |
return i; |
16 |
} |
29 |
} |
|
|
30 |
#endif |
17 |
|
31 |
|
|
|
32 |
#if !__has_builtin(__builtin_ctz) |
18 |
int |
33 |
int |
19 |
__builtin_ctz(unsigned int v) |
34 |
__builtin_ctz(unsigned int v) |
20 |
{ |
35 |
{ |
Lines 25-31
__builtin_ctz(unsigned int v)
Link Here
|
25 |
break; |
40 |
break; |
26 |
return i; |
41 |
return i; |
27 |
} |
42 |
} |
|
|
43 |
#endif |
28 |
|
44 |
|
|
|
45 |
#if !__has_builtin(__builtin_clzl) |
29 |
int |
46 |
int |
30 |
__builtin_clzl(unsigned long v) |
47 |
__builtin_clzl(unsigned long v) |
31 |
{ |
48 |
{ |
Lines 37-43
__builtin_clzl(unsigned long v)
Link Here
|
37 |
break; |
54 |
break; |
38 |
return i; |
55 |
return i; |
39 |
} |
56 |
} |
|
|
57 |
#endif |
40 |
|
58 |
|
|
|
59 |
#if !__has_builtin(__builtin_ctzl) |
41 |
int |
60 |
int |
42 |
__builtin_ctzl(unsigned long v) |
61 |
__builtin_ctzl(unsigned long v) |
43 |
{ |
62 |
{ |
Lines 48-50
__builtin_ctzl(unsigned long v)
Link Here
|
48 |
break; |
67 |
break; |
49 |
return i; |
68 |
return i; |
50 |
} |
69 |
} |
|
|
70 |
#endif |