David Sherwood
fec0a0adac
[SVE][LoopVectorize] Add support for extracting the last lane of a scalable vector
...
There are certain loops like this below:
for (int i = 0; i < n; i++) {
a[i] = b[i] + 1;
*inv = a[i];
}
that can only be vectorised if we are able to extract the last lane of the
vectorised form of 'a[i]'. For fixed width vectors this already works since
we know at compile time what the final lane is, however for scalable vectors
this is a different story. This patch adds support for extracting the last
lane from a scalable vector using a runtime determined lane value. I have
added support to VPIteration for runtime-determined lanes that still permit
the caching of values. I did this by introducing a new class called VPLane,
which describes the lane we're dealing with and provides interfaces to get
both the compile-time known lane and the runtime determined value. Whilst
doing this work I couldn't find any explicit tests for extracting the last
lane values of fixed width vectors so I added tests for both scalable and
fixed width vectors.
Differential Revision: https://reviews.llvm.org/D95139
2021-03-05 09:57:56 +00:00
..
2021-03-05 09:57:56 +00:00
2021-02-12 08:13:50 -05:00
2021-02-19 14:43:51 +00:00
2021-02-01 12:14:59 +00:00
2021-03-01 15:42:19 +00:00
2021-03-05 10:54:51 +08:00
2021-01-06 11:22:50 +09:00
2020-11-06 11:12:10 +01:00
2021-03-01 10:48:04 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-06-14 20:55:59 +01:00
2019-04-17 04:52:47 +00:00
2020-01-16 10:11:35 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2019-04-17 04:52:47 +00:00
2020-10-31 00:25:32 -07:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-01-06 11:22:50 +09:00
2020-12-28 10:13:28 -08:00
2019-04-17 04:52:47 +00:00
2019-12-24 16:27:51 -08:00
2020-11-24 15:12:54 +02:00
2021-02-12 08:13:50 -05:00
2019-04-17 04:52:47 +00:00
2019-12-24 15:57:33 -08:00
2019-12-24 15:57:33 -08:00
2019-12-24 15:57:33 -08:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2021-02-02 08:09:39 +02:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-04-20 11:55:49 -07:00
2020-04-20 11:55:49 -07:00
2021-03-05 09:57:56 +00:00
2020-05-13 13:50:09 +01:00
2021-02-05 12:51:03 +01:00
2019-11-24 21:21:55 +00:00
2021-02-12 08:13:50 -05:00
2021-02-12 08:13:50 -05:00
2021-02-12 08:13:50 -05:00
2021-03-04 17:21:32 -05:00
2021-02-15 13:47:05 +00:00
2020-11-23 20:00:58 -05:00
2019-05-30 18:19:35 +00:00
2020-10-08 08:28:58 +01:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-17 01:03:49 +03:00
2019-09-09 20:54:13 +00:00
2019-04-17 04:52:47 +00:00
2020-12-07 21:48:21 -08:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-02-14 21:12:34 +09:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-02-14 21:12:34 +09:00
2020-12-17 01:03:49 +03:00
2020-12-30 00:48:11 +03:00
2021-02-14 21:12:34 +09:00
2019-12-24 15:57:33 -08:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2021-02-12 08:13:50 -05:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2019-11-09 20:52:25 +02:00
2021-02-12 08:13:50 -05:00
2019-04-17 04:52:47 +00:00
2020-07-29 10:23:07 -07:00
2021-02-12 08:13:50 -05:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-02-12 08:13:50 -05:00
2020-12-28 10:13:28 -08:00
2020-12-07 21:48:21 -08:00
2019-04-17 04:52:47 +00:00
2019-04-22 09:53:26 +00:00
2020-08-26 16:55:25 +01:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-01-08 10:49:44 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-02-15 13:47:05 +00:00
2021-02-17 21:37:08 -05:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2021-01-20 11:48:48 +00:00
2020-12-30 04:21:04 +09:00
2020-12-02 13:23:43 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-12-20 14:48:53 +02:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-07-24 12:14:27 -07:00
2020-07-24 12:14:27 -07:00
2021-01-19 20:09:42 +01:00
2019-08-06 06:08:48 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-06-17 17:20:08 +00:00
2020-07-30 19:40:29 -07:00
2019-04-17 04:52:47 +00:00
2019-12-20 14:48:53 +02:00
2019-04-25 04:49:48 +00:00
2021-01-08 10:49:44 +00:00
2020-12-02 10:09:56 -05:00
2021-01-08 10:49:44 +00:00
2021-01-21 21:08:54 -08:00
2020-12-30 04:21:04 +09:00
2021-02-22 09:44:25 +00:00
2021-02-22 09:44:25 +00:00
2021-02-22 09:44:25 +00:00
2019-04-17 04:52:47 +00:00
2020-12-07 21:48:21 -08:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-07-07 22:12:01 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-05-13 13:50:09 +01:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-05-08 18:50:07 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-01-06 11:22:50 +09:00
2019-09-03 09:33:55 +00:00
2021-01-06 11:22:50 +09:00
2020-03-30 10:14:14 -07:00
2020-04-15 10:39:07 +03:00
2020-06-09 18:30:56 +00:00
2020-12-30 04:21:04 +09:00
2021-03-01 10:48:04 +00:00
2021-02-14 21:12:34 +09:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2019-04-17 04:52:47 +00:00
2019-06-12 13:15:59 +00:00
2021-02-14 21:12:34 +09:00
2021-02-12 08:13:50 -05:00
2021-02-14 21:12:34 +09:00
2020-10-11 16:58:34 +01:00
2021-02-12 08:13:50 -05:00
2021-02-19 14:01:57 -05:00
2019-12-20 14:48:53 +02:00
2021-02-12 08:13:50 -05:00
2021-01-01 13:54:41 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2020-05-13 13:50:09 +01:00
2020-10-07 18:57:07 +01:00
2019-12-24 15:57:33 -08:00
2019-04-17 04:52:47 +00:00
2020-11-16 14:48:09 -05:00
2021-03-01 10:48:04 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2021-01-08 10:49:44 +00:00
2021-01-08 10:49:44 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-12-24 15:57:33 -08:00
2021-02-12 08:13:50 -05:00
2019-04-17 04:52:47 +00:00
2021-02-24 10:36:02 +00:00
2021-03-01 10:48:04 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-06-26 20:41:37 -07:00
2019-04-17 04:52:47 +00:00
2020-08-26 16:55:25 +01:00
2020-07-30 14:28:08 +01:00
2020-12-17 01:03:49 +03:00
2020-10-31 00:25:32 -07:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-06-19 10:50:47 +00:00
2020-12-01 11:30:34 +00:00
2019-04-17 04:52:47 +00:00
2020-08-26 16:55:25 +01:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2019-04-17 04:52:47 +00:00
2020-12-30 04:21:04 +09:00
2020-05-13 13:50:09 +01:00
2020-12-17 01:03:49 +03:00
2020-04-30 15:47:21 -04:00
2020-06-26 20:41:37 -07:00
2019-04-17 04:52:47 +00:00
2020-06-12 10:31:18 +01:00
2021-02-16 09:04:10 +00:00
2019-04-17 04:52:47 +00:00
2021-02-22 09:44:25 +00:00
2019-06-12 13:15:59 +00:00
2019-04-17 04:52:47 +00:00