dotnet/runtime
在 GitHub 查看Chained comparison of two integers against a constant is not coalesced
Open
#101,347 创建于 2024年4月21日
area-CodeGen-coreclrhelp wantedin-prtenet-performance
仓库指标
- Star
- (17,886 star)
- PR 合并指标
- (平均合并 12天 11小时) (30 天内合并 661 个 PR)
描述
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