blob: 0ddbbb03182232fe199f5222248617c72a2f23b7 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
David S. Milleref7c4d42011-07-29 09:42:07 -07002#include <linux/linkage.h>
Al Virod3867f042016-01-16 21:39:30 -05003#include <asm/export.h>
David S. Milleref7c4d42011-07-29 09:42:07 -07004
5 .text
6 .align 32
7ENTRY(__arch_hweight8)
David S. Miller9289ea72017-06-22 10:56:48 -04008 sethi %hi(__sw_hweight8), %g1
9 jmpl %g1 + %lo(__sw_hweight8), %g0
David S. Milleref7c4d42011-07-29 09:42:07 -070010 nop
David S. Milleref7c4d42011-07-29 09:42:07 -070011ENDPROC(__arch_hweight8)
Al Virod3867f042016-01-16 21:39:30 -050012EXPORT_SYMBOL(__arch_hweight8)
David S. Milleref7c4d42011-07-29 09:42:07 -070013 .section .popc_3insn_patch, "ax"
14 .word __arch_hweight8
15 sllx %o0, 64-8, %g1
16 retl
17 popc %g1, %o0
18 .previous
19
20ENTRY(__arch_hweight16)
David S. Miller9289ea72017-06-22 10:56:48 -040021 sethi %hi(__sw_hweight16), %g1
22 jmpl %g1 + %lo(__sw_hweight16), %g0
David S. Milleref7c4d42011-07-29 09:42:07 -070023 nop
David S. Milleref7c4d42011-07-29 09:42:07 -070024ENDPROC(__arch_hweight16)
Al Virod3867f042016-01-16 21:39:30 -050025EXPORT_SYMBOL(__arch_hweight16)
David S. Milleref7c4d42011-07-29 09:42:07 -070026 .section .popc_3insn_patch, "ax"
27 .word __arch_hweight16
28 sllx %o0, 64-16, %g1
29 retl
30 popc %g1, %o0
31 .previous
32
33ENTRY(__arch_hweight32)
David S. Miller9289ea72017-06-22 10:56:48 -040034 sethi %hi(__sw_hweight32), %g1
35 jmpl %g1 + %lo(__sw_hweight32), %g0
David S. Milleref7c4d42011-07-29 09:42:07 -070036 nop
David S. Milleref7c4d42011-07-29 09:42:07 -070037ENDPROC(__arch_hweight32)
Al Virod3867f042016-01-16 21:39:30 -050038EXPORT_SYMBOL(__arch_hweight32)
David S. Milleref7c4d42011-07-29 09:42:07 -070039 .section .popc_3insn_patch, "ax"
40 .word __arch_hweight32
41 sllx %o0, 64-32, %g1
42 retl
43 popc %g1, %o0
44 .previous
45
46ENTRY(__arch_hweight64)
Jan Engelhardt59585b42017-12-25 03:43:53 +010047 sethi %hi(__sw_hweight64), %g1
48 jmpl %g1 + %lo(__sw_hweight64), %g0
David S. Milleref7c4d42011-07-29 09:42:07 -070049 nop
David S. Milleref7c4d42011-07-29 09:42:07 -070050ENDPROC(__arch_hweight64)
Al Virod3867f042016-01-16 21:39:30 -050051EXPORT_SYMBOL(__arch_hweight64)
David S. Milleref7c4d42011-07-29 09:42:07 -070052 .section .popc_3insn_patch, "ax"
53 .word __arch_hweight64
54 retl
55 popc %o0, %o0
56 nop
57 .previous