[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