[LLVMdev] How to unroll reduction loop with caching accumulator on register?

Dmitry Mikushin dmitry at kernelgen.org
Mon Mar 11 08:49:07 PDT 2013


Dear all,

Attached notunrolled.ll is a module containing reduction kernel. What I'm
trying to do is to unroll it in such way, that partial reduction on
unrolled iterations would be performed on register, and then stored to
memory only once. Currently llvm's unroller together with all standard
optimizations produce code, which stores value to memory after every
unrolled iteration, which is much less efficient. Do you have an idea which
combination of opt passes may help to cache unrolled loop stores on a
register?

Many thanks,
- D.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130311/eba8318b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: notunrolled.ll
Type: application/octet-stream
Size: 2454 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130311/eba8318b/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: unrolled.ll
Type: application/octet-stream
Size: 6617 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130311/eba8318b/attachment-0001.obj>


More information about the llvm-dev mailing list