On Sat, Jan 28, 2017 at 9:34 PM, Andrew Pinski <apin...@cavium.com> wrote: > Hi, > On some (most) AARCH64 cores, it is not always profitable to > vectorize some integer loops. This patch does two things (I can split > it into different patches if needed). > 1) It splits the aarch64 back-end's vector cost model's vector and > scalar costs into int and fp fields > 1a) For thunderx2t99, models correctly the integer vector/scalar costs. > 2) Fixes/Improves a few calls to record_stmt_cost in tree-vect-loop.c > where stmt_info was not being passed. > > OK? Bootstrapped and tested on aarch64-linux-gnu and provides 20% on > libquantum and ~1% overall on SPEC CPU 2006 int.
+ { + struct _stmt_vec_info *stmt_info + = si->stmt ? vinfo_for_stmt (si->stmt) : NULL; use stmt_vec_info instead of 'struct _stmt_vec_info *'. The vectorizer changes are ok with that change. Thanks, Richard. > Thanks, > Andrew Pinski > > ChangeLog: > * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass > stmt_info to record_stmt_cost. > (vect_get_known_peeling_cost): Pass stmt_info if known to record_stmt_cost. > > * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split > cpu_vector_cost field into > scalar_int_stmt_cost and scalar_fp_stmt_cost. Split vec_stmt_cost > field into vec_int_stmt_cost and vec_fp_stmt_cost. > * config/aarch64/aarch64.c (generic_vector_cost): Update for the > splitting of scalar_stmt_cost and vec_stmt_cost. > (thunderx_vector_cost): Likewise. > (cortexa57_vector_cost): LIkewise. > (exynosm1_vector_cost): Likewise. > (xgene1_vector_cost): Likewise. > (thunderx2t99_vector_cost): Improve after the splitting of the two fields. > (aarch64_builtin_vectorization_cost): Update for the splitting of > scalar_stmt_cost and vec_stmt_cost.