| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #include <linux/export.h> | |
| #include <linux/linkage.h> | |
| .text | |
| .align 32 | |
| ENTRY(__arch_hweight8) | |
| sethi %hi(__sw_hweight8), %g1 | |
| jmpl %g1 + %lo(__sw_hweight8), %g0 | |
| nop | |
| ENDPROC(__arch_hweight8) | |
| EXPORT_SYMBOL(__arch_hweight8) | |
| .section .popc_3insn_patch, "ax" | |
| .word __arch_hweight8 | |
| sllx %o0, 64-8, %g1 | |
| retl | |
| popc %g1, %o0 | |
| .previous | |
| ENTRY(__arch_hweight16) | |
| sethi %hi(__sw_hweight16), %g1 | |
| jmpl %g1 + %lo(__sw_hweight16), %g0 | |
| nop | |
| ENDPROC(__arch_hweight16) | |
| EXPORT_SYMBOL(__arch_hweight16) | |
| .section .popc_3insn_patch, "ax" | |
| .word __arch_hweight16 | |
| sllx %o0, 64-16, %g1 | |
| retl | |
| popc %g1, %o0 | |
| .previous | |
| ENTRY(__arch_hweight32) | |
| sethi %hi(__sw_hweight32), %g1 | |
| jmpl %g1 + %lo(__sw_hweight32), %g0 | |
| nop | |
| ENDPROC(__arch_hweight32) | |
| EXPORT_SYMBOL(__arch_hweight32) | |
| .section .popc_3insn_patch, "ax" | |
| .word __arch_hweight32 | |
| sllx %o0, 64-32, %g1 | |
| retl | |
| popc %g1, %o0 | |
| .previous | |
| ENTRY(__arch_hweight64) | |
| sethi %hi(__sw_hweight64), %g1 | |
| jmpl %g1 + %lo(__sw_hweight64), %g0 | |
| nop | |
| ENDPROC(__arch_hweight64) | |
| EXPORT_SYMBOL(__arch_hweight64) | |
| .section .popc_3insn_patch, "ax" | |
| .word __arch_hweight64 | |
| retl | |
| popc %o0, %o0 | |
| nop | |
| .previous |