dotnet/runtime

Unnecessary sign-extension for some never-negative expressions

Aberta

#119.680 aberto em 13 de set. de 2025

 (1 comentário) (1 reação) (0 responsável)C# (5.445 forks)batch import
area-CodeGen-coreclrhelp wanted

Métricas do repositório

Stars
 (17.886 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

nint M1(uint mask) {
    return BitOperations.TrailingZeroCount(mask) / sizeof(ushort);
}

nint M2(uint mask) {
    return (nint)(uint.TrailingZeroCount(mask) / sizeof(ushort));
}
C:M1(uint):nint:this (FullOpts):
       xor      eax, eax
       tzcnt    eax, esi
       shr      eax, 1
       cdqe     
       ret      

C:M2(uint):nint:this (FullOpts):
       xor      eax, eax
       tzcnt    eax, esi
       shr      eax, 1
       ret    

godbolt.org

Guia do colaborador