https://gcc.gnu.org/g:af7b84d0d02ffa23e4843e9555a888c9e80bd9b5

commit r16-645-gaf7b84d0d02ffa23e4843e9555a888c9e80bd9b5
Author: Richard Biener <rguent...@suse.de>
Date:   Wed May 14 16:45:08 2025 +0200

    Enhance -fopt-info-vec vectorized loop diagnostic
    
    The following includes whether we vectorize an epilogue, whether
    we use loop masking and what vectorization factor (unroll factor)
    we use.  So it's now
    
    t.c:4:21: optimized: loop vectorized using 64 byte vectors and unroll 
factor 32
    t.c:4:21: optimized: epilogue loop vectorized using masked 64 byte vectors 
and unroll factor 32
    
    for a masked epilogue with AVX512 and HImode data for example.  Rather
    than
    
    t.c:4:21: optimized: loop vectorized using 64 byte vectors
    t.c:4:21: optimized: loop vectorized using 64 byte vectors
    
    I verified we don't translate opt-info messages and thus excessive
    use of %s to compose the strings should be OK.
    
            * tree-vectorizer.cc (vect_transform_loops): When diagnosing
            a vectorized loop indicate whether we vectorized an epilogue,
            whether we used masked vectors and what unroll factor was
            used.
    
            * gcc.target/i386/pr110310.c: Adjust.

Diff:
---
 gcc/testsuite/gcc.target/i386/pr110310.c |  4 ++--
 gcc/tree-vectorizer.cc                   | 13 +++++++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/gcc/testsuite/gcc.target/i386/pr110310.c 
b/gcc/testsuite/gcc.target/i386/pr110310.c
index dce388aeb206..60564393a2c9 100644
--- a/gcc/testsuite/gcc.target/i386/pr110310.c
+++ b/gcc/testsuite/gcc.target/i386/pr110310.c
@@ -9,5 +9,5 @@ void foo (int * __restrict a, int *b)
 
 /* We should vectorize the main loop with AVX512 and the epilog with SSE.  */
 
-/* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte 
vectors" "vect" } } */
-/* { dg-final { scan-tree-dump "optimized: loop vectorized using 16 byte 
vectors" "vect" } } */
+/* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" 
} } */
+/* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" 
} } */
diff --git a/gcc/tree-vectorizer.cc b/gcc/tree-vectorizer.cc
index 447f882c5184..2f77e46ba992 100644
--- a/gcc/tree-vectorizer.cc
+++ b/gcc/tree-vectorizer.cc
@@ -1026,10 +1026,19 @@ vect_transform_loops (hash_table<simduid_to_vf> 
*&simduid_to_vf_htab,
     {
       if (GET_MODE_SIZE (loop_vinfo->vector_mode).is_constant (&bytes))
        dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
-                        "loop vectorized using %wu byte vectors\n", bytes);
+                        "%sloop vectorized using %s%wu byte vectors and"
+                        " unroll factor %u\n",
+                        LOOP_VINFO_EPILOGUE_P (loop_vinfo)
+                        ? "epilogue " : "",
+                        LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo)
+                        ? "masked " : "", bytes,
+                        (unsigned int) LOOP_VINFO_VECT_FACTOR
+                                                (loop_vinfo).to_constant ());
       else
        dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
-                        "loop vectorized using variable length vectors\n");
+                        "%sloop vectorized using variable length vectors\n",
+                        LOOP_VINFO_EPILOGUE_P (loop_vinfo)
+                        ? "epilogue " : "");
     }
 
   loop_p new_loop = vect_transform_loop (loop_vinfo,

Reply via email to