This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
The following patch to the vectorizer includes: * Support for vectorization of constants (e.g, computations of the form a[i]=5). * A minor change in the naming scheme that allows more flexibility in naming, and is more descriptive. * Take TYPE_MIN_VALUE into account when checking alignment and initializing array indexes (following the discussion in http://gcc.gnu.org/ml/gcc-patches/2004-01/msg01887.html). * Temporarily restrict vectorizable data references to array references with base VAR_DECL. As a result vectorization of ARRAY_REFS of the form '(*p)[i]' (which is what gfortran produces) is not supported, until alignment and aliasing is properly handled for these cases. * Other minor fixes. The tests cases are changed accordingly to reflect the new support for vectorization of constants. Richard - I will address your comment about having separate test cases ( http://gcc.gnu.org/ml/gcc-patches/2004-01/msg01816.html) in a separate patch. Used to bootstrap and pass the testsuite on powerpc-apple-darwin7.0.0 before the merge from tree-ssa. dorit * Makefile.in: (tree-vectorizer.o): Add dependency on real.h. * tree-vectorizer.c: (vect_is_simple_use): Allow constants. (real.h): Included to support constants vectorization. (vect_get_vec_def_for_operand): New function. (vect_transform_binop): Use above new function. (vect_transform_store): Likewise. (vect_transform_load): Likewise. (vect_get_new_vect_var): Allow more flexibility in naming scheme. (vect_create_index_for_array_ref): Call vect_get_new_vect_var with a name prefix instead of a variable. (vect_create_data_ref): Likewise. (vect_create_destination_var): Likewise. (vect_analyze_data_refs): Temporarily restrict vectorizable data refs to ARRYA_RES which base is a VAR_DECL. (vect_create_data_ref): Support only VAR_DECL array base. Mark all vops for renaming. (vect_get_array_first_index): New function. (vect_create_index_for_array_ref): Consider array_first_index. (vect_analyze_data_ref_access): Likewise. (vect_get_loop_niters): Use number_of_iterations_in_loop. (vect_analyze_loop_form): Don't attempt to vectorize if number_of_iterations == 0. (vect_analyze_operations): Fix vectype analysis. (vect_create_index_for_array_ref): Fix code insertion in loop prolog. (vect_transform_loop_bound): Likewise. (See attached file: vect_cst_diff)
Attachment:
vect_cst_diff
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |