diff options
author | Xinliang David Li <davidxl@google.com> | 2013-09-27 16:48:15 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@gcc.gnu.org> | 2013-09-27 16:48:15 +0000 |
commit | d6d1127249564146429009e0682f25bd58d7a791 (patch) | |
tree | f6309abb88289dcaa19aca96778e0ef0659d91a6 /gcc/tree-vect-data-refs.c | |
parent | ac1857a3ef390df0c1b8faf745f855e8c5346b10 (diff) | |
download | gcc-d6d1127249564146429009e0682f25bd58d7a791.tar.gz |
vectorizer cost model enhancement
From-SVN: r202980
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r-- | gcc/tree-vect-data-refs.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index c8cdcb85df0..b8988d9d264 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -1115,7 +1115,7 @@ vect_peeling_hash_insert (loop_vec_info loop_vinfo, struct data_reference *dr, *new_slot = slot; } - if (!supportable_dr_alignment && !flag_vect_cost_model) + if (!supportable_dr_alignment && unlimited_cost_model ()) slot->count += VECT_MAX_COST; } @@ -1225,7 +1225,7 @@ vect_peeling_hash_choose_best_peeling (loop_vec_info loop_vinfo, res.peel_info.dr = NULL; res.body_cost_vec = stmt_vector_for_cost(); - if (flag_vect_cost_model) + if (!unlimited_cost_model ()) { res.inside_cost = INT_MAX; res.outside_cost = INT_MAX; @@ -1454,7 +1454,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) vectorization factor. We do this automtically for cost model, since we calculate cost for every peeling option. */ - if (!flag_vect_cost_model) + if (unlimited_cost_model ()) possible_npeel_number = vf /nelements; /* Handle the aligned case. We may decide to align some other @@ -1462,7 +1462,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) if (DR_MISALIGNMENT (dr) == 0) { npeel_tmp = 0; - if (!flag_vect_cost_model) + if (unlimited_cost_model ()) possible_npeel_number++; } @@ -1795,16 +1795,14 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) /* (2) Versioning to force alignment. */ /* Try versioning if: - 1) flag_tree_vect_loop_version is TRUE - 2) optimize loop for speed - 3) there is at least one unsupported misaligned data ref with an unknown + 1) optimize loop for speed + 2) there is at least one unsupported misaligned data ref with an unknown misalignment, and - 4) all misaligned data refs with a known misalignment are supported, and - 5) the number of runtime alignment checks is within reason. */ + 3) all misaligned data refs with a known misalignment are supported, and + 4) the number of runtime alignment checks is within reason. */ do_versioning = - flag_tree_vect_loop_version - && optimize_loop_nest_for_speed_p (loop) + optimize_loop_nest_for_speed_p (loop) && (!loop->inner); /* FORNOW */ if (do_versioning) |