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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>:

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

commit r15-3820-gf594008dcced0ebb86908f3d7602fcf943e05bc7
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Sep 20 15:07:24 2024 +0200

    tree-optimization/115372 - failed store-lanes in some cases

    The gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c testcase shows
    that we sometimes fail to use store-lanes even though it should be
    profitable.  We're currently relying on vect_slp_prefer_store_lanes_p
    at the point we run into the first SLP discovery mismatch with obviously
    limited information.  For the case at hand we have 3, 5 or 7 lanes
    of VnDImode [2, 2] vectors with the first mismatch at lane 2 so the
    new group size is 1.  The heuristic says that might be an OK split
    given the rest is a multiple of the vector lanes.  Now we continue
    discovery but in the end mismatches result in uniformly single-lane
    SLP instances which we can handle via interleaving but of course are
    prime candidates for store-lanes.  The following patch re-assesses
    with the extra knowledge now just relying on the fact whether the
    target supports store-lanes for the given group size.

            PR tree-optimization/115372
            * tree-vect-slp.cc (vect_build_slp_instance): Compute the
            uniform, if, number of lanes of the RHS sub-graphs feeding
            the store and if uniformly one, use store-lanes if the target
            supports that.

Reply via email to