1#include <linux/linkage.h> 2 3 .text 4 .align 32 5ENTRY(__arch_hweight8) 6 ba,pt %xcc, __sw_hweight8 7 nop 8 nop 9ENDPROC(__arch_hweight8) 10 .section .popc_3insn_patch, "ax" 11 .word __arch_hweight8 12 sllx %o0, 64-8, %g1 13 retl 14 popc %g1, %o0 15 .previous 16 17ENTRY(__arch_hweight16) 18 ba,pt %xcc, __sw_hweight16 19 nop 20 nop 21ENDPROC(__arch_hweight16) 22 .section .popc_3insn_patch, "ax" 23 .word __arch_hweight16 24 sllx %o0, 64-16, %g1 25 retl 26 popc %g1, %o0 27 .previous 28 29ENTRY(__arch_hweight32) 30 ba,pt %xcc, __sw_hweight32 31 nop 32 nop 33ENDPROC(__arch_hweight32) 34 .section .popc_3insn_patch, "ax" 35 .word __arch_hweight32 36 sllx %o0, 64-32, %g1 37 retl 38 popc %g1, %o0 39 .previous 40 41ENTRY(__arch_hweight64) 42 ba,pt %xcc, __sw_hweight64 43 nop 44 nop 45ENDPROC(__arch_hweight64) 46 .section .popc_3insn_patch, "ax" 47 .word __arch_hweight64 48 retl 49 popc %o0, %o0 50 nop 51 .previous 52