aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorAndre Vieira <andre.simoesdiasvieira@arm.com>2019-11-08 11:30:50 +0000
committerAndre Vieira <avieira@gcc.gnu.org>2019-11-08 11:30:50 +0000
commitb602712b3ea2a0729a2eda61bd9ee795aba6138f (patch)
treecc38f47e613b2e2a337c0f9dbd2d9affbec30532 /gcc/tree-vect-loop.c
parent5384a8027098be99e8d22613583a4f235d515a78 (diff)
downloadgcc-b602712b3ea2a0729a2eda61bd9ee795aba6138f.zip
gcc-b602712b3ea2a0729a2eda61bd9ee795aba6138f.tar.gz
gcc-b602712b3ea2a0729a2eda61bd9ee795aba6138f.tar.bz2
[vect] Disable vectorization of epilogues for loops with SIMDUID set
gcc/ChangeLog: 2019-11-08 Andre Vieira <andre.simoesdiasvieira@arm.com> * tree-vect-loop.c (vect_analyze_loop): Disable epilogue vectorization for loops with SIMDUID set. Enable epilogue vectorization for loops with SIMDLEN set after finding a main loop with a VF that matches it. From-SVN: r277964
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index a2847ef..f25260c 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2455,11 +2455,15 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared)
delete loop_vinfo;
/* Only vectorize epilogues if PARAM_VECT_EPILOGUES_NOMASK is
- enabled, this is not a simd loop and it is the innermost loop. */
- vect_epilogues = (!loop->simdlen
+ enabled, SIMDUID is not set, it is the innermost loop and we have
+ either already found the loop's SIMDLEN or there was no SIMDLEN to
+ begin with.
+ TODO: Enable epilogue vectorization for loops with SIMDUID set. */
+ vect_epilogues = (!simdlen
&& loop->inner == NULL
&& PARAM_VALUE (PARAM_VECT_EPILOGUES_NOMASK)
&& LOOP_VINFO_PEELING_FOR_NITER (first_loop_vinfo)
+ && !loop->simduid
/* For now only allow one epilogue loop. */
&& first_loop_vinfo->epilogue_vinfos.is_empty ());