<div dir="ltr"><div>If it exists as part of 'opt' testing, I'm not seeing it. There is a clang file at llvm-project/clang/test/CodeGen/loop-unroll.c that runs the -O1 pipeline (which we don't like very much...).</div><div>The vector options are especially confusing because the names change from clang to LLVM, and loop vs. SLP is handled differently (one option defaults to false, the other to true).<br></div><div>I'm going to change the patch proposal slightly in <a href="https://reviews.llvm.org/D75145">https://reviews.llvm.org/D75145</a>, so I'm not adding to this mess at least. <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 29, 2020 at 8:10 AM Roman Lebedev <<a href="mailto:lebedev.ri@gmail.com">lebedev.ri@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Now that i think about it, do we have similar -fno-unroll-loops test<br>
coverage? Anything else?<br>
<br>
On Sat, Feb 29, 2020 at 4:07 PM Sanjay Patel via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
><br>
> Author: Sanjay Patel<br>
> Date: 2020-02-29T07:56:41-05:00<br>
> New Revision: 99b86d76b5e13e2257d791c66f45dd679b7bd92e<br>
><br>
> URL: <a href="https://github.com/llvm/llvm-project/commit/99b86d76b5e13e2257d791c66f45dd679b7bd92e" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/99b86d76b5e13e2257d791c66f45dd679b7bd92e</a><br>
> DIFF: <a href="https://github.com/llvm/llvm-project/commit/99b86d76b5e13e2257d791c66f45dd679b7bd92e.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/99b86d76b5e13e2257d791c66f45dd679b7bd92e.diff</a><br>
><br>
> LOG: [PassManager] add tests for vector pass enabling; NFC<br>
><br>
> Added:<br>
>     llvm/test/Other/opt-pipeline-vector-passes.ll<br>
><br>
> Modified:<br>
><br>
><br>
> Removed:<br>
><br>
><br>
><br>
> ################################################################################<br>
> diff  --git a/llvm/test/Other/opt-pipeline-vector-passes.ll b/llvm/test/Other/opt-pipeline-vector-passes.ll<br>
> new file mode 100644<br>
> index 000000000000..1a1ad56c88e7<br>
> --- /dev/null<br>
> +++ b/llvm/test/Other/opt-pipeline-vector-passes.ll<br>
> @@ -0,0 +1,52 @@<br>
> +; RUN: opt -O1                    -debug-pass=Structure  < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1<br>
> +; RUN: opt -O2                    -debug-pass=Structure  < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2<br>
> +; RUN: opt -O1 -vectorize-loops=0 -debug-pass=Structure  < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1_FORCE_OFF<br>
> +; RUN: opt -O2 -vectorize-loops=0 -debug-pass=Structure  < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2_FORCE_OFF<br>
> +; RUN: opt -disable-verify -debug-pass-manager -passes='default<O1>' -S %s 2>&1 | FileCheck %s --check-prefixes=NEWPM_O1<br>
> +; RUN: opt -disable-verify -debug-pass-manager -passes='default<O2>' -S %s 2>&1 | FileCheck %s --check-prefixes=NEWPM_O2<br>
> +<br>
> +; REQUIRES: asserts<br>
> +<br>
> +; SLP does not run at -O1. Loop vectorization runs, but it only<br>
> +; works on loops explicitly annotated with pragmas.<br>
> +<br>
> +; OLDPM_O1-LABEL:  Pass Arguments:<br>
> +; OLDPM_O1:        Loop Vectorization<br>
> +; OLDPM_O1:        Optimize scalar/vector ops<br>
> +; OLDPM_O1-NOT:    SLP Vectorizer<br>
> +<br>
> +; Everything runs at -O2.<br>
> +<br>
> +; OLDPM_O2-LABEL:  Pass Arguments:<br>
> +; OLDPM_O2:        Loop Vectorization<br>
> +; OLDPM_O2:        Optimize scalar/vector ops<br>
> +; OLDPM_O2:        SLP Vectorizer<br>
> +<br>
> +; The loop vectorizer still runs at both -O1/-O2 even with the<br>
> +; debug flag, but it only works on loops explicitly annotated<br>
> +; with pragmas.<br>
> +<br>
> +; OLDPM_O1_FORCE_OFF-LABEL:  Pass Arguments:<br>
> +; OLDPM_O1_FORCE_OFF:        Loop Vectorization<br>
> +; OLDPM_O1_FORCE_OFF:        Optimize scalar/vector ops<br>
> +; OLDPM_O1_FORCE_OFF-NOT:    SLP Vectorizer<br>
> +<br>
> +; OLDPM_O2_FORCE_OFF-LABEL:  Pass Arguments:<br>
> +; OLDPM_O2_FORCE_OFF:        Loop Vectorization<br>
> +; OLDPM_O2_FORCE_OFF:        Optimize scalar/vector ops<br>
> +; OLDPM_O2_FORCE_OFF:        SLP Vectorizer<br>
> +<br>
> +; There should be no<br>
> diff erence with the new pass manager.<br>
> +; This is tested more thoroughly in other test files.<br>
> +<br>
> +; NEWPM_O1-LABEL:  Running pass: LoopVectorizePass<br>
> +; NEWPM_O1:        Running pass: VectorCombinePass<br>
> +; NEWPM_O1-NOT:    Running pass: SLPVectorizerPass<br>
> +<br>
> +; NEWPM_O2-LABEL:  Running pass: LoopVectorizePass<br>
> +; NEWPM_O2:        Running pass: VectorCombinePass<br>
> +; NEWPM_O2:        Running pass: SLPVectorizerPass<br>
> +<br>
> +define void @f() {<br>
> +  ret void<br>
> +}<br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>