You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm not sure who to blame between opt or the code generator:
either opt generates IR that uses a pattern that the codegenerator doesn't recognize and fuse correctly
or the codegenerator should recognize the pattern
In any case the following code has a good version with 12 instructions in the critical path (add/adc, sub/sbb and cmov) and the bad version .v2 has 20 instructions in the critical path.
Both are from the same IR except that one has a constant inlined by opt.
I'm not sure who to blame between
opt
or the code generator:In any case the following code has a good version with 12 instructions in the critical path (add/adc, sub/sbb and cmov) and the bad version .v2 has 20 instructions in the critical path.
Both are from the same IR except that one has a constant inlined by
opt
.This is similar to #102868 but even worse.
https://alive2.llvm.org/ce/z/KzsXa9
Original IR
opt -O3
Codegen
Analysis
In the "good" version, the extra SAR when using i320 is unnecessary and has been already reported separately in #103841
In the bad version, the following is equivalent to substractiong by M
The optimizer misses that there can't be carries here, but that's not the main issue.
Then there is this problematic extra 12 instructions as a followup
The text was updated successfully, but these errors were encountered: