xref: /kernel/linux/linux-5.10/arch/sparc/lib/hweight.S
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-5.10/arch/sparc/lib/
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/linkage.h>
3 #include <asm/export.h>
4 
5 	.text
6 	.align	32
7 ENTRY(__arch_hweight8)
8 	sethi	%hi(__sw_hweight8), %g1
9 	jmpl	%g1 + %lo(__sw_hweight8), %g0
10 	 nop
11 ENDPROC(__arch_hweight8)
12 EXPORT_SYMBOL(__arch_hweight8)
13 	.section	.popc_3insn_patch, "ax"
14 	.word		__arch_hweight8
15 	sllx		%o0, 64-8, %g1
16 	retl
17 	 popc		%g1, %o0
18 	.previous
19 
20 ENTRY(__arch_hweight16)
21 	sethi	%hi(__sw_hweight16), %g1
22 	jmpl	%g1 + %lo(__sw_hweight16), %g0
23 	 nop
24 ENDPROC(__arch_hweight16)
25 EXPORT_SYMBOL(__arch_hweight16)
26 	.section	.popc_3insn_patch, "ax"
27 	.word		__arch_hweight16
28 	sllx		%o0, 64-16, %g1
29 	retl
30 	 popc		%g1, %o0
31 	.previous
32 
33 ENTRY(__arch_hweight32)
34 	sethi	%hi(__sw_hweight32), %g1
35 	jmpl	%g1 + %lo(__sw_hweight32), %g0
36 	 nop
37 ENDPROC(__arch_hweight32)
38 EXPORT_SYMBOL(__arch_hweight32)
39 	.section	.popc_3insn_patch, "ax"
40 	.word		__arch_hweight32
41 	sllx		%o0, 64-32, %g1
42 	retl
43 	 popc		%g1, %o0
44 	.previous
45 
46 ENTRY(__arch_hweight64)
47 	sethi	%hi(__sw_hweight64), %g1
48 	jmpl	%g1 + %lo(__sw_hweight64), %g0
49 	 nop
50 ENDPROC(__arch_hweight64)
51 EXPORT_SYMBOL(__arch_hweight64)
52 	.section	.popc_3insn_patch, "ax"
53 	.word		__arch_hweight64
54 	retl
55 	 popc		%o0, %o0
56 	nop
57 	.previous
58 

Indexes created Thu Nov 07 10:32:03 CST 2024