Apple Works To Bring Loop Distribution/Partial Vectorization To LLVM
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.
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.
5 Comments