Skip to content

Unnecessary sign-extension for LeadingZeroCount(UInt64) #119699

@xtqqczze

Description

@xtqqczze
public static class LeadingZeroCount {
    public static nint M1(ulong mask) {
        return BitOperations.LeadingZeroCount(mask);
    }
    
    public static nint M2(ulong mask) {
        return (nint)ulong.LeadingZeroCount(mask);
    }
}

public static class TrailingZeroCount {
    public static nint M1(ulong mask) {
        return BitOperations.TrailingZeroCount(mask);
    }
    
    public static nint M2(ulong mask) {
        return (nint)ulong.TrailingZeroCount(mask);
    }
}

public static class PopCount {
    public static nint M1(ulong mask) {
        return BitOperations.PopCount(mask);
    }
    
    public static nint M2(ulong mask) {
        return (nint)ulong.PopCount(mask);
    }
}
// coreclr trunk-20250917+116db00b333e27b70b6e97c93bcfb304ca4245ab

LeadingZeroCount:M1(ulong):nint (FullOpts):
       xor      eax, eax
       lzcnt    rax, rdi
       cdqe     
       ret      

LeadingZeroCount:M2(ulong):nint (FullOpts):
       xor      eax, eax
       lzcnt    rax, rdi
       ret      

TrailingZeroCount:M1(ulong):nint (FullOpts):
       xor      eax, eax
       tzcnt    rax, rdi
       cdqe     
       ret      

TrailingZeroCount:M2(ulong):nint (FullOpts):
       xor      eax, eax
       tzcnt    rax, rdi
       ret      

PopCount:M1(ulong):nint (FullOpts):
       xor      eax, eax
       popcnt   rax, rdi
       cdqe     
       ret      

PopCount:M2(ulong):nint (FullOpts):
       xor      eax, eax
       popcnt   rax, rdi
       ret             

godbolt.org

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIhelp wanted[up-for-grabs] Good issue for external contributors

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions