Andrew Pinski <quic_apin...@quicinc.com> writes: > r15-6789-ge7f98d9603808b added a new RTL pass for hardreg PRE for the hard > register > of FPM_REGNUM, but this pass does nothing if there can be any FPM_REGNUM > register in it. > So let's set HARDREG_PRE_REGNOS to include all zeros if !TARGET_FP8. > Now the pass will only run if there is a possibility of having the FPM > register.
Could we get most of the benefit by instead adding: if (!df_regs_ever_live_p (current_hardreg_regno)) continue; to the pass loop? I think we could do it even before df_analyze given the optimize > 0 gate. If so, we'd also get the benefit for TARGET_FP8 in functions that don't use FP8 intrinsics. Thanks, Richard > Built and tested for aarch64-linux-gnu. > > PR target/121095 > gcc/ChangeLog: > > * config/aarch64/aarch64.h (HARDREG_PRE_REGNOS): Don't include > FPM_REGNUM > if !TARGET_FP8. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > gcc/config/aarch64/aarch64.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h > index 096c853af7f..d128ed726f0 100644 > --- a/gcc/config/aarch64/aarch64.h > +++ b/gcc/config/aarch64/aarch64.h > @@ -1661,8 +1661,8 @@ enum class aarch64_tristate_mode : int { NO, YES, MAYBE > }; > int (aarch64_local_sme_state::ANY) } > > /* Zero terminated list of regnos for which hardreg PRE should be > - applied. */ > -#define HARDREG_PRE_REGNOS { FPM_REGNUM, 0 } > + applied. Only enable FPM reg if FP8 is enabled. */ > +#define HARDREG_PRE_REGNOS { TARGET_FP8 ? FPM_REGNUM : 0, 0 } > > #endif