This is the mail archive of the gcc-patches@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: [PATCH] Fix PR84101, account for function ABI details in vectorization costs


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


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