This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Floating point registers vs. LOAD_EXTEND_OP on alpha
- From: Richard Henderson <rth at redhat dot com>
- To: Roger Sayle <roger at eyesopen dot com>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, Joern Rennecke <joern dot rennecke at superh dot com>
- Date: Sun, 18 Jan 2004 11:01:10 -0800
- Subject: Re: Floating point registers vs. LOAD_EXTEND_OP on alpha
- References: <Pine.LNX.4.44.0401181003080.27690-100000@www.eyesopen.com>
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~