[LLVMdev] Loop unrolling opportunity in SPEC's libquantum with profile info

Sean Silva 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

> Thanks,
> Nadav
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140115/44719f0d/attachment.html>

More information about the llvm-dev mailing list