root/arch/sparc/lib/NG4fls.S
/* 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)