39 lines
		
	
	
	
		
			792 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
	
		
			792 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * 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 */
 |