Support for MIPS r5900

"Jürgen Urban" JuergenUrban@gmx.de
Tue Jan 8 21:30:00 GMT 2013


Hello Richard,

> > cvt.w.s is replaced by trunc.w.s. This seems to work.
> 
> Probably showing my ignorance, but I couldn't see this in the patch.

trunc.w.s is enabled by ISA_HAS_TRUNC_W_S. This automatically disables cvt.w.s, because trunc.w.s is preferred.

> > I disabled 64 bit FPU instructions by "-msoft-float". This works, but
> > using "-msingle-float" fails. This would be the better
> > configuration. There are still 64 bit FPU instructions used (e.g. "dmfc1
> > $2,$f0" when using "long double" multiplication). So "-msingle-float"
> > doesn't seem to work on generic mips64-linux-gnu.
> 
> Right.  That combination hasn't really been defined.  What happens
> for plain doubles?

This seems to work. There are no unsupported instructions generated.

> Do you pass those in FPRs or GPRs?

I used -mhard-float together with -msingle-float, so it is using FPRs.
 
> The n32 TImode support you mention uses pairs of GPRs, whereas I imagine
> you'd eventually want to use a single 128-bit GPR.  Is that right?

Most old PS2 code will work when supporting this:

typedef unsigned int __u128 __attribute__((mode(TI)));

This is currently working with n32 ABI without any change, but not in o32 ABI. Support for 128-bit GPR would be better, so we have full compatibility to old PS2 code. 

> For the record, I think all those patches would be
> too invasive this late into the 4.8 cycle so would have to wait for 4.9.

OK. I also want to go step by step here.

> Please use ISA_HAS_* for consistency with other macros.  I think it'd
> be better to drop the '(integer)'.

OK. I thought ISA_HAS_* was related to MIPS ISA. My stuff is only related to one CPU here.

> Several other cases later on, I won't
> bore you with them all :-)

I rework it and try to get it stable and tested.
  
Best regards
Jürgen



More information about the Gcc-patches mailing list