r123416 - in /branches/autovect-branch/gcc: Cha...
dorit@gcc.gnu.org
dorit@gcc.gnu.org
Mon Apr 2 06:49:00 GMT 2007
Author: dorit
Date: Mon Apr 2 07:49:05 2007
New Revision: 123416
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=123416
Log:
* tree-vectorizer.c (new_stmt_vec_info): When setting def_type for
phis differentiate loop-header phis from other phis.
(bb_in_loop_p): New function.
(new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so just
update their loop_vinfo. Order of BB traversal now matters - call
dfs_enumerate_from with bb_in_loop_p.
(destroy_loop_vec_info): Takes additional argument to control whether
stmt_vinfo of the loop stmts should be destroyed as well.
(vect_is_simple_use): Check for multiple-types in inner-loop (currently
not supported during outer-loop vectorization).
(vect_is_simple_reduction): Allow the "non-reduction" use of a
reduction stmt to be defines by a non loop-header phi.
(vectorize_loops): Call destroy_loop_vec_info with additional argument.
* tree-vectorizer.h (vect_relevant): Add enum values
vect_used_in_outer_by_reduction and vect_used_in_outer.
(is_loop_header_bb_p): New. Used to differentiate loop-header phis
from other phis in the loop.
(destroy_loop_vec_info): Add additional argument to declaration.
* tree-vect-analyze.c (analyze_operations): Check for inner-loop
loop-closed exit-phis during outer-loop vectorization that are live or
not used in the outerloop, cause this requires special handling.
(vect_enhance_data_refs_alignment): Don't consider versioning for
nested-loops.
(vect_analyze_data_refs): Check that there are no datarefs in the
inner-loop.
(vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
and vect_used_in_outer_by_reduction cases.
(process_use): Also consider the case of outer-loop stmt defining an
inner-loop stmt.
(vect_analyze_loop_1): New function.
(vect_analyze_loop_form): Extend, to allow a restricted form of nested
loops. Call vect_analyze_loop_1.
(vect_analyze_loop): Skip (inner-)loops within outer-loops that have
been vectorized. Call destroy_loop_vec_info with additional argument.
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Add check for
GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
* tree-vect-transform.c (vect_init_vector): Check which loop to work
with, in case there's an inner-loop.
(get_initial_def_for_inducion): Extend to handle outer-loop
vectorization.
(vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
In the case vect_induction_def get the vector def from the induction
phi node (instead of calling get_initial_def_for_inducion.
(vect_finish_stmt_generation): Support the case that the new stmt is
to be added after a label (rather than before some other stmt).
(get_initial_def_for_reduction): Extend to handle outer-loop
vectorization.
(vect_create_epilog_for_reduction): Extend to handle outer-loop
vectorization.
(vectorizable_reduction): Check for multiple-types in inner-loop
(currently not supported during outer-loop vectorization).
(vect_transform_loop): Change assert to just skip this case. Add a
dump printout.
Added:
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-1.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-3.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-4.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-5.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-1.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-11.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-12.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-13.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-14.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-15.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-16.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-17.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-19.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-2.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-21.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-22.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-3.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-4.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-5.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9a.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9b.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c
- copied unchanged from r123409, branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c
- copied unchanged from r123409, branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c
Removed:
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c
Modified:
branches/autovect-branch/gcc/ChangeLog.autovect
branches/autovect-branch/gcc/testsuite/ChangeLog.autovect
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/vect-widen-mult-sum.c
branches/autovect-branch/gcc/testsuite/gcc.dg/vect/vect.exp
branches/autovect-branch/gcc/tree-vect-analyze.c
branches/autovect-branch/gcc/tree-vect-patterns.c
branches/autovect-branch/gcc/tree-vect-transform.c
branches/autovect-branch/gcc/tree-vectorizer.c
branches/autovect-branch/gcc/tree-vectorizer.h
More information about the Gcc-cvs
mailing list