https://gcc.gnu.org/g:14f2ec1f20c5eee45749964eabcd128e5d5c2483
commit 14f2ec1f20c5eee45749964eabcd128e5d5c2483 Author: Alexandre Oliva <[email protected]> Date: Tue Mar 10 04:20:14 2026 -0300 testsuite: vect: ppc: skip pr112325.c without vsx These two test variants hit the same problems on powerpc-elf with altivec without vsx: we can't vectorize the loops for various reasons. We need the peeling, we need strict-align disabled to inline memcpy, we need vect_widen_mult_qi_to_hi, but even with that, we fail to vectorize due to unsupported vector widening conversions. Extend the peeling param to all powerpc targets, but skip the test when vsx is not available. for gcc/testsuite/ChangeLog * gcc.dg/vect/pr112325.c: Bump the peeled-insns count on all powerpc targets. Skip the test on powerpc without vsx. * gcc.dg/vect/pr117888-1.c: Likewise. Diff: --- gcc/testsuite/gcc.dg/vect/pr112325.c | 6 +++++- gcc/testsuite/gcc.dg/vect/pr117888-1.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.dg/vect/pr112325.c b/gcc/testsuite/gcc.dg/vect/pr112325.c index d38059592825..e587854e4d0f 100644 --- a/gcc/testsuite/gcc.dg/vect/pr112325.c +++ b/gcc/testsuite/gcc.dg/vect/pr112325.c @@ -3,7 +3,7 @@ /* { dg-require-effective-target vect_int } */ /* { dg-require-effective-target vect_shift } */ /* { dg-additional-options "-mavx2" { target x86_64-*-* i?86-*-* } } */ -/* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc64*-*-* } } */ +/* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc*-*-* } } */ /* { dg-additional-options "-mlsx" { target loongarch64-*-* } } */ /* { dg-additional-options "--param max-completely-peeled-insns=200 --param min-vect-loop-bound=0" { target s390*-*-* } } */ @@ -60,4 +60,8 @@ void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * restri *s = sumf; } +/* Altivec alone cannot handle these loops; the widening for the multiplies + gets in the way. */ +/* { dg-skip-if "" { powerpc*-*-* && { ! powerpc_vsx } } } */ + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr117888-1.c b/gcc/testsuite/gcc.dg/vect/pr117888-1.c index 884aed2d9bee..674349c1b7db 100644 --- a/gcc/testsuite/gcc.dg/vect/pr117888-1.c +++ b/gcc/testsuite/gcc.dg/vect/pr117888-1.c @@ -3,7 +3,7 @@ /* { dg-require-effective-target vect_int } */ /* { dg-require-effective-target vect_shift } */ /* { dg-additional-options "-mavx2" { target x86_64-*-* i?86-*-* } } */ -/* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc64*-*-* } } */ +/* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc*-*-* } } */ /* { dg-additional-options "-mlsx" { target loongarch64-*-* } } */ /* { dg-additional-options "--param max-completely-peeled-insns=200 --param min-vect-loop-bound=0" { target s390*-*-* } } */ @@ -70,4 +70,8 @@ void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * restri *s = sumf; } +/* Altivec alone cannot handle these loops; the widening for the multiplies + gets in the way. */ +/* { dg-skip-if "" { powerpc*-*-* && { ! powerpc_vsx } } } */ + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
