Commit | Line | Data |
---|---|---|
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 | ||
15 | ENTRY(NG4fls) | |
16 | LZCNT_O0_G2 !lzcnt %o0, %g2 | |
17 | mov 64, %g3 | |
18 | retl | |
19 | sub %g3, %g2, %o0 | |
20 | ENDPROC(NG4fls) | |
2b41ce5d VK |
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) |