hc
2024-03-22 ac5f19e89dcbd5c7428fcc78a0d407c887564466
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* NG4fls.S: SPARC optimized fls and __fls for T4 and above.
 *
 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
 */
 
#include <linux/linkage.h>
 
#define LZCNT_O0_G2    \
   .word    0x85b002e8
 
   .text
   .register    %g2, #scratch
   .register    %g3, #scratch
 
ENTRY(NG4fls)
   LZCNT_O0_G2    !lzcnt    %o0, %g2
   mov    64, %g3
   retl
    sub    %g3, %g2, %o0
ENDPROC(NG4fls)
 
ENTRY(__NG4fls)
   brz,pn    %o0, 1f
   LZCNT_O0_G2    !lzcnt    %o0, %g2
   mov    63, %g3
   sub    %g3, %g2, %o0
1:
   retl
    nop
ENDPROC(__NG4fls)