blob: 2d0991e5b03417c4993e118e6f424385d4ec54e1 [file] [log] [blame]
Vijay Kumar70cbec02017-10-11 12:50:04 -06001/* 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)
Vijay Kumar2b41ce52017-10-11 12:50:05 -060021
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)