On Wed, Jul 03, 2019 at 10:43:01AM -0500, Segher Boessenkool wrote:
> Hi Stafford,
>
> On Wed, Jul 03, 2019 at 12:33:50PM +0900, Stafford Horne wrote:
> > + case 'd':
> > + if (REG_P (x))
> > + if (GET_MODE (x) == DFmode || GET_MODE (x) == DImode)
> > + fprintf (file, "%s,%s", reg_names[REGNO (operand)],
> > + reg_names[REGNO (operand) + 1]);
> > + else
> > + fprintf (file, "%s", reg_names[REGNO (operand)]);
> > + else
>
> The coding conventions says to use braces around nested conditionals.
Right I will fix that. Interestingly the indentation is correct just missing
the braces.
> > @@ -212,6 +214,7 @@ enum reg_class
> > #define REG_CLASS_CONTENTS \
> > { { 0x00000000, 0x00000000 }, \
> > { SIBCALL_REGS_MASK, 0 }, \
> > + { 0x7ffffefe, 0x00000000 }, \
>
> Above you said r0, r30, r31 are excluded, but this is r0, r8, r30, or
> in GCC register numbers, 0, 8, and 31? You probably should mention r8
> somewhere (it's because it is the last arg, this avoid problems, I guess?),
> and the 30/31 thing is confused some way. Maybe it is all just that one
> documentation line :-)
>
> > +; d - double pair base registers (excludes r0, r30 and r31 which overflow)
Hmm, maybe I messed up the mask. It should be r0, r30 and r31. Register pairs
can be a base register (rX) with a +1 or +2 offset second register.
Registers not allowed
- r0, because its reserved for hardwired zero and doesn't work as a double
zero when paired with a general register.
- r31, because it cant pair with r32 or r33 (those are overflows)
- r30, because it cant work when paried with r32 (its an overflow), it would
work with r31, but GCC will not generate that pair anyway.
-Stafford