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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Robin Dapp <rd...@gcc.gnu.org>:

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

commit r15-6892-ge5e9e50fc6816713d012f1d96ae308a0946d5a14
Author: Robin Dapp <rd...@ventanamicro.com>
Date:   Thu Jan 9 20:45:10 2025 +0100

    RISC-V: Fix vsetvl compatibility predicate [PR118154].

    In PR118154 we emit strided stores but the first of those does not
    always have the proper VTYPE.  That's because we erroneously delete
    a necessary vsetvl.

    In order to determine whether to elide

    (1)
          Expr[7]: VALID (insn 116, bb 17)
            Demand fields: demand_ratio_and_ge_sew demand_avl
            SEW=8, VLMUL=mf2, RATIO=16, MAX_SEW=64
            TAIL_POLICY=agnostic, MASK_POLICY=agnostic
            AVL=(reg:DI 0 zero)

    when e.g.

    (2)
          Expr[3]: VALID (insn 360, bb 15)
            Demand fields: demand_sew_lmul demand_avl
            SEW=64, VLMUL=m1, RATIO=64, MAX_SEW=64
            TAIL_POLICY=agnostic, MASK_POLICY=agnostic
            AVL=(reg:DI 0 zero)
            VL=(reg:DI 13 a3 [345])

    is already available, we use
    sew_ge_and_prev_sew_le_next_max_sew_and_next_ratio_valid_for_prev_sew_p.

    (1) requires RATIO = SEW/LMUL = 16 and an SEW >= 8.  (2) has ratio = 64,
    though, so we cannot directly elide (1).

    This patch uses ratio_eq_p instead of next_ratio_valid_for_prev_sew_p.

            PR target/118154

    gcc/ChangeLog:

            * config/riscv/riscv-vsetvl.cc (MAX_LMUL): New define.
            (pre_vsetvl::earliest_fuse_vsetvl_info): Use.
            (pre_vsetvl::pre_global_vsetvl_info): New predicate with equal
            ratio.
            * config/riscv/riscv-vsetvl.def: Use.

    gcc/testsuite/ChangeLog:

            * gcc.target/riscv/rvv/autovec/pr118154-1.c: New test.
            * gcc.target/riscv/rvv/autovec/pr118154-2.c: New test.
  • [Bug target/118154] [15 Regress... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to