This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] [4.3 projects] Verctorizer - versioning for alias
- From: Dorit Nuzman <DORIT at il dot ibm dot com>
- To: Victor Kaplansky <VICTORK at il dot ibm dot com>
- Cc: gcc-patches at gnu dot org, rakdver at kam dot mff dot cuni dot cz
- Date: Sun, 19 Aug 2007 10:32:00 +0300
- Subject: Re: [PATCH] [4.3 projects] Verctorizer - versioning for alias
Victor Kaplansky/Haifa/IBM wrote on 16/08/2007 16:48:11:
> Dorit Nuzman/Haifa/IBM wrote on 16/08/2007 04:11:46 PM:
> >
> > Is there a testcase that catches this case?
>
> vect-vfa-01.c catches it.
>
> >
> > > - POINTER_PLUS_EXPR used insted of PLUS_EXPR for pointer
> > > arithmentics.
> > > - Parameters "vect-max-version-for-alignment-checks" and
> > > "vect-max-version-for-alias-checks" documented in invoke.texi.
> >
I just realized that there's no check for optimize_size (we don't want to
allow versioining if we are optimizing for size). Please also include that
in the follow up patch.
thanks,
dorit
> > (make sure you pass make info/make dvi, if you haven't yet)
>
> OK.
>
> >
> > So you're going to address the rest of the comments in a separate
> > patch (cost-model updates, improved handling of interleaved-
> > accesses, adding testcases that combine interleaving and versioning-
> > for-aliasing, factoring out the versioning related stuff from
> > vect_transform_loop)? (that would be fine with me, just want to make
> > sure you're planning to address these issues too).
>
> Yes, sure. Just forgot to mention that I'm planing to submit an
> additional patch with performance and other imrovments to versioning for
> alias and above issued will be addressed there.
>
> > so I asked this before: I think you mean "don't perform **peeling**
> > for alignment if versioning for alias is required", right?
>
> Sorry, I'll fix this in the Changelog.
>
> > I think you can use TYPE_VECTOR_SUBPARTS() instead of
> > GET_MODE_SIZE (TYPE_MODE ()) (just a tiny bit more compact)
>
> I think that it slightly different. For example TYPE_VECTOR_SUBPARTS()
> returns 4 for a vector of integers on ppc, while
> GET_MODE_SIZE (TYPE_MODE ()) returns 16 - size of vector in bytes.
>
> >
> > Also, for more compact code, you could compute the vf*step once and
> > reuse it for both then and else. For your consideration.
> >
> > + (vinfo_for_stmt (DR_STMT (dr))))));
> > +
> > + segment_length =
> > + fold_convert (sizetype,
> > + fold_build2 (PLUS_EXPR, integer_type_node,
> > + fold_build2 (MULT_EXPR, integer_type_node, DR_STEP (dr),
> > + vect_factor),
> > + vector_size));
> > +
> > +
> > + }
> > + else
> > + {
> > + segment_length =
> > + fold_convert (sizetype,
> > + fold_build2 (MULT_EXPR, integer_type_node, DR_STEP (dr),
> > + vect_factor));
> > + }
> > +
> > + return segment_length;
> > +}
>
> OK, I'll address this in next patch.