root/arch/sparc/lib/hweight.S

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

/* [<][>][^][v][top][bottom][index][help] */