[Bug tree-optimization/27460] Does not vectorize statements with mixed type COND_EXPRs

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Sep 2 13:56:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27460

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-09-02 13:53:37 UTC ---
Author: rguenth
Date: Fri Sep  2 13:53:32 2011
New Revision: 178480

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=178480
Log:
2011-09-02  Richard Guenther  <rguenther@suse.de>

    PR tree-optimization/27460
    PR middle-end/29269
    * doc/md.texi (vcond): Document.
    * genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
    optab with two modes.
    * optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
    (enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
    (vcond_optab): Adjust.
    (vcondu_optab): Likewise.
    (expand_vec_cond_expr_p): Adjust prototype.
    * optabs.c (get_vcond_icode): Adjust.
    (expand_vec_cond_expr_p): Likewise.
    (expand_vec_cond_expr): Likewise.
    * tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
    vector type.
    (vectorizable_condition): Allow differing types for comparison
    and result.

    * config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
    for the comparison.
    * config/i386/sse.md (vcond<mode>): Split to
    vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
    vcond<V_128:mode><VI124_128:mode> and
    vcondu<V_128:mode><VI124_128:mode>.
    (vcondv2di): Change to vcond<VI8F_128:mode>v2di.
    (vconduv2di): Likewise.
    * config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
    (vcondu<mode>): Likewise.
    * config/ia64/vect.md (vcond<mode>): Likewise.
    (vcondu<mode>): Likewise.
    (vcondv2sf): Likewise.
    * config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
    * config/rs6000/paired.md (vcondv2sf): Likewise.
    * config/rs6000/vector.md (vcond<mode>): Likewise.
    (vcondu<mode>): Likewise.
    * config/spu/spu.md (vcond<mode>): Likewise.
    (vcondu<mode>): Likewise.

    * gcc.dg/vect/vect-cond-7.c: New testcase.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/neon.md
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/sse.md
    trunk/gcc/config/ia64/vect.md
    trunk/gcc/config/mips/mips-ps-3d.md
    trunk/gcc/config/rs6000/paired.md
    trunk/gcc/config/rs6000/vector.md
    trunk/gcc/config/spu/spu.md
    trunk/gcc/doc/md.texi
    trunk/gcc/genopinit.c
    trunk/gcc/optabs.c
    trunk/gcc/optabs.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-vect-stmts.c



More information about the Gcc-bugs mailing list