------- Comment #4 from irar at gcc dot gnu dot org  2010-04-19 09:11 -------
Subject: Bug 37027

Author: irar
Date: Mon Apr 19 09:10:45 2010
New Revision: 158506

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158506
Log:

        PR tree-optimization/37027
        * tree-vectorizer.h (struct _loop_vec_info): Add new field reductions 
        and macro to access it.
        (vectorizable_reduction): Add argument.
        (vect_get_slp_defs): Likewise.
        * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Collect reduction
        statements for possible use in SLP.
        (new_loop_vec_info): Initialize LOOP_VINFO_REDUCTIONS.
        (destroy_loop_vec_info): Free LOOP_VINFO_REDUCTIONS.
        (vect_create_epilog_for_reduction): Handle SLP. Modify documentation,
        add new argument.
        (vectorizable_reduction): Likewise.
        * tree-vect-stmts.c (vect_get_vec_defs): Update call to 
        vect_get_slp_defs.
        (vectorizable_type_demotion, vectorizable_type_promotion,
        vectorizable_store): Likewise.
        (vect_analyze_stmt): Update call to vectorizable_reduction.
        (vect_transform_stmt): Likewise.
        * tree-vect-slp.c (vect_get_and_check_slp_defs): Handle reduction.
        (vect_build_slp_tree): Fix indentation. Check that there are no loads
        from different interleaving chains in same node.
        (vect_slp_rearrange_stmts): New function.
        (vect_supported_load_permutation_p): Allow load permutations for 
        reductions. Call vect_slp_rearrange_stmts() to rearrange statements
        inside SLP nodes if necessary.
        (vect_analyze_slp_instance): Handle reductions.
        (vect_analyze_slp): Try to build SLP instances originating from groups
        of reductions.
        (vect_detect_hybrid_slp_stmts): Skip reduction statements.
        (vect_get_constant_vectors): Create initial vectors for reductions
        according to reduction code. Add new argument.
        (vect_get_slp_defs): Add new argument, pass it to 
        vect_get_constant_vectors.
        (vect_schedule_slp_instance): Remove SLP tree root statements.


Added:
    trunk/gcc/testsuite/gcc.dg/vect/pr37027.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
    trunk/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/lib/target-supports.exp
    trunk/gcc/tree-vect-loop.c
    trunk/gcc/tree-vect-patterns.c
    trunk/gcc/tree-vect-slp.c
    trunk/gcc/tree-vect-stmts.c
    trunk/gcc/tree-vectorizer.h


-- 


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

Reply via email to