llvm/llvm-project
Voir sur GitHub[x86] Eliminate `movzx` when upper part of register is irrelevant or overwritten
Open
#168 828 ouverte le 20 nov. 2025
backend:X86good first issuellvm:SelectionDAGmissed-optimization
Métriques du dépôt
- Stars
- (26 378 stars)
- Métriques de merge PR
- (Merge moyen 1j 2h) (1 000 PRs mergées en 30 j)
Description
export fn foo(x: u8) u32 {
return @ctz(x >> 1);
}
foo:
shr dil
movzx eax, dil
or eax, 256
tzcnt eax, eax
ret
Could be:
foo:
shr dil
or edi, 256
tzcnt eax, edi
ret
The compiler could also look for things like or eax, -256 and eliminate movzx eax, al since the relevant bits are overwritten anyway.