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 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~