This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Vectorize conversions
- From: Tehila Meyzels <TEHILA at il dot ibm dot com>
- To: "Richard Guenther" <richard dot guenther at gmail dot com>
- Cc: Dorit Nuzman <DORIT at il dot ibm dot com>, gcc-patches at gcc dot gnu dot org, Ira Rosen <IRAR at il dot ibm dot com>
- Date: Tue, 6 Feb 2007 22:45:33 +0200
- Subject: Re: [PATCH] Vectorize conversions
"Richard Guenther" <richard.guenther@gmail.com> wrote on 06/02/2007
16:45:28:
> On 2/6/07, Tehila Meyzels <TEHILA@il.ibm.com> wrote:
> > Hi,
> >
> > This is a resubmission of patch:
> > http://gcc.gnu.org/ml/gcc-patches/2007-01/msg01885.html
> > This patch includes the corrections and enhancement as Richard Guenther
has
> > suggested:
> > 1. Generalize the patch to vectorize conversions from integral type to
> > floating-point type, with the same size, and vice versa.
> > Including: change the functions/types/etc. names.
> > 2. Handle case of ncopies>1 (in tree-vect-transform.c
> > (vectorizable_conversion)).
> > 3. Add targethook default function.
> > 4. Add documentation of the target hook in tm.texi.
> > 5. Fix incorrect comment (in tree-vect-transform.c
> > (vectorizable_conversion)).
> > 6. Pass also the tree_code to the target hook.
> > 7. Add tescase for ncopies>1.
> > 8. Add a FIX_TRUNC_EXPR case in tree-vect-generic.c.
> > I think that's all...
> >
> >
> > This patch adds the necessary target hooks and vectorizer changes to
> > support vectorization of statements that include
> > casting from integral type to floating-point type, with the same size,
and
> > vice versa,
> > In addition, it implements the int to float conversion hook for
altivec.
> > (therefore only int->float was actually tested. In order to test
float->int
> > we'd need to implement the missing bits for altivec (for ppc) and/or
model
> > the conversions on another target).
> >
> > Testcases of int-to-float conversion (first with ncopies=1. second with
> > ncopies>1) were added.
> >
> > Bootstrapped and tested on the vectorizer testcases on powerpc-linux.
> > Bootstrapped with vectorization enabled and tested on the vectorizer
> > testcases on i386-linux.
> > Full makecheck in progress.
> >
> > OK for mainline, once testing completes?
>
> + /* Supportable by target? */
> + if (!targetm.vectorize.builtin_conversion
> + || !targetm.vectorize.builtin_conversion (code, vectype_in))
> + return false;
>
> You don't need to check for targetm.vectorize.builtin_conversion, the
default
> function will be used if the target does not override it.
>
OK. Will fix that.
> Otherwise ok.
Thanks. I'll ask Ira/Dorit to check in for me (since I don't have write
permission),
once the fixed patch will be built, bootstraped and regtested.
Tehila.
>
> Thanks,
> Richard.
>
> > 2007-02-06 Tehila Meyzels <tehila@il.ibm.com>
> >
> > * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target
> > hook.
> > * targhooks.c (default_builtin_vectorized_conversion): New.
> > * targhooks.h (default_builtin_vectorized_function): New
> > declaration.
> > * target.h (struct vectorize): Add builtin_conversion field.
> > * tree-vectorizer.h (type_conversion_vec_info_type): New enum
> > stmt_vec_info_type value.
> > (vectorizable_conversion): New declaration.
> > * tree-vect-analyze.c (vect_analyze_operations): Add
> > vectorizable_conversion call.
> > * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
> > * tree-vect-transform.c (vectorizable_conversion): New function.
> > (vect_transform_stmt): Add case for
type_conversion_vec_info_type.
> > * tree-vect-generic.c (expand_vector_operations_1): Consider
correct
> > mode.
> > * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
> > (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
> > (rs6000_expand_builtin): Add handling a case of
> > ALTIVEC_BUILTIN_VCFUX or
> > ALTIVEC_BUILTIN_VCFSX.