Unnecessary sign-extension for some never-negative expressions
Open
area-CodeGen-coreclr
help wanted
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
```cs
nint M1(uint mask) {
return BitOperations.TrailingZeroCount(mask) / sizeof(ushort);
}
nint M2(uint mask) {
return (nint)(uint.TrailingZeroCount(mask) / sizeof(ushort));
}
```
```asm
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](https://csharp.godbolt.org/z/cbeKbMjPK)
Contributor guide
Assessment
This issue has not been assessed yet.