| /* | |
| * This file is subject to the terms and conditions of the GNU General Public | |
| * License. See the file "COPYING" in the main directory of this archive | |
| * for more details. | |
| * | |
| */ | |
| #ifndef _ASM_ARCH_HWEIGHT_H | |
| #define _ASM_ARCH_HWEIGHT_H | |
| #ifdef ARCH_HAS_USABLE_BUILTIN_POPCOUNT | |
| #include <asm/types.h> | |
| static inline unsigned int __arch_hweight32(unsigned int w) | |
| { | |
| return __builtin_popcount(w); | |
| } | |
| static inline unsigned int __arch_hweight16(unsigned int w) | |
| { | |
| return __builtin_popcount(w & 0xffff); | |
| } | |
| static inline unsigned int __arch_hweight8(unsigned int w) | |
| { | |
| return __builtin_popcount(w & 0xff); | |
| } | |
| static inline unsigned long __arch_hweight64(__u64 w) | |
| { | |
| return __builtin_popcountll(w); | |
| } | |
| #else | |
| #include <asm-generic/bitops/arch_hweight.h> | |
| #endif | |
| #endif /* _ASM_ARCH_HWEIGHT_H */ |