Apple Works To Bring Loop Distribution/Partial Vectorization To LLVM

Written by Michael Larabel in Apple on 18 January 2015 at 10:34 AM EST. 5 Comments
APPLE
LLVM has long had an loop vectorizer for the automatic vectorization of loops in LLVM IR while now upstream developers are looking to make improvements for vectorizing loops that up to now haven't been touched due to memory dependence cycles.

Adam Nemet as part of Apple's compiler team is looking to work out loop distribution and partial vectorization for upstream LLVM. He explained, "We'd like to propose new Loop Distribution pass. The main motivation is to allow partial vectorization of loops. One such example is the main loop of 456.hmmer in SpecINT_2006. The current version of the patch improves hmmer by 24% on ARM64 and 18% on X86. The goal of the pass is to distribute a loop that can't be vectorized because of memory dependence cycles. The pass splits the part with cycles into a new loop making the remainder of the loop a candidate for vectorization."

Right now they're looking for feedback from developers and they also wish to explore other areas for potential loop distribution. So far other LLVM developers are interested in this new LLVM optimization pass so hopefully it will come to fruition this year for one of the future releases. Right now the current SVN code is for LLVM 3.7 with LLVM 3.6 having just been branched.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week