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" } } */

Reply via email to