xref: /openbmc/linux/arch/sparc/lib/hweight.S (revision 4cdb71b6)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
2*4cdb71b6SMasahiro Yamada#include <linux/export.h>
3ef7c4d46SDavid S. Miller#include <linux/linkage.h>
4ef7c4d46SDavid S. Miller
5ef7c4d46SDavid S. Miller	.text
6ef7c4d46SDavid S. Miller	.align	32
7ef7c4d46SDavid S. MillerENTRY(__arch_hweight8)
89289ea7fSDavid S. Miller	sethi	%hi(__sw_hweight8), %g1
99289ea7fSDavid S. Miller	jmpl	%g1 + %lo(__sw_hweight8), %g0
10ef7c4d46SDavid S. Miller	 nop
11ef7c4d46SDavid S. MillerENDPROC(__arch_hweight8)
12d3867f04SAl ViroEXPORT_SYMBOL(__arch_hweight8)
13ef7c4d46SDavid S. Miller	.section	.popc_3insn_patch, "ax"
14ef7c4d46SDavid S. Miller	.word		__arch_hweight8
15ef7c4d46SDavid S. Miller	sllx		%o0, 64-8, %g1
16ef7c4d46SDavid S. Miller	retl
17ef7c4d46SDavid S. Miller	 popc		%g1, %o0
18ef7c4d46SDavid S. Miller	.previous
19ef7c4d46SDavid S. Miller
20ef7c4d46SDavid S. MillerENTRY(__arch_hweight16)
219289ea7fSDavid S. Miller	sethi	%hi(__sw_hweight16), %g1
229289ea7fSDavid S. Miller	jmpl	%g1 + %lo(__sw_hweight16), %g0
23ef7c4d46SDavid S. Miller	 nop
24ef7c4d46SDavid S. MillerENDPROC(__arch_hweight16)
25d3867f04SAl ViroEXPORT_SYMBOL(__arch_hweight16)
26ef7c4d46SDavid S. Miller	.section	.popc_3insn_patch, "ax"
27ef7c4d46SDavid S. Miller	.word		__arch_hweight16
28ef7c4d46SDavid S. Miller	sllx		%o0, 64-16, %g1
29ef7c4d46SDavid S. Miller	retl
30ef7c4d46SDavid S. Miller	 popc		%g1, %o0
31ef7c4d46SDavid S. Miller	.previous
32ef7c4d46SDavid S. Miller
33ef7c4d46SDavid S. MillerENTRY(__arch_hweight32)
349289ea7fSDavid S. Miller	sethi	%hi(__sw_hweight32), %g1
359289ea7fSDavid S. Miller	jmpl	%g1 + %lo(__sw_hweight32), %g0
36ef7c4d46SDavid S. Miller	 nop
37ef7c4d46SDavid S. MillerENDPROC(__arch_hweight32)
38d3867f04SAl ViroEXPORT_SYMBOL(__arch_hweight32)
39ef7c4d46SDavid S. Miller	.section	.popc_3insn_patch, "ax"
40ef7c4d46SDavid S. Miller	.word		__arch_hweight32
41ef7c4d46SDavid S. Miller	sllx		%o0, 64-32, %g1
42ef7c4d46SDavid S. Miller	retl
43ef7c4d46SDavid S. Miller	 popc		%g1, %o0
44ef7c4d46SDavid S. Miller	.previous
45ef7c4d46SDavid S. Miller
46ef7c4d46SDavid S. MillerENTRY(__arch_hweight64)
4759585b4bSJan Engelhardt	sethi	%hi(__sw_hweight64), %g1
4859585b4bSJan Engelhardt	jmpl	%g1 + %lo(__sw_hweight64), %g0
49ef7c4d46SDavid S. Miller	 nop
50ef7c4d46SDavid S. MillerENDPROC(__arch_hweight64)
51d3867f04SAl ViroEXPORT_SYMBOL(__arch_hweight64)
52ef7c4d46SDavid S. Miller	.section	.popc_3insn_patch, "ax"
53ef7c4d46SDavid S. Miller	.word		__arch_hweight64
54ef7c4d46SDavid S. Miller	retl
55ef7c4d46SDavid S. Miller	 popc		%o0, %o0
56ef7c4d46SDavid S. Miller	nop
57ef7c4d46SDavid S. Miller	.previous
58