Hi Christophe,

> -----Original Message-----
> From: Gcc-patches <gcc-patches-
> bounces+kyrylo.tkachov=arm....@gcc.gnu.org> On Behalf Of Christophe
> LYON via Gcc-patches
> Sent: 08 September 2021 08:49
> To: Richard Earnshaw <richard.earns...@foss.arm.com>; gcc-
> patc...@gcc.gnu.org
> Subject: Re: [PATCH 04/13] arm: Add GENERAL_AND_VPR_REGS regclass
> 
> 
> On 07/09/2021 15:35, Richard Earnshaw wrote:
> >
> >
> > On 07/09/2021 13:05, Christophe LYON wrote:
> >>
> >> On 07/09/2021 11:42, Richard Earnshaw wrote:
> >>>
> >>>
> >>> On 07/09/2021 10:15, Christophe Lyon via Gcc-patches wrote:
> >>>> At some point during the development of this patch series, it appeared
> >>>> that in some cases the register allocator wants “VPR or general”
> >>>> rather than “VPR or general or FP” (which is the same thing as
> >>>> ALL_REGS).  The series does not seem to require this anymore, but it
> >>>> seems to be a good thing to do anyway, to give the register allocator
> >>>> more freedom.
> >>>>
> >>>> 2021-09-01  Christophe Lyon <christophe.l...@foss.st.com>
> >>>>
> >>>>     gcc/
> >>>>     * config/arm/arm.h (reg_class): Add GENERAL_AND_VPR_REGS.
> >>>>     (REG_CLASS_NAMES): Likewise.
> >>>>     (REG_CLASS_CONTENTS): Likewise. Add VPR_REG to ALL_REGS.
> >>>>
> >>>> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
> >>>> index 015299c1534..fab39d05916 100644
> >>>> --- a/gcc/config/arm/arm.h
> >>>> +++ b/gcc/config/arm/arm.h
> >>>> @@ -1286,6 +1286,7 @@ enum reg_class
> >>>>     SFP_REG,
> >>>>     AFP_REG,
> >>>>     VPR_REG,
> >>>> +  GENERAL_AND_VPR_REGS,
> >>>>     ALL_REGS,
> >>>>     LIM_REG_CLASSES
> >>>>   };
> >>>> @@ -1315,6 +1316,7 @@ enum reg_class
> >>>>     "SFP_REG",        \
> >>>>     "AFP_REG",        \
> >>>>     "VPR_REG",        \
> >>>> +  "GENERAL_AND_VPR_REGS", \
> >>>>     "ALL_REGS"        \
> >>>>   }
> >>>>   @@ -1343,7 +1345,8 @@ enum reg_class
> >>>>     { 0x00000000, 0x00000000, 0x00000000, 0x00000040 }, /* SFP_REG
> >>>> */    \
> >>>>     { 0x00000000, 0x00000000, 0x00000000, 0x00000080 }, /* AFP_REG
> >>>> */    \
> >>>>     { 0x00000000, 0x00000000, 0x00000000, 0x00000400 }, /* VPR_REG.
> >>>> */    \
> >>>> -  { 0xFFFF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F }  /* ALL_REGS.
> >>>> */    \
> >>>> +  { 0x00005FFF, 0x00000000, 0x00000000, 0x00000400 }, /*
> >>>> GENERAL_AND_VPR_REGS.  */ \
> >>>> +  { 0xFFFF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000040F }  /* ALL_REGS.
> >>>> */    \
> >>>>   }
> >>>
> >>> You've changed the definition of ALL_REGS here (to include VPR_REG),
> >>> but not really explained why.  Is that the source of the underlying
> >>> issue with the 'appeared' you mention?
> >>
> >>
> >> I first added VPR_REG to ALL_REGS, but Richard Sandiford suggested I
> >> create a new GENERAL_AND_VPR_REGS that would be more restrictive. I
> >> did not remove VPR_REG from ALL_REGS because I thought it was an
> >> omission: shouldn't ALL_REGS contain all registers?
> >
> > Surely that should be a separate patch then.
> 
> OK, I can remove that line from this patch and make a separate one-liner
> for ALL_REGS.

Did you end up sending that patch out? (Sorry, I may have missed it in my 
archive).
This patch to add GENERAL_AND_VPR_REGS is okay with the ALL_REGS change 
separated out.

Thanks,
Kyrill

> 
> Thanks,
> 
> Christophe
> 
> 
> >
> > R.
> >
> >>
> >>
> >>>
> >>> R.
> >>>
> >>>
> >>>>     #define FP_SYSREGS \
> >>>>

Reply via email to