dotnet/runtime
Vedi su GitHub[JIT] X64 - Possible comparison optimization using `and` with a small type
Open
#81.520 aperta il 2 feb 2023
arch-x64area-CodeGen-coreclrhelp wantedtenet-performance
Metriche repository
- Star
- (17.886 star)
- Metriche merge PR
- (Merge medio 12g 11h) (661 PR mergiate in 30 g)
Descrizione
using System.Runtime.CompilerServices;
static class Program
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void SideEffect()
{
}
public static bool Test(byte p, int i)
{
if ((p & 0xffffff00) != 0)
{
SideEffect();
return true;
}
return false;
}
}
The (p & 0xffffff00) != 0 condition in this case can never be true. So, we could optimize this by folding it into false thus will eliminate the true path.
This will probably not have a lot of impact.