dotnet/runtime
Voir sur GitHubChained comparison of two integers against a constant is not coalesced
Open
#101 347 ouverte le 21 avr. 2024
area-CodeGen-coreclrhelp wantedin-prtenet-performance
Métriques du dépôt
- Stars
- (17 886 stars)
- Métriques de merge PR
- (Merge moyen 12j 11h) (661 PRs mergées en 30 j)
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