[rfc] fix iv creation in vectorizer
Dorit Naishlos
DORIT@il.ibm.com
Mon Sep 19 05:41:00 GMT 2005
Richard Henderson <rth@redhat.com> wrote on 18/09/2005 00:34:39:
> ........
> (1) Minimum change is in vect_create_index_for_vector_ref; use
> size_zero/one_node instead of integer_zero/one_node.
>
> (2) Avoid creating N loop counters, and reuse a canonical loop counter
> variable. I didn't immediately see a good place off which to hang
> such a thing. Perhaps this should still be revisited.
>
> (3) Create pointer induction variables instead of futzing around with
> integers and multiplication. Like, you know, real people might
> write by hand.
>
> (4) A form of (3) could still be combined with (2), in that if you've
> got "t1 = *p; t2 = t1 + 1; *p = t2", we'll create two induction
> variables for the two uses of *p. Which does get cleaned up later,
> but it seems wasteful to create in the first place.
>
I don't think we should bother with (4) in the vectorizer if later
optimizations are able to clean this up.
Same with (2).
Between (1) and (3) - looks like both end up generating the same code
eventually, so I guess (3) is better cause it's simpler and more compact
(both in terms of the code in the vectorizer and the GIMPLE code that the
vectorizer produces)
> I chose option 3.
agreed
> Oh, and I also purged the vectorizer of all references to
> integer_type_node or unsigned_type_node. I'm thinking perhaps we
> ought to poison these and other suspect identifiers in the tree
> optimizers.
>
cool
> Tested on alpha, ia64 and x86_64 linux.
>
I tried it on powerpc-linux
dorit
More information about the Gcc-patches
mailing list