| /* 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) |