1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun#include <linux/linkage.h> 3*4882a593Smuzhiyun#include <asm/export.h> 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun .text 6*4882a593Smuzhiyun .align 32 7*4882a593SmuzhiyunENTRY(__arch_hweight8) 8*4882a593Smuzhiyun sethi %hi(__sw_hweight8), %g1 9*4882a593Smuzhiyun jmpl %g1 + %lo(__sw_hweight8), %g0 10*4882a593Smuzhiyun nop 11*4882a593SmuzhiyunENDPROC(__arch_hweight8) 12*4882a593SmuzhiyunEXPORT_SYMBOL(__arch_hweight8) 13*4882a593Smuzhiyun .section .popc_3insn_patch, "ax" 14*4882a593Smuzhiyun .word __arch_hweight8 15*4882a593Smuzhiyun sllx %o0, 64-8, %g1 16*4882a593Smuzhiyun retl 17*4882a593Smuzhiyun popc %g1, %o0 18*4882a593Smuzhiyun .previous 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunENTRY(__arch_hweight16) 21*4882a593Smuzhiyun sethi %hi(__sw_hweight16), %g1 22*4882a593Smuzhiyun jmpl %g1 + %lo(__sw_hweight16), %g0 23*4882a593Smuzhiyun nop 24*4882a593SmuzhiyunENDPROC(__arch_hweight16) 25*4882a593SmuzhiyunEXPORT_SYMBOL(__arch_hweight16) 26*4882a593Smuzhiyun .section .popc_3insn_patch, "ax" 27*4882a593Smuzhiyun .word __arch_hweight16 28*4882a593Smuzhiyun sllx %o0, 64-16, %g1 29*4882a593Smuzhiyun retl 30*4882a593Smuzhiyun popc %g1, %o0 31*4882a593Smuzhiyun .previous 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunENTRY(__arch_hweight32) 34*4882a593Smuzhiyun sethi %hi(__sw_hweight32), %g1 35*4882a593Smuzhiyun jmpl %g1 + %lo(__sw_hweight32), %g0 36*4882a593Smuzhiyun nop 37*4882a593SmuzhiyunENDPROC(__arch_hweight32) 38*4882a593SmuzhiyunEXPORT_SYMBOL(__arch_hweight32) 39*4882a593Smuzhiyun .section .popc_3insn_patch, "ax" 40*4882a593Smuzhiyun .word __arch_hweight32 41*4882a593Smuzhiyun sllx %o0, 64-32, %g1 42*4882a593Smuzhiyun retl 43*4882a593Smuzhiyun popc %g1, %o0 44*4882a593Smuzhiyun .previous 45*4882a593Smuzhiyun 46*4882a593SmuzhiyunENTRY(__arch_hweight64) 47*4882a593Smuzhiyun sethi %hi(__sw_hweight64), %g1 48*4882a593Smuzhiyun jmpl %g1 + %lo(__sw_hweight64), %g0 49*4882a593Smuzhiyun nop 50*4882a593SmuzhiyunENDPROC(__arch_hweight64) 51*4882a593SmuzhiyunEXPORT_SYMBOL(__arch_hweight64) 52*4882a593Smuzhiyun .section .popc_3insn_patch, "ax" 53*4882a593Smuzhiyun .word __arch_hweight64 54*4882a593Smuzhiyun retl 55*4882a593Smuzhiyun popc %o0, %o0 56*4882a593Smuzhiyun nop 57*4882a593Smuzhiyun .previous 58