/* * 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 */ |