[LLVMdev] Loop unrolling opportunity in SPEC's libquantum with profile info
chisophugis at gmail.com
Wed Jan 15 19:43:35 PST 2014
On Wed, Jan 15, 2014 at 8:30 PM, Nadav Rotem <nrotem at apple.com> wrote:
> Hi Diego!
> Thanks for looking at this!
> Chandler also pointed me at the vectorizer, which has its own
> unroller. However, the vectorizer only unrolls enough to serve the
> target, it's not as general as the runtime-triggered unroller. From
> what I've seen, it will get a maximum unroll factor of 2 on x86 (4 on
> avx targets). Additionally, the vectorizer only unrolls to aid
> reduction variables.
> The vectorizer has a heuristics that is used to decide when to unroll.
> One of the rules that the heuristics has is that reductions are profitable
> to unroll. The other rule is that small loops should also be unrolled.
> When I forced the vectorizer to unroll these
> loops, the performance effects were nil.
> Was the vectorizer successful in unrolling the loop in quantum_sigma_x? I
> wonder if 'size’ is typically high or low.
Yeah, can you produce a histogram of the values of `reg->size`? (or provide
the raw data for me to analyze?).
-- Sean Silva
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev