blob: f9985f129fb68e2c599b944a3be5c0a4ebddb8b3 [file] [log] [blame]
David S. Milleref7c4d42011-07-29 09:42:07 -07001#include <linux/linkage.h>
Al Virod3867f042016-01-16 21:39:30 -05002#include <asm/export.h>
David S. Milleref7c4d42011-07-29 09:42:07 -07003
4 .text
5 .align 32
6ENTRY(__arch_hweight8)
7 ba,pt %xcc, __sw_hweight8
8 nop
9 nop
10ENDPROC(__arch_hweight8)
Al Virod3867f042016-01-16 21:39:30 -050011EXPORT_SYMBOL(__arch_hweight8)
David S. Milleref7c4d42011-07-29 09:42:07 -070012 .section .popc_3insn_patch, "ax"
13 .word __arch_hweight8
14 sllx %o0, 64-8, %g1
15 retl
16 popc %g1, %o0
17 .previous
18
19ENTRY(__arch_hweight16)
20 ba,pt %xcc, __sw_hweight16
21 nop
22 nop
23ENDPROC(__arch_hweight16)
Al Virod3867f042016-01-16 21:39:30 -050024EXPORT_SYMBOL(__arch_hweight16)
David S. Milleref7c4d42011-07-29 09:42:07 -070025 .section .popc_3insn_patch, "ax"
26 .word __arch_hweight16
27 sllx %o0, 64-16, %g1
28 retl
29 popc %g1, %o0
30 .previous
31
32ENTRY(__arch_hweight32)
33 ba,pt %xcc, __sw_hweight32
34 nop
35 nop
36ENDPROC(__arch_hweight32)
Al Virod3867f042016-01-16 21:39:30 -050037EXPORT_SYMBOL(__arch_hweight32)
David S. Milleref7c4d42011-07-29 09:42:07 -070038 .section .popc_3insn_patch, "ax"
39 .word __arch_hweight32
40 sllx %o0, 64-32, %g1
41 retl
42 popc %g1, %o0
43 .previous
44
45ENTRY(__arch_hweight64)
46 ba,pt %xcc, __sw_hweight64
47 nop
48 nop
49ENDPROC(__arch_hweight64)
Al Virod3867f042016-01-16 21:39:30 -050050EXPORT_SYMBOL(__arch_hweight64)
David S. Milleref7c4d42011-07-29 09:42:07 -070051 .section .popc_3insn_patch, "ax"
52 .word __arch_hweight64
53 retl
54 popc %o0, %o0
55 nop
56 .previous