[PATCH] D21720: Unroll for uncountable loops
Evgeny Stupachenko via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 10 12:00:34 PST 2017
evstupac added a comment.
> What is the case 1?
Uncountable loops where previous value is reused (save one+ instruction for each value)
The example is in lit test (motivation comes from list loops).
> For loops with unknown trip count (that's the case 2, right?)
No. All cases are about uncountable loops.
> I don't see why we need to add any additional analyzers (`analyzeLoopUnrollCost`). Removing one instruction by unrolling by 2 is not better than the worst case for partial unroll of a loop with a known trip count:
We can skip this and do like in my initial patch (just run a function that return unroll count if it is profitable to unroll). That way cases 2 and 3 are skipped. I change the patch to call `analyzeLoopUnrollCost' to make more general.
> But since we sometimes partially unroll such loops, I don't currently see a reason why we can't do this for loops with unknown trip-count as well. However, we don't need additional thresholds/knobs for it, thresholds for partial unroll should do it already.
The patch do not introduce a new threshold. If we enable unroll for all uncountable loops it will result in dramatic code size increase (for most cases without performance value).
Repository:
rL LLVM
https://reviews.llvm.org/D21720
More information about the llvm-commits
mailing list