#include <linux/linkage.h> | |
.text | |
.align 32 | |
ENTRY(__arch_hweight8) | |
ba,pt %xcc, __sw_hweight8 | |
nop | |
nop | |
ENDPROC(__arch_hweight8) | |
.section .popc_3insn_patch, "ax" | |
.word __arch_hweight8 | |
sllx %o0, 64-8, %g1 | |
retl | |
popc %g1, %o0 | |
.previous | |
ENTRY(__arch_hweight16) | |
ba,pt %xcc, __sw_hweight16 | |
nop | |
nop | |
ENDPROC(__arch_hweight16) | |
.section .popc_3insn_patch, "ax" | |
.word __arch_hweight16 | |
sllx %o0, 64-16, %g1 | |
retl | |
popc %g1, %o0 | |
.previous | |
ENTRY(__arch_hweight32) | |
ba,pt %xcc, __sw_hweight32 | |
nop | |
nop | |
ENDPROC(__arch_hweight32) | |
.section .popc_3insn_patch, "ax" | |
.word __arch_hweight32 | |
sllx %o0, 64-32, %g1 | |
retl | |
popc %g1, %o0 | |
.previous | |
ENTRY(__arch_hweight64) | |
ba,pt %xcc, __sw_hweight64 | |
nop | |
nop | |
ENDPROC(__arch_hweight64) | |
.section .popc_3insn_patch, "ax" | |
.word __arch_hweight64 | |
retl | |
popc %o0, %o0 | |
nop | |
.previous |