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 Tue, Aug 31, 2004 at 06:36:47PM +0300, Dorit Naishlos wrote:
> (3) Generating loop invariant code out of the loop. Relying on register
> allocation to take it into the loop (rematerialize) if necessary:
> 
>              magic = CALL builtin (addr)
>              loop {
>                ...
>                v3 = REALIGN_LOAD_EXPR (v1, v2, magic);
>                addr += N;
>                ...
>              }

Certainly this is what should be done when there's an actual builtin
to be invoked.  But previously we were discussing what to do with 
targets for which there *is* no builtin, and magic = addr.

> Maybe the following scheme is what we want:
> 
> if (target_has_builtin)
>   {
>     generate:
>              magic = CALL builtin (addr)
>              loop {
>                ...
>                v3 = REALIGN_LOAD_EXPR (v1, v2, magic);
>                addr += N;
>                ...
>              }
>   }
> else
>   {
>     generate:
>              loop {
>                ...
>                v3 = REALIGN_LOAD_EXPR (v1, v2, addr);
>                addr += N;
>                ...
>              }
>   }

Exactly.

> Sure. This is not what I meant. I didn't mean explicitely nesting the
> CALL_EXPR in the GIMPLE representation of REALIGN_LOAD_EXPR, but that the
> functionality of REALIGN_LOAD_EXPR could encapsulate also the mask
> generation.

Definitely not what you want.


r~


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