https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121908

Josef Melcr <jmelcr at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jmelcr at gcc dot gnu.org

--- Comment #7 from Josef Melcr <jmelcr at gcc dot gnu.org> ---
(In reply to GCC Commits from comment #6)
> The master branch has been updated by Robin Dapp <[email protected]>:
> 
> https://gcc.gnu.org/g:df0ac78ff1d7491019949b71abff662862bfbca6
> 
> commit r17-5480-gdf0ac78ff1d7491019949b71abff662862bfbca6
> Author: Robin Dapp <[email protected]>
> Date:   Fri Sep 18 10:03:16 2026 +0200
> 
>     vect: Request no-wrap bounds from DR analysis.
>     
>     This patch makes use of the preparational patches and activates
>     non-wrapping DR analysis.  The resulting nowrap bounds for each DR
>     are collected by taking the minimum and a final new assumption
>     niter < bounds_min is ANDed into the niter assumptions.
>     
>     We cannot yet fully get rid of LOOP_C_FINITE but there is not a lot
>     missing.  I hope to finish that after this series.
>     
>     I needed to move DR analysis a bit earlier in order to re-use niter
>     checks and dumps.  We now retrieve the DRs directly after
>     vect_analyze_loop_form, then build the assumptions and check them.
>     Afterwards, the DRs are finalized.
>     
>     The vect tests are unchanged from my last patch attempt.  Test 1-3
>     are based on 557.xz's hot loop.
>     
>             PR tree-optimization/121908
>     
>     gcc/ChangeLog:
>     
>             * tree-vect-data-refs.cc (vect_find_stmt_data_reference):
>             Allow non-wrapping DR analysis.
>             * tree-vect-loop.cc (vect_analyze_loop_form): Defer assumption
>             checking.
>             (vect_get_loop_datarefs): New function.
>             (vect_build_assumptions): New function.
>             (vect_analyze_loop): Use new functions.
>             * tree-vectorizer.h (struct vect_loop_form_info): Add BB param.
>     
>     gcc/testsuite/ChangeLog:
>     
>             * gcc.dg/tree-prof/update-loopch.c: Disable vectorization.
>             * gcc.dg/tree-ssa/scev-12.c: Ditto.
>             * gcc.dg/tree-ssa/scev-8.c: Ditto.
>             * gcc.target/aarch64/sve2/niter-convert-range.c: Expect one more
>             dump instance.
>             * gcc.dg/vect/vect-unsigned-assump-1.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-2.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-3.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-4.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-5.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-6.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-7.c: New test.
>             * gcc.dg/vect/vect-unsigned-assump-8.c: New test.

I am seeing a 4-5% exec time slowdown of SPEC 2017 xz_r on Zen4 and Zen5, both
with -Ofast -march=native -flto=128:

https://lnt.opensuse.org/db_default/v4/SPEC/graph?plot.0=959.417.0
https://lnt.opensuse.org/db_default/v4/SPEC/graph?plot.0=1288.417.0

Reply via email to