On 8/13/2026 11:57 PM, Jin Ma wrote:
Recognize ADD/ADDI-type instructions followed by ANDI when the result
register forms the required dependency.  Parameterize the ANDI
classifier so the new recognizer and existing B_ALUI logic share RTL
parsing.

Leave the fusion disabled by default.

gcc/ChangeLog:

        * config/riscv/riscv-fusion.cc (riscv_insn_is_add_addi_p): New
        function.
        (riscv_insn_is_andi_type_p): Likewise.
        (riscv_fuse_b_alui): Reuse the ANDI matcher.
        (riscv_fuse_add_andi): New function.
        (riscv_fusion_table): Add RISCV_FUSE_ADD_ANDI.
        * config/riscv/riscv-protos.h (enum riscv_fusion_pairs): Add
        RISCV_FUSE_ADD_ANDI.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/fusion-add-addi-andi.c: New test.
        * gcc.target/riscv/fusion-mv-li-andi-rtl.c: Likewise.
        * gcc.target/riscv/fusion-special-positive-rtl-add-andi.c: Likewise.

Signed-off-by: Jin Ma <[email protected]>
OK once prerequisites are approved.

jeff

Reply via email to