dotnet/runtime
Ver no GitHubChained comparison of two integers against a constant is not coalesced
Open
#101.347 aberto em 21 de abr. de 2024
area-CodeGen-coreclrhelp wantedin-prtenet-performance
Métricas do repositório
- Stars
- (17.886 stars)
- Métricas de merge de PR
- (Mesclagem média 12d 11h) (661 fundiu PRs em 30d)
Description
Description
Given the snippet
static bool Test(int a, int b) => a is 0x80 && b is 0x80;
.NET emits
cmp ecx, 128
jne SHORT G_M000_IG05
xor eax, eax
cmp edx, 128
sete al
ret
G_M000_IG05: ;; offset=0x0014
xor eax, eax
ret
While Clang emits
xor edi, 128
xor esi, 128
or esi, edi
sete al
ret
It would be nice if JIT/ILC could emit branchless comparison for such patterns.
Configuration
.NET 8.0.3
Regression?
No