-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MIPS: Create and use asm/arch_hweight.h
Some MIPS ISA processor varients can do hweight operations efficiently. Split arch_hweight.h into a seperate file, and implement the operations with __builtin_popcount{,ll} if supported. Signed-off-by: David Daney <ddaney@caviumnetworks.com> To: linux-mips@linux-mips.org Cc: David Daney <ddaney@caviumnetworks.com> Patchwork: https://patchwork.linux-mips.org/patch/1430/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
- Loading branch information
David Daney
authored and
Ralf Baechle
committed
Aug 5, 2010
1 parent
d16f709
commit 1a403d1
Showing
2 changed files
with
42 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* 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 */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters