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 
15 ENTRY(NG4fls)
16 	LZCNT_O0_G2	!lzcnt	%o0, %g2
17 	mov	64, %g3
18 	retl
19 	 sub	%g3, %g2, %o0
20 ENDPROC(NG4fls)
21 
22 ENTRY(__NG4fls)
23 	brz,pn	%o0, 1f
24 	LZCNT_O0_G2	!lzcnt	%o0, %g2
25 	mov	63, %g3
26 	sub	%g3, %g2, %o0
27 1:
28 	retl
29 	 nop
30 ENDPROC(__NG4fls)
31