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: Floating point registers vs. LOAD_EXTEND_OP on alpha


On Sun, Jan 18, 2004 at 10:18:59AM -0700, Roger Sayle wrote:
> 594a595
> >       cvtlq $f2,$f2
> 716a718
> >       cvtlq $f3,$f3
> 846a849
> >       cvtlq $f4,$f4
> 
> 
> The patch has eliminated the sign extensions of an integer value held
> in the alpha's floating point registers.

I hope you mean *added*.

> Clearly there's some poor interaction between LOAD_EXTEND_OP and
> loading integer values into FP registers.

Yes.  LOAD_EXTEND_OP is not true for the FP registers, only
the integer registers.  This is a problem...

> I'm guesing that in the sequence:
> 
>         lds $f2,40($10)
> 	cvtlq $f2,$f2
> 	sts $f2,40($9)
> 
> the "cvtlq" is actually doing something useful ...

No, the cvtlq insn there is actually corrupting data.

> Hopefully, this analysis is enough for an alpha maintainer to determine
> whether Joern needs an additional check in his post-reload patch or if
> the alpha backend's LOAD_EXTEND_OP should claim to be extending in these
> modes.

What we need to do is run some benchmarks and decide if LOAD_EXTEND_OP
should be removed, or (much more likely) we remove (or obfuscate) the
bits that claims that we can load SImode values into FP registers.


r~


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