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