This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR84101, account for function ABI details in vectorization costs
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Biener <rguenther at suse dot de>
- Cc: Jeff Law <law at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Wed, 14 Feb 2018 12:57:52 +0100
- Subject: Re: [PATCH] Fix PR84101, account for function ABI details in vectorization costs
- Authentication-results: sourceware.org; auth=none
- References: <alpine.LSU.2.20.1801301054180.18265@zhemvz.fhfr.qr> <dea592f4-12a3-b854-f699-91f0c9bdd923@redhat.com> <alpine.LSU.2.20.1802141233140.18265@zhemvz.fhfr.qr>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Wed, Feb 14, 2018 at 12:52:45PM +0100, Richard Biener wrote:
> On Tue, 13 Feb 2018, Jeff Law wrote:
>
> > On 01/30/2018 02:59 AM, Richard Biener wrote:
> > >
> > > This patch tries to deal with the "easy" part of a function ABI,
> > > the return value location, in vectorization costing. The testcase
> > > shows that if we vectorize the returned value but the function
> > > doesn't return in memory or in a vector register but as in this
> > > case in an integer register pair (reg:TI ax) (bah, ABI details
> > > exposed late? why's this not a parallel?) we end up spilling
> > > badly.
> > PARALLEL is used when the ABI mandates a value be returned in multiple
> > places. Typically that happens when the value is returned in different
> > types of registers (integer, floating point, vector).
> >
> > Presumably it's not a PARALLEL in this case because the value is only
> > returned in %eax.
>
> It's returned in %eax and %rdx (TImode after all). But maybe
> "standard register pairs" are not represented as PARALLEL ...
Yes, it is (reg:TI %rax) if low part is in register 0 and high part in
register 1.
Jakub