ppc: testsuite: p9-vec-length: add -mno-strict-align and -misel (was: Re: enable __ieee128 for p9vector tests)
Commit Message
On Apr 14, 2022, Segher Boessenkool <segher@kernel.crashing.org> wrote:
> Yes, that is a problem. None of our testcases are set up for compilers
> with weird defaults (and this is not specific to rs6000).
> I do not want to change many thousands of test cases to not use defaults
> anymore, to specify everything everywhere instead :-( This would make
> things more unmaintainable than they already are.
I guess you're not going to like this one, then :-(
Our (AdaCore's) ppc64-vx7r2 builds have -mstrict-align and -mno-isel as
defaults, but several p9-vec-length* tests fail with those defaults.
Given your statement above, I'm not very hopeful that adding options to
make such expectations of the tests more explicit would be well
received, but at least the mailing list records will hold that
information, in case it happens to be useful for someone else.
The p9-vec-length tests expect vectorization on loop bodies and
epilogues that reference arrays that are not known to be more aligned
than their small element types.
Though VSX vectors work best with 32- or 64-bit alignment, unaligned
vector loads and stores are expected by the tests. However, with our
implicit default to -mstrict-align, vector loads and stores not known
to be aligned end up open coded, which doesn't match the asm output
expectations coded in the tests.
Adding -mno-strict-align restores the unaligned vector loads and
stores, and this is enough for some of these tests to pass.
Some also require -misel, without which conditional stores end up open
coded into compares and branches. That, in turn, makes some of the
epilogue blocks short enough that bbro duplicates them, so that
expected vector loads and stores with limited length diverge from the
expectation.
Restoring the defaults with both options, all of these tests pass
on x86_64-linux-gnu x ppc64-vx7r2. Ok to install?
for gcc/testsuite/ChangeLog
* gcc.target/powerpc/p9-vec-length-epil-1.c: Add
-mno-strict-align and -misel.
* gcc.target/powerpc/p9-vec-length-epil-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-8.c: Likewise.
TN: V413-044
---
.../gcc.target/powerpc/p9-vec-length-epil-1.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-2.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-3.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-4.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-5.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-6.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-7.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-8.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-1.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-2.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-3.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-4.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-5.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-6.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-7.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-epil-run-8.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-1.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-2.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-3.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-4.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-5.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-6.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-7.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-8.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-1.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-2.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-3.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-4.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-5.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-6.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-7.c | 2 +-
.../gcc.target/powerpc/p9-vec-length-full-run-8.c | 2 +-
32 files changed, 32 insertions(+), 32 deletions(-)
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,7 +1,7 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
/* Pass cunroll isn't disabled by -fno-unroll-loops, so use explicit
disabling option for it. */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -ffast-math -fdisable-tree-cunroll" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -ffast-math -fdisable-tree-cunroll -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -ffast-math -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,7 +1,7 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
/* Pass cunroll isn't disabled by -fno-unroll-loops, so use explicit
disabling option for it. */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -ffast-math -fdisable-tree-cunroll" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -ffast-math -fdisable-tree-cunroll -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target { lp64 && powerpc_p9vector_ok } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -fno-unroll-loops -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -ffast-math -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
@@ -1,5 +1,5 @@
/* { dg-do run { target { lp64 && p9vector_hw } } } */
-/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model" } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -ftree-vectorize -fno-vect-cost-model -mno-strict-align -misel" } */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */