This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Puzzle about macro MIPS_PROLOGUE_TEMP_REGNUM


>
> It's not "starting from $3". ?It's $3 and nothing else ;-) ?It's not
> intended to be used as (MIPS_PROLOGUE_TEMP_REGNUM + N).
>
> $3 was chosen because it's a MIPS16 register, and can therefore
> be used for both MIPS16 and normal-mode code. ?$2 used to be the
> static chain register, which left $3 as the only free call-clobbered
Thank all of you for explanation.

> MIPS16 register. ?I changed the static chain register to $15 to avoid
> a clash with the MIPS16 gp-load sequence:
>
> ? ?http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00622.html
>
> so $2 is probably free now too.
Seems $2 is used for gp load in MIPS16 defined by MIPS16_PIC_TEMP_REGNUM,
which should not conflict with MIPS_PROLOGUE_TEMP_REGNUM either.

Mips target uses mips_split_doubleword_move in mips_save_reg
 to implement double float reg saving.
Seems I have to provide a special pattern using exactly
the only (MIPS_PROLOGUE_TEMP_REGNUM) register,
rather than paired registers starting from it.

But, more patterns might result in consuming more memory, time.
Since my application is some kinda very unique(o32 abi and no MIPS16),
maybe I could use some paired temporary register in this purpose,
like $8-$15, $24-$25.

Thanks.
-- 
Best Regards.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]