This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: rs6000.md/altivec.md problem in setting of vector registers
- From: Dorit Naishlos <DORIT at il dot ibm dot com>
- To: Dale Johannesen <dalej at apple dot com>
- Cc: gcc at gcc dot gnu dot org, David Edelsohn <dje at makai dot watson dot ibm dot com>
- Date: Sun, 21 Mar 2004 00:10:57 +0200
- Subject: Re: rs6000.md/altivec.md problem in setting of vector registers
> I haven't tried it, but this might well break passing of vector
> parameters in int regs.
I would be surprised if this hack did not create all kinds of code
generation problems. Maybe it could be reworked or perhaps something else
could be tweaked to achieve the same effect?
dorit
Dale Johannesen
<dalej@apple.com> To: Dorit Naishlos/Haifa/IBM@IBMIL
cc: gcc@gcc.gnu.org, David Edelsohn <dje@makai.watson.ibm.com>, Dale Johannesen
19/03/2004 20:55 <dalej@apple.com>
Subject: Re: rs6000.md/altivec.md problem in setting of vector registers
On Mar 18, 2004, at 4:52 PM, Dorit Naishlos wrote:
> I managed to hack something that causes Reload to make the "right"
> decision
> and generate the same code as it generates for i386 - i.e., the spill
> code
> is created out of the loop.
>
> The hack modifies the macro CANNOT_CHANGE_MODE_CLASS in rs6000.h to not
> allow a mode change from a vector mode to a smaller mode in
> ALTIVEC_REGS or
> GENERAL_REGS. As a result, these register classes cannot be considered
> for
> allocation in this case; instead, Reload directly creates stores to
> memory,
> outside the loop, like for i386.
I haven't tried it, but this might well break passing of vector
parameters in int regs.