diff options
author | Kewen Lin <linkw@gcc.gnu.org> | 2020-07-29 14:38:39 +0800 |
---|---|---|
committer | Kewen Lin <linkw@linux.ibm.com> | 2020-08-06 00:56:52 -0500 |
commit | dfdf9085d31a1be25cd434328b0ba466c397edb2 (patch) | |
tree | 50358b2e48753081ce6f79663300fa576ea72af5 /gcc/tree-vectorizer.h | |
parent | ea858d09571f3f6dcce92d8bfaf077f9d44c6ad6 (diff) | |
download | gcc-dfdf9085d31a1be25cd434328b0ba466c397edb2.zip gcc-dfdf9085d31a1be25cd434328b0ba466c397edb2.tar.gz gcc-dfdf9085d31a1be25cd434328b0ba466c397edb2.tar.bz2 |
vect/rs6000: Support vector with length cost modeling
This patch is to add the cost modeling for vector with length,
it mainly follows what we generate for vector with length in
functions vect_set_loop_controls_directly and vect_gen_len
at the worst case.
For Power, the length is expected to be in bits 0-7 (high bits),
we have to model the cost of shifting bits, which is implemented
in adjust_vect_cost_per_loop.
Bootstrapped/regtested on powerpc64le-linux-gnu (P9) with explicit
param vect-partial-vector-usage=1.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New
function.
(rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop.
* tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost
modeling for vector with length.
(vect_rgroup_iv_might_wrap_p): New function, factored out from...
* tree-vect-loop-manip.c (vect_set_loop_controls_directly): ...this.
Update function comment.
* tree-vect-stmts.c (vect_gen_len): Update function comment.
* tree-vectorizer.h (vect_rgroup_iv_might_wrap_p): New declare.
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 5466c78..7ab6d82 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -1960,6 +1960,7 @@ extern tree vect_create_addr_base_for_vector_ref (vec_info *, /* In tree-vect-loop.c. */ extern widest_int vect_iv_limit_for_partial_vectors (loop_vec_info loop_vinfo); +bool vect_rgroup_iv_might_wrap_p (loop_vec_info, rgroup_controls *); /* Used in tree-vect-loop-manip.c */ extern void determine_peel_for_niter (loop_vec_info); /* Used in gimple-loop-interchange.c and tree-parloops.c. */ |