Re: [PATCH v4 1/5] RISC-V: Improve macro-fusion dump o utput and comments

"Jin Ma" <[email protected]> Thu, 06 Aug 2026 23:06:25 +0800
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
> On 7/29/2026 1:15 AM, Jin Ma wrote:
> > No new macro-fusion functionality is added.  Include both
> > instruction UIDs in dump messages so consecutive matches can be
> > distinguished, and report ZEXTW and ZEXTWS with their actual fusion types.
> > Document existing fusion recognizers consistently to make their RTL
> > relationships and constraints easier to understand.
> >
> > Keep each table entry tied to one fusion operation and use the common
> > enablement helper.
> >
> > gcc/ChangeLog:
> >
> >  * config/riscv/riscv-fusion.cc (riscv_fuse_zext_common): New function.
> >  (riscv_fuse_zextw): Likewise.
> >  (riscv_fuse_zextws): Use riscv_fuse_zext_common and document RTL
> >  relationships and constraints.
> >  (riscv_fuse_zexth): Use riscv_fuse_zext_common.
> >  (riscv_fuse_ldindexed): Document RTL relationships and constraints.
> >  (riscv_fuse_expanded_ld): Likewise.
> >  (riscv_fuse_ldpreincrement): Likewise.
> >  (riscv_fuse_lui_addi): Likewise.
> >  (riscv_fuse_auipc_addi): Likewise.
> >  (riscv_fuse_lui_ld): Likewise.
> >  (riscv_fuse_auipc_ld): Likewise.
> >  (riscv_fuse_cache_aligned_std): Likewise.
> >  (riscv_fuse_aligned_std): Likewise.
> >  (riscv_fuse_bfext): Likewise.
> >  (riscv_fuse_b_alui): Likewise.
> >  (riscv_fusion_entry::op): Rename from op_flags and use an enum.
> >  (riscv_fusion_table): Split ZEXTW and ZEXTWS entries.
> >  (riscv_macro_fusion_pair_p): Use riscv_fusion_enabled_p and print
> >  instruction UIDs.
> >
> > gcc/testsuite/ChangeLog:
> >
> >  * gcc.target/riscv/fusion-zextw-2.c: Expect the ZEXTW dump name.
> >  * gcc.target/riscv/fusion-zextw.c: Likewise.
> > ---
> >   gcc/config/riscv/riscv-fusion.cc              | 261 +++++++++++++-----
> >   .../gcc.target/riscv/fusion-zextw-2.c         |   2 +-
> >   gcc/testsuite/gcc.target/riscv/fusion-zextw.c |   2 +-
> >   3 files changed, 192 insertions(+), 73 deletions(-)
> >
> > diff --git a/gcc/config/riscv/riscv-fusion.cc b/gcc/config/riscv/riscv-fusion.cc
> > index 4846dc0dfa2..c766ace60af 100644
> > --- a/gcc/config/riscv/riscv-fusion.cc
> > +++ b/gcc/config/riscv/riscv-fusion.cc
> >
> > @@ -112,7 +112,7 @@ riscv_set_is_adduw_p (rtx set)
> >  
> >   /* Matches a shNadd:
> >     (set (reg:DI rd)
> > -       (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rS2)) */
> > +       (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rs2))) */
> You might consider dropping the modes here too.  Consider that 
> pre-approved or include it in this patch.  Your call.  Either way it 
> doesn't require another review round.  Similarly for any other cases 
> where the pattern is valid for rv32 or rv64.

I will take this suggestion and drop the modes here and from the other
RTL examples that apply to both RV32 and RV64.  I will fold these
comment changes into this patch rather than send a separate cleanup
patch.

> OK for the trunk.  Thanks for cleaning this stuff up.
>
> jeff

Thanks.  Once the usual testing completes successfully, I will commit
the combined patch to trunk. Thank you for the review and approval.

BR,
Jin