1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #include <linux/export.h> << 3 #include <linux/linkage.h> 1 #include <linux/linkage.h> 4 2 5 .text 3 .text 6 .align 32 4 .align 32 7 ENTRY(__arch_hweight8) 5 ENTRY(__arch_hweight8) 8 sethi %hi(__sw_hweight8), %g1 !! 6 ba,pt %xcc, __sw_hweight8 9 jmpl %g1 + %lo(__sw_hweight8), %g0 << 10 nop 7 nop >> 8 nop 11 ENDPROC(__arch_hweight8) 9 ENDPROC(__arch_hweight8) 12 EXPORT_SYMBOL(__arch_hweight8) << 13 .section .popc_3insn_patch, "ax 10 .section .popc_3insn_patch, "ax" 14 .word __arch_hweight8 11 .word __arch_hweight8 15 sllx %o0, 64-8, %g1 12 sllx %o0, 64-8, %g1 16 retl 13 retl 17 popc %g1, %o0 14 popc %g1, %o0 18 .previous 15 .previous 19 16 20 ENTRY(__arch_hweight16) 17 ENTRY(__arch_hweight16) 21 sethi %hi(__sw_hweight16), %g1 !! 18 ba,pt %xcc, __sw_hweight16 22 jmpl %g1 + %lo(__sw_hweight16), %g0 << 23 nop 19 nop >> 20 nop 24 ENDPROC(__arch_hweight16) 21 ENDPROC(__arch_hweight16) 25 EXPORT_SYMBOL(__arch_hweight16) << 26 .section .popc_3insn_patch, "ax 22 .section .popc_3insn_patch, "ax" 27 .word __arch_hweight16 23 .word __arch_hweight16 28 sllx %o0, 64-16, %g1 24 sllx %o0, 64-16, %g1 29 retl 25 retl 30 popc %g1, %o0 26 popc %g1, %o0 31 .previous 27 .previous 32 28 33 ENTRY(__arch_hweight32) 29 ENTRY(__arch_hweight32) 34 sethi %hi(__sw_hweight32), %g1 !! 30 ba,pt %xcc, __sw_hweight32 35 jmpl %g1 + %lo(__sw_hweight32), %g0 << 36 nop 31 nop >> 32 nop 37 ENDPROC(__arch_hweight32) 33 ENDPROC(__arch_hweight32) 38 EXPORT_SYMBOL(__arch_hweight32) << 39 .section .popc_3insn_patch, "ax 34 .section .popc_3insn_patch, "ax" 40 .word __arch_hweight32 35 .word __arch_hweight32 41 sllx %o0, 64-32, %g1 36 sllx %o0, 64-32, %g1 42 retl 37 retl 43 popc %g1, %o0 38 popc %g1, %o0 44 .previous 39 .previous 45 40 46 ENTRY(__arch_hweight64) 41 ENTRY(__arch_hweight64) 47 sethi %hi(__sw_hweight64), %g1 !! 42 ba,pt %xcc, __sw_hweight64 48 jmpl %g1 + %lo(__sw_hweight64), %g0 << 49 nop 43 nop >> 44 nop 50 ENDPROC(__arch_hweight64) 45 ENDPROC(__arch_hweight64) 51 EXPORT_SYMBOL(__arch_hweight64) << 52 .section .popc_3insn_patch, "ax 46 .section .popc_3insn_patch, "ax" 53 .word __arch_hweight64 47 .word __arch_hweight64 54 retl 48 retl 55 popc %o0, %o0 49 popc %o0, %o0 56 nop 50 nop 57 .previous 51 .previous
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.