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: [RFC] optabs and tree-codes for vector operations


On Mon, Aug 30, 2004 at 01:13:08PM +0300, Dorit Naishlos wrote:
> > It'll be much harder to reduce the register pressure by one after the
> > fact.

Meaning that if we write

	magic = addr
	loop {
	  ...
	  v2 = ALIGNED_EXPR (addr);
	  v3 = REALIGN_LOAD_EXPR (v1, v2, magic);
	  addr += N;
	  ...
	}

then everyone will assume that REALIGN_LOAD_EXPR really needs the
initial value of addr, and not any random value containing the 
same low N bits.  Which means that we *will* use two registers
for this loop when only one is needed.


> > > Can the builtin be encapsulated within REALIGN_LOAD_EXPR
> > > ? i.e - have a REALIGN_LOAD_EXPR(v1,v2,addr) that on some targets will
> > > be  expanded to {x=builtin(addr),smthing(v1,v2,x)} and on other targets
> > > will be expanded directly to {smthing(v1,v2,addr)}?
> >
> > No.  Gimple doesn't work that way.
> 
> Can you please explain the above two comments?

I will not allow a CALL_EXPR -- even to a builtin -- to be nested
within REALIGN_LOAD_EXPR.  None of the optimizers are set up to
expect this sort of thing, and they shouldn't have to.


r~


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