Unnecessary sign-extension for `LeadingZeroCount(UInt64)`
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
```cs
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);
}
}
```
```asm
// 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](https://csharp.godbolt.org/z/M99qvqMGa)
Contributor guide
Assessment
This issue has not been assessed yet.