Anna Thomas
b71aa89415
[LV] Teach about non header phis that have uses outside the loop
...
Summary:
This patch teaches the loop vectorizer to vectorize loops with non
header phis that have have outside uses. This is because the iteration
dependence distance for these phis can be widened upto VF (similar to
how we do for induction/reduction) if they do not have a cyclic
dependence with header phis. When identifying reduction/induction/first
order recurrence header phis, we already identify if there are any cyclic
dependencies that prevents vectorization.
The vectorizer is taught to extract the last element from the vectorized
phi and update the scalar loop exit block phi to contain this extracted
element from the vector loop.
This patch can be extended to vectorize loops where instructions other
than phis have outside uses.
Reviewers: Ayal, mkuper, mssimpso, efriedma
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D50579
llvm-svn: 339703
2018-08-14 18:22:19 +00:00
..
2018-06-27 13:58:46 +00:00
2017-08-02 21:43:08 +00:00
2018-05-01 15:35:08 +00:00
2018-04-13 20:16:32 +00:00
2016-12-03 00:41:43 +00:00
2018-07-24 22:30:31 +00:00
2018-07-06 04:04:13 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-07-27 23:53:58 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2018-05-09 02:40:45 +00:00
2016-10-06 23:57:25 +00:00
2018-05-01 15:35:08 +00:00
2018-05-09 02:40:45 +00:00
2016-10-06 23:57:25 +00:00
2018-05-09 02:40:45 +00:00
2016-10-19 19:22:02 +00:00
2018-05-09 02:40:45 +00:00
2018-05-09 02:40:45 +00:00
2018-05-09 02:40:45 +00:00
2018-05-09 02:40:45 +00:00
2017-10-26 21:20:52 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2018-04-24 17:04:17 +00:00
2018-04-24 17:04:17 +00:00
2018-04-24 17:04:17 +00:00
2017-08-08 18:07:44 +00:00
2017-10-05 12:41:49 +00:00
2016-10-06 23:57:25 +00:00
2018-05-01 15:35:08 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-07-06 14:26:59 +00:00
2016-09-26 17:08:37 +00:00
2016-10-06 23:57:25 +00:00
2018-02-26 11:06:36 +00:00
2018-07-10 13:29:50 +00:00
2016-10-07 15:20:13 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2017-11-20 12:01:47 +00:00
2016-10-06 23:57:25 +00:00
2017-09-13 06:28:37 +00:00
2017-08-27 12:55:46 +00:00
2016-10-06 23:57:25 +00:00
2017-07-31 13:21:42 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2018-05-01 15:35:08 +00:00
2018-05-01 15:35:08 +00:00
2017-11-08 21:59:51 +00:00
2016-10-31 13:17:31 +00:00
2016-10-31 13:17:31 +00:00
2016-10-31 13:17:31 +00:00
2017-12-06 22:42:24 +00:00
2017-07-19 05:16:39 +00:00
2018-05-01 15:35:08 +00:00
2018-02-10 00:07:45 +00:00
2016-10-06 23:57:25 +00:00
2017-07-19 05:16:39 +00:00
2017-01-26 10:41:09 +00:00
2017-12-20 13:28:38 +00:00
2017-04-10 20:18:21 +00:00
2017-04-07 14:15:34 +00:00
2017-09-14 07:40:02 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2017-07-19 05:16:39 +00:00
2017-09-25 20:30:53 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2017-08-20 10:32:41 +00:00
2018-05-09 02:40:45 +00:00
2018-08-14 18:22:19 +00:00
2018-05-09 02:40:45 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2017-01-19 00:42:28 +00:00
2017-08-28 22:00:27 +00:00
2016-10-06 23:57:25 +00:00
2016-08-12 22:47:13 +00:00
2018-03-22 22:04:39 +00:00
2017-02-12 09:32:53 +00:00
2017-01-19 00:42:28 +00:00
2017-05-13 13:25:57 +00:00
2017-07-12 19:53:55 +00:00
2017-11-05 16:53:15 +00:00
2018-02-05 08:09:49 +00:00
2018-03-22 22:04:39 +00:00
2018-03-09 18:02:36 +00:00
2018-06-08 08:21:20 +00:00
2018-05-08 18:57:34 +00:00
2018-07-04 10:16:55 +00:00
2016-10-06 23:57:25 +00:00
2016-06-29 10:01:06 +00:00
2016-10-06 23:57:25 +00:00
2018-02-04 15:42:24 +00:00
2018-08-13 19:55:25 +00:00
2016-09-21 16:50:24 +00:00
2017-02-14 16:28:32 +00:00
2017-07-19 05:16:39 +00:00
2018-06-21 16:54:32 +00:00
2016-10-06 23:57:25 +00:00
2018-05-01 15:35:08 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2017-06-30 08:02:35 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00
2018-02-07 23:29:52 +00:00
2016-10-06 23:57:25 +00:00
2017-03-23 20:02:23 +00:00
2018-05-09 02:40:45 +00:00
2016-10-06 23:57:25 +00:00
2018-03-22 22:04:39 +00:00
2017-07-25 10:35:16 +00:00
2016-10-06 23:57:25 +00:00
2017-04-07 14:15:34 +00:00
2017-08-20 10:32:41 +00:00
2017-11-05 16:53:15 +00:00
2018-05-21 18:14:23 +00:00
2016-10-06 23:57:25 +00:00
2016-10-06 23:57:25 +00:00