Merge remote-tracking branch 'asoc/fix/sunxi' into asoc-linus
[sfrench/cifs-2.6.git] / arch / sparc / lib / hweight.S
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_hweight16), %g1
48         jmpl    %g1 + %lo(__sw_hweight16), %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