diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2021-11-10 12:31:00 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2021-11-10 12:31:00 +0000 |
commit | 4725f62789f25b17967695203d7ee821221e2dd6 (patch) | |
tree | 70d6cf997c830af45ee9f52bff0117776b850488 /gcc/tree-vect-loop.c | |
parent | d70ef65692fced7ab72e0aceeff7407e5a34d96d (diff) | |
download | gcc-4725f62789f25b17967695203d7ee821221e2dd6.zip gcc-4725f62789f25b17967695203d7ee821221e2dd6.tar.gz gcc-4725f62789f25b17967695203d7ee821221e2dd6.tar.bz2 |
vect: Move vector costs to loop_vec_info
target_cost_data is in vec_info but is really specific to
loop_vec_info. This patch moves it there and renames it to
vector_costs, to distinguish it from scalar target costs.
gcc/
* tree-vectorizer.h (vec_info::target_cost_data): Replace with...
(_loop_vec_info::vector_costs): ...this.
(LOOP_VINFO_TARGET_COST_DATA): Delete.
* tree-vectorizer.c (vec_info::vec_info): Remove target_cost_data
initialization.
(vec_info::~vec_info): Remove corresponding delete.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
vector_costs to null.
(_loop_vec_info::~_loop_vec_info): Delete vector_costs.
(vect_analyze_loop_operations): Update after above changes.
(vect_analyze_loop_2): Likewise.
(vect_estimate_min_profitable_iters): Likewise.
* tree-vect-slp.c (vect_slp_analyze_operations): Likewise.
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index fa4cf88..b066f85 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -821,6 +821,7 @@ _loop_vec_info::_loop_vec_info (class loop *loop_in, vec_info_shared *shared) num_iters (NULL_TREE), num_iters_unchanged (NULL_TREE), num_iters_assumptions (NULL_TREE), + vector_costs (nullptr), th (0), versioning_threshold (0), vectorization_factor (0), @@ -932,6 +933,7 @@ _loop_vec_info::~_loop_vec_info () delete ivexpr_map; delete scan_map; epilogue_vinfos.release (); + delete vector_costs; /* When we release an epiloge vinfo that we do not intend to use avoid clearing AUX of the main loop which should continue to @@ -1765,7 +1767,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo) } } /* bbs */ - add_stmt_costs (loop_vinfo->target_cost_data, &cost_vec); + add_stmt_costs (loop_vinfo->vector_costs, &cost_vec); /* All operations in the loop are either irrelevant (deal with loop control, or dead), or only used outside the loop and can be moved @@ -2375,7 +2377,7 @@ start_over: LOOP_VINFO_INT_NITERS (loop_vinfo)); } - LOOP_VINFO_TARGET_COST_DATA (loop_vinfo) = init_cost (loop_vinfo, false); + loop_vinfo->vector_costs = init_cost (loop_vinfo, false); /* Analyze the alignment of the data-refs in the loop. Fail if a data reference is found that cannot be vectorized. */ @@ -2742,8 +2744,8 @@ again: LOOP_VINFO_COMP_ALIAS_DDRS (loop_vinfo).release (); LOOP_VINFO_CHECK_UNEQUAL_ADDRS (loop_vinfo).release (); /* Reset target cost data. */ - delete LOOP_VINFO_TARGET_COST_DATA (loop_vinfo); - LOOP_VINFO_TARGET_COST_DATA (loop_vinfo) = nullptr; + delete loop_vinfo->vector_costs; + loop_vinfo->vector_costs = nullptr; /* Reset accumulated rgroup information. */ release_vec_loop_controls (&LOOP_VINFO_MASKS (loop_vinfo)); release_vec_loop_controls (&LOOP_VINFO_LENS (loop_vinfo)); @@ -3919,7 +3921,7 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo, int scalar_outside_cost = 0; int assumed_vf = vect_vf_for_cost (loop_vinfo); int npeel = LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo); - vector_costs *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo); + vector_costs *target_cost_data = loop_vinfo->vector_costs; /* Cost model disabled. */ if (unlimited_cost_model (LOOP_VINFO_LOOP (loop_vinfo))) @@ -4265,7 +4267,7 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo, } /* Complete the target-specific cost calculations. */ - finish_cost (LOOP_VINFO_TARGET_COST_DATA (loop_vinfo), &vec_prologue_cost, + finish_cost (loop_vinfo->vector_costs, &vec_prologue_cost, &vec_inside_cost, &vec_epilogue_cost); vec_outside_cost = (int)(vec_prologue_cost + vec_epilogue_cost); |