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] |
On Sat, Jan 28, 2017 at 12:34 PM, Andrew Pinski <apinski@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. Here is the updated patch with the fixes requested by both Richards. Still the same performance as above. OK? Thanks, Andrew ChangLog: * 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. > > 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.
Attachment:
updatedvectcost.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |