18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#include <linux/linkage.h> 38c2ecf20Sopenharmony_ci#include <asm/export.h> 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci .text 68c2ecf20Sopenharmony_ci .align 32 78c2ecf20Sopenharmony_ciENTRY(__arch_hweight8) 88c2ecf20Sopenharmony_ci sethi %hi(__sw_hweight8), %g1 98c2ecf20Sopenharmony_ci jmpl %g1 + %lo(__sw_hweight8), %g0 108c2ecf20Sopenharmony_ci nop 118c2ecf20Sopenharmony_ciENDPROC(__arch_hweight8) 128c2ecf20Sopenharmony_ciEXPORT_SYMBOL(__arch_hweight8) 138c2ecf20Sopenharmony_ci .section .popc_3insn_patch, "ax" 148c2ecf20Sopenharmony_ci .word __arch_hweight8 158c2ecf20Sopenharmony_ci sllx %o0, 64-8, %g1 168c2ecf20Sopenharmony_ci retl 178c2ecf20Sopenharmony_ci popc %g1, %o0 188c2ecf20Sopenharmony_ci .previous 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciENTRY(__arch_hweight16) 218c2ecf20Sopenharmony_ci sethi %hi(__sw_hweight16), %g1 228c2ecf20Sopenharmony_ci jmpl %g1 + %lo(__sw_hweight16), %g0 238c2ecf20Sopenharmony_ci nop 248c2ecf20Sopenharmony_ciENDPROC(__arch_hweight16) 258c2ecf20Sopenharmony_ciEXPORT_SYMBOL(__arch_hweight16) 268c2ecf20Sopenharmony_ci .section .popc_3insn_patch, "ax" 278c2ecf20Sopenharmony_ci .word __arch_hweight16 288c2ecf20Sopenharmony_ci sllx %o0, 64-16, %g1 298c2ecf20Sopenharmony_ci retl 308c2ecf20Sopenharmony_ci popc %g1, %o0 318c2ecf20Sopenharmony_ci .previous 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciENTRY(__arch_hweight32) 348c2ecf20Sopenharmony_ci sethi %hi(__sw_hweight32), %g1 358c2ecf20Sopenharmony_ci jmpl %g1 + %lo(__sw_hweight32), %g0 368c2ecf20Sopenharmony_ci nop 378c2ecf20Sopenharmony_ciENDPROC(__arch_hweight32) 388c2ecf20Sopenharmony_ciEXPORT_SYMBOL(__arch_hweight32) 398c2ecf20Sopenharmony_ci .section .popc_3insn_patch, "ax" 408c2ecf20Sopenharmony_ci .word __arch_hweight32 418c2ecf20Sopenharmony_ci sllx %o0, 64-32, %g1 428c2ecf20Sopenharmony_ci retl 438c2ecf20Sopenharmony_ci popc %g1, %o0 448c2ecf20Sopenharmony_ci .previous 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ciENTRY(__arch_hweight64) 478c2ecf20Sopenharmony_ci sethi %hi(__sw_hweight64), %g1 488c2ecf20Sopenharmony_ci jmpl %g1 + %lo(__sw_hweight64), %g0 498c2ecf20Sopenharmony_ci nop 508c2ecf20Sopenharmony_ciENDPROC(__arch_hweight64) 518c2ecf20Sopenharmony_ciEXPORT_SYMBOL(__arch_hweight64) 528c2ecf20Sopenharmony_ci .section .popc_3insn_patch, "ax" 538c2ecf20Sopenharmony_ci .word __arch_hweight64 548c2ecf20Sopenharmony_ci retl 558c2ecf20Sopenharmony_ci popc %o0, %o0 568c2ecf20Sopenharmony_ci nop 578c2ecf20Sopenharmony_ci .previous 58