1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/export.h> 3#include <linux/linkage.h> 4 5 .text 6 .align 32 7ENTRY(__arch_hweight8) 8 sethi %hi(__sw_hweight8), %g1 9 jmpl %g1 + %lo(__sw_hweight8), %g0 10 nop 11ENDPROC(__arch_hweight8) 12EXPORT_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 20ENTRY(__arch_hweight16) 21 sethi %hi(__sw_hweight16), %g1 22 jmpl %g1 + %lo(__sw_hweight16), %g0 23 nop 24ENDPROC(__arch_hweight16) 25EXPORT_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 33ENTRY(__arch_hweight32) 34 sethi %hi(__sw_hweight32), %g1 35 jmpl %g1 + %lo(__sw_hweight32), %g0 36 nop 37ENDPROC(__arch_hweight32) 38EXPORT_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 46ENTRY(__arch_hweight64) 47 sethi %hi(__sw_hweight64), %g1 48 jmpl %g1 + %lo(__sw_hweight64), %g0 49 nop 50ENDPROC(__arch_hweight64) 51EXPORT_SYMBOL(__arch_hweight64) 52 .section .popc_3insn_patch, "ax" 53 .word __arch_hweight64 54 retl 55 popc %o0, %o0 56 nop 57 .previous 58