diff options
author | Richard Biener <rguenther@suse.de> | 2015-01-29 12:53:39 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-01-29 12:53:39 +0000 |
commit | 62c004451aaecf4d5cfdd0db776165410e017f75 (patch) | |
tree | bbeea17fac83e1a3b225fee52272427e10e97163 /gcc/tree-vect-loop.c | |
parent | 85d44192f61187b585b88c26016a4407cfe90ed3 (diff) | |
download | gcc-62c004451aaecf4d5cfdd0db776165410e017f75.zip gcc-62c004451aaecf4d5cfdd0db776165410e017f75.tar.gz gcc-62c004451aaecf4d5cfdd0db776165410e017f75.tar.bz2 |
re PR target/64844 (Vectorization inhibited in gcc5 when loop starts with elem[1], aarch64 perf regression from 4.9.1)
2015-01-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/64844
* tree-vect-loop.c (vect_estimate_min_profitable_iters): Always
dump cost model analysis.
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
Do not register adjusted load/store costs here.
* gcc.dg/vect/pr64844.c: New testcase.
From-SVN: r220244
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index afc12a7..c5f1c29 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2990,6 +2990,27 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo, vec_outside_cost = (int)(vec_prologue_cost + vec_epilogue_cost); + if (dump_enabled_p ()) + { + dump_printf_loc (MSG_NOTE, vect_location, "Cost model analysis: \n"); + dump_printf (MSG_NOTE, " Vector inside of loop cost: %d\n", + vec_inside_cost); + dump_printf (MSG_NOTE, " Vector prologue cost: %d\n", + vec_prologue_cost); + dump_printf (MSG_NOTE, " Vector epilogue cost: %d\n", + vec_epilogue_cost); + dump_printf (MSG_NOTE, " Scalar iteration cost: %d\n", + scalar_single_iter_cost); + dump_printf (MSG_NOTE, " Scalar outside cost: %d\n", + scalar_outside_cost); + dump_printf (MSG_NOTE, " Vector outside cost: %d\n", + vec_outside_cost); + dump_printf (MSG_NOTE, " prologue iterations: %d\n", + peel_iters_prologue); + dump_printf (MSG_NOTE, " epilogue iterations: %d\n", + peel_iters_epilogue); + } + /* Calculate number of iterations required to make the vector version profitable, relative to the loop bodies only. The following condition must hold true: @@ -3037,30 +3058,9 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo, return; } - if (dump_enabled_p ()) - { - dump_printf_loc (MSG_NOTE, vect_location, "Cost model analysis: \n"); - dump_printf (MSG_NOTE, " Vector inside of loop cost: %d\n", - vec_inside_cost); - dump_printf (MSG_NOTE, " Vector prologue cost: %d\n", - vec_prologue_cost); - dump_printf (MSG_NOTE, " Vector epilogue cost: %d\n", - vec_epilogue_cost); - dump_printf (MSG_NOTE, " Scalar iteration cost: %d\n", - scalar_single_iter_cost); - dump_printf (MSG_NOTE, " Scalar outside cost: %d\n", - scalar_outside_cost); - dump_printf (MSG_NOTE, " Vector outside cost: %d\n", - vec_outside_cost); - dump_printf (MSG_NOTE, " prologue iterations: %d\n", - peel_iters_prologue); - dump_printf (MSG_NOTE, " epilogue iterations: %d\n", - peel_iters_epilogue); - dump_printf (MSG_NOTE, - " Calculated minimum iters for profitability: %d\n", - min_profitable_iters); - dump_printf (MSG_NOTE, "\n"); - } + dump_printf (MSG_NOTE, + " Calculated minimum iters for profitability: %d\n", + min_profitable_iters); min_profitable_iters = min_profitable_iters < vf ? vf : min_profitable_iters; |