gcc/gcc ChangeLog.autovect tree-vectorizer.c t ...
dorit@gcc.gnu.org
dorit@gcc.gnu.org
Sun Feb 13 03:24:00 GMT 2005
CVSROOT: /cvs/gcc
Module name: gcc
Branch: autovect-branch
Changes by: dorit@gcc.gnu.org 2005-02-12 12:49:24
Modified files:
gcc : ChangeLog.autovect tree-vectorizer.c
tree-vectorizer.h
gcc/testsuite : ChangeLog.autovect
gcc/testsuite/gcc.dg/vect: vect-62.c vect-85.c
Log message:
* tree-vectorizer.h (vect_def_type): New enum definition.
(_stmt_vec_info): New fields "live" and "def_type" added.
(STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New macros to access above
new fields.
(set_stmt_info): Argument type changed to tree_ann_t.
(vinfo_for_stmt): Type of variable "ann" changed to tree_ann_t.
* tree-vectorizer.c (vect_analyze_scalar_cycles): Function made void
instead of bool. Set STMT_VINFO_DEF_TYPE for phi nodes.
(vect_is_simple_use): Takes additional arguments. Consider
STMT_VINFO_DEF_TYPE.
(vect_mark_relevant): Takes additional arguments. Set STMT_VINFO_LIVE_P.
(vect_stmt_relevant_p): Takes additional arguments.
(new_stmt_vec_info): Initialize the new fields STMT_VINFO_LIVE_P and
STMT_VINFO_DEF_TYPE.
(new_loop_vec_info): Set a stmt_vec_info for phi node.
(destroy_loop_vec_info): Free the stmt_vec_info for phi nodes.
(vect_get_vec_def_for_operand): Use new outputs of vect_is_simple_use.
(vectorizable_assignment): Use new API for vect_is_simple_use.
Support the case when the def of the assignment is used out of the loop
and the use of the assignment is invariant.
(vectorizable_operation): Use new API for vect_is_simple_use. Check
if the def of the operation is used out side the loop.
(vectorizable_load): Likewise.
(vectorizable_select) Likewise.
(vectorizable_store): Use new API for vect_is_simple_use.
(vect_is_simple_cond): Use new API for vect_is_simple_use.
(vect_analyze_operations): Check if operations are used after the loop.
Also check phi nodes.
(vect_enhance_data_refs_alignment): Call vect_can_advance_ivs_p.
(vect_mark_stmts_to_be_vectorized): Check vect_stmt_relevant_p also for
phis when initializing the worklist. Use new API for vect_mark_relevant
ans vect_stmt_relevant_p. Use new API for vect_is_simple_use. Mark
"liveness" (i.e. presence of uses after loop) seperately from
"relevance" (i.e. need to be vectorized).
(vect_analyze_loop): Call to vect_analyze_scalar_cycles moved earlier.
(vect_pattern_recog_1): Cast to tree_ann_t in call to set_stmt_info.
(vect_transform_loop): Likewise.
(vect_update_ivs_after_vectorizer): Add debug printouts.
(vect_can_advance_ivs_p): Likewise.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.autovect.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.2.32&r2=1.1.2.33
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.25.2.14&r2=2.25.2.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.7.2.6&r2=2.7.2.7
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.autovect.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.2.8&r2=1.1.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-62.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.2.26.2&r2=1.2.26.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-85.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.8.2&r2=1.1.8.3
More information about the Gcc-cvs
mailing list