Linux 4.13.16
[linux/fpc-iii.git] / arch / sparc / lib / hweight.S
blobd21cf20e5c1eb234fa083d883ded321c4297d6ef
1 #include <linux/linkage.h>
2 #include <asm/export.h>
4         .text
5         .align  32
6 ENTRY(__arch_hweight8)
7         sethi   %hi(__sw_hweight8), %g1
8         jmpl    %g1 + %lo(__sw_hweight8), %g0
9          nop
10 ENDPROC(__arch_hweight8)
11 EXPORT_SYMBOL(__arch_hweight8)
12         .section        .popc_3insn_patch, "ax"
13         .word           __arch_hweight8
14         sllx            %o0, 64-8, %g1
15         retl
16          popc           %g1, %o0
17         .previous
19 ENTRY(__arch_hweight16)
20         sethi   %hi(__sw_hweight16), %g1
21         jmpl    %g1 + %lo(__sw_hweight16), %g0
22          nop
23 ENDPROC(__arch_hweight16)
24 EXPORT_SYMBOL(__arch_hweight16)
25         .section        .popc_3insn_patch, "ax"
26         .word           __arch_hweight16
27         sllx            %o0, 64-16, %g1
28         retl
29          popc           %g1, %o0
30         .previous
32 ENTRY(__arch_hweight32)
33         sethi   %hi(__sw_hweight32), %g1
34         jmpl    %g1 + %lo(__sw_hweight32), %g0
35          nop
36 ENDPROC(__arch_hweight32)
37 EXPORT_SYMBOL(__arch_hweight32)
38         .section        .popc_3insn_patch, "ax"
39         .word           __arch_hweight32
40         sllx            %o0, 64-32, %g1
41         retl
42          popc           %g1, %o0
43         .previous
45 ENTRY(__arch_hweight64)
46         sethi   %hi(__sw_hweight16), %g1
47         jmpl    %g1 + %lo(__sw_hweight16), %g0
48          nop
49 ENDPROC(__arch_hweight64)
50 EXPORT_SYMBOL(__arch_hweight64)
51         .section        .popc_3insn_patch, "ax"
52         .word           __arch_hweight64
53         retl
54          popc           %o0, %o0
55         nop
56         .previous