[llvm] r214963 - Add a new option -run-slp-after-loop-vectorization.
Sean Silva
chisophugis at gmail.com
Wed Aug 6 10:45:35 PDT 2014
Can you maybe pull this out into a helper to avoid copypasta?
-- Sean Silva
On Wed, Aug 6, 2014 at 5:56 AM, James Molloy <james.molloy at arm.com> wrote:
> Author: jamesm
> Date: Wed Aug 6 07:56:19 2014
> New Revision: 214963
>
> URL: http://llvm.org/viewvc/llvm-project?rev=214963&view=rev
> Log:
> Add a new option -run-slp-after-loop-vectorization.
>
> This swaps the order of the loop vectorizer and the SLP/BB vectorizers. It
> is disabled by default so we can do performance testing - ideally we want
> to change to having the loop vectorizer running first, and the SLP
> vectorizer using its leftovers instead of the other way around.
>
>
> Modified:
> llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>
> Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=214963&r1=214962&r2=214963&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Wed Aug 6
> 07:56:19 2014
> @@ -57,6 +57,13 @@ static cl::opt<bool> RunLoadCombine("com
> cl::Hidden,
> cl::desc("Run the load combining
> pass"));
>
> +static cl::opt<bool>
> +RunSLPAfterLoopVectorization("run-slp-after-loop-vectorization",
> + cl::init(false), cl::Hidden,
> + cl::desc("Run the SLP vectorizer (and BB vectorizer) after the Loop "
> + "vectorizer instead of before"));
> +
> +
> PassManagerBuilder::PassManagerBuilder() {
> OptLevel = 2;
> SizeLevel = 0;
> @@ -227,21 +234,23 @@ void PassManagerBuilder::populateModuleP
>
> if (RerollLoops)
> MPM.add(createLoopRerollPass());
> - if (SLPVectorize)
> - MPM.add(createSLPVectorizerPass()); // Vectorize parallel scalar
> chains.
> -
> - if (BBVectorize) {
> - MPM.add(createBBVectorizePass());
> - MPM.add(createInstructionCombiningPass());
> - addExtensionsToPM(EP_Peephole, MPM);
> - if (OptLevel > 1 && UseGVNAfterVectorization)
> - MPM.add(createGVNPass()); // Remove redundancies
> - else
> - MPM.add(createEarlyCSEPass()); // Catch trivial redundancies
> -
> - // BBVectorize may have significantly shortened a loop body; unroll
> again.
> - if (!DisableUnrollLoops)
> - MPM.add(createLoopUnrollPass());
> + if (!RunSLPAfterLoopVectorization) {
> + if (SLPVectorize)
> + MPM.add(createSLPVectorizerPass()); // Vectorize parallel scalar
> chains.
> +
> + if (BBVectorize) {
> + MPM.add(createBBVectorizePass());
> + MPM.add(createInstructionCombiningPass());
> + addExtensionsToPM(EP_Peephole, MPM);
> + if (OptLevel > 1 && UseGVNAfterVectorization)
> + MPM.add(createGVNPass()); // Remove redundancies
> + else
> + MPM.add(createEarlyCSEPass()); // Catch trivial redundancies
> +
> + // BBVectorize may have significantly shortened a loop body; unroll
> again.
> + if (!DisableUnrollLoops)
> + MPM.add(createLoopUnrollPass());
> + }
> }
>
> if (LoadCombine)
> @@ -263,6 +272,26 @@ void PassManagerBuilder::populateModuleP
> // as function calls, so that we can only pass them when the vectorizer
> // changed the code.
> MPM.add(createInstructionCombiningPass());
> +
> + if (RunSLPAfterLoopVectorization) {
> + if (SLPVectorize)
> + MPM.add(createSLPVectorizerPass()); // Vectorize parallel scalar
> chains.
> +
> + if (BBVectorize) {
> + MPM.add(createBBVectorizePass());
> + MPM.add(createInstructionCombiningPass());
> + addExtensionsToPM(EP_Peephole, MPM);
> + if (OptLevel > 1 && UseGVNAfterVectorization)
> + MPM.add(createGVNPass()); // Remove redundancies
> + else
> + MPM.add(createEarlyCSEPass()); // Catch trivial redundancies
> +
> + // BBVectorize may have significantly shortened a loop body; unroll
> again.
> + if (!DisableUnrollLoops)
> + MPM.add(createLoopUnrollPass());
> + }
> + }
> +
> addExtensionsToPM(EP_Peephole, MPM);
> MPM.add(createCFGSimplificationPass());
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140806/95067ddb/attachment.html>
More information about the llvm-commits
mailing list