dotnet/runtime
GitHub で見るUnnecessary sign-extension for `LeadingZeroCount(UInt64)`
Open
#119,699 opened on 2025年9月14日
area-CodeGen-coreclrhelp wanted
説明
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