Deleted Added
full compact
lzcntintrin.h (234353) lzcntintrin.h (280031)
1/*===---- lzcntintrin.h - LZCNT intrinsics ---------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:

--- 21 unchanged lines hidden (view full) ---

30#endif /* __LZCNT__ */
31
32#ifndef __LZCNTINTRIN_H
33#define __LZCNTINTRIN_H
34
35static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__))
36__lzcnt16(unsigned short __X)
37{
1/*===---- lzcntintrin.h - LZCNT intrinsics ---------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:

--- 21 unchanged lines hidden (view full) ---

30#endif /* __LZCNT__ */
31
32#ifndef __LZCNTINTRIN_H
33#define __LZCNTINTRIN_H
34
35static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__))
36__lzcnt16(unsigned short __X)
37{
38 return __builtin_clzs(__X);
38 return __X ? __builtin_clzs(__X) : 16;
39}
40
41static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
42__lzcnt32(unsigned int __X)
43{
39}
40
41static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
42__lzcnt32(unsigned int __X)
43{
44 return __builtin_clz(__X);
44 return __X ? __builtin_clz(__X) : 32;
45}
46
45}
46
47static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
48_lzcnt_u32(unsigned int __X)
49{
50 return __X ? __builtin_clz(__X) : 32;
51}
52
47#ifdef __x86_64__
48static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
49__lzcnt64(unsigned long long __X)
50{
53#ifdef __x86_64__
54static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
55__lzcnt64(unsigned long long __X)
56{
51 return __builtin_clzll(__X);
57 return __X ? __builtin_clzll(__X) : 64;
52}
58}
59
60static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
61_lzcnt_u64(unsigned long long __X)
62{
63 return __X ? __builtin_clzll(__X) : 64;
64}
53#endif
54
55#endif /* __LZCNTINTRIN_H */
65#endif
66
67#endif /* __LZCNTINTRIN_H */