This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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~