PATCH (SPU): Add enhanced Double Precision (eDP) support on SPU

trevor_smigiel@playstation.sony.com trevor_smigiel@playstation.sony.com
Wed Jul 11 23:47:00 GMT 2007


* Sa Liu <SALIU@de.ibm.com> [2007-07-11 05:00]:
> trevor_smigiel@playstation.sony.com wrote on 10.07.2007 23:52:43:
> 
> > Is there a reason you didn'y make this change?
> > > Can you rewrite the celledp handling in spu_emit_branch_or_set. 
> Instead
> > > of special casing in there, move all special casing into a
> > > (define_expand "ceq_df") and (define_expand "cgt_df"). 
> > 
> > Trevor
> > 
> 
> Because I didn't find a proper method to cast the DFmode operand to a 
> V4SImode pseudo register.
> In emit-rtl.c, the function validate_subreg checks the innermode and 
> outermode size to be the same, when casting floating point mode: "Subregs 
> involving floating point modes are not allowed to change size. Therefore 
> (subreg:DI (reg:DF) 0) is fine, but (subreg:SI (reg:DF) 0) isn't."

Where would you need the (subreg:SI (reg:DF))?

> Any idea about how to solve that?

You could use an UNSPEC_CONVERT, which is defined in spu.md.  Though,

Trevor



More information about the Gcc-patches mailing list