Merge tag 'nfs-for-6.4-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
[linux-block.git] / arch / sparc / lib / NG4fls.S
CommitLineData
70cbec0c
VK
1/* NG4fls.S: SPARC optimized fls and __fls for T4 and above.
2 *
3 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
4 */
5
6#include <linux/linkage.h>
7
8#define LZCNT_O0_G2 \
9 .word 0x85b002e8
10
11 .text
12 .register %g2, #scratch
13 .register %g3, #scratch
14
15ENTRY(NG4fls)
16 LZCNT_O0_G2 !lzcnt %o0, %g2
17 mov 64, %g3
18 retl
19 sub %g3, %g2, %o0
20ENDPROC(NG4fls)
2b41ce5d
VK
21
22ENTRY(__NG4fls)
23 brz,pn %o0, 1f
24 LZCNT_O0_G2 !lzcnt %o0, %g2
25 mov 63, %g3
26 sub %g3, %g2, %o0
271:
28 retl
29 nop
30ENDPROC(__NG4fls)