| Issue |
54191
|
| Summary |
[scev] Loop unrolling blocked by finite loop handling of nonstrict inequalities
|
| Labels |
|
| Assignees |
|
| Reporter |
mtrofin
|
[scev-test.zip](https://github.com/llvm/llvm-project/files/8182815/scev-test.zip)
See https://reviews.llvm.org/D118090
To repro, unzip the attachment, then:
```
opt -mtriple=x86_64-linux -mattr=+64bit,+sse3,+ssse3 -passes="require<scalar-evolution>,loop-unroll" /tmp/good-test.ll -scalar-evolution-finite-loop=0 -S -o /tmp/no.ll
opt -mtriple=x86_64-linux -mattr=+64bit,+sse3,+ssse3 -passes="require<scalar-evolution>,loop-unroll" /tmp/good-test.ll -scalar-evolution-finite-loop=1 -S -o /tmp/yes.ll
diff /tmp/no.ll /tmp/yes.ll
```
This is causing ~20% regression in an eigen benchmark. The .ll is extracted from there - it could have probably be further reduced, but I wasn't successful.
The interesting loop is the one at block `863`. See `SCEVExpander::isHighCostExpansion`
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs