Roman Lebedev
8e37b53360
[X86] Rewrite getScalarizationOverhead()
...
All of our insert/extract ops work on 128-bit lanes.
For `Insert`, we need to extract affected 128-bit lane,
unless it's being fully overwritten (FIXME: do we need to be
careful about legalization-induced padding that we obviously don't demand?),
perform insertions, and then insert the 128-bit lane back.
But hold on. If we are operating on an 256-bit legal vector,
and thus have two 128-bit subvectors, and are fully overwriting them both,
we don't actually need to insert *both* subvectors,
only the second one, into the implicitly-widened first one.
Also, `Insert` wasn't actually querying the costs,
but just assuming them to be `1`.
`getShuffleCost(TTI::SK_ExtractSubvector)` notes:
```
// Note that in general, the insertion starting at the beginning of a vector
// isn't free, because we need to preserve the rest of the wide vector.
```
... so as far as i can tell, we didn't account for that.
I was hoping this would allow vectorization at a higher VF at one case i looked at,
but the subvector insertion cost is still dis-advising that.
The change for `Extract` is NFC, and is for consistency only,
i wanted to get rid of of that weird explicit discounting of insertion of 0'th element,
since the general code should already deal with that.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D137913
2022-11-15 21:07:12 +03:00
..
2022-11-13 22:06:20 +00:00
2022-07-23 22:32:30 +01:00
2022-10-24 19:38:19 +01:00
2021-02-01 12:14:59 +00:00
2022-10-07 14:54:34 -07:00
2022-11-02 13:55:21 -07:00
2022-07-23 22:32:30 +01:00
2022-11-15 21:07:12 +03:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-07-23 21:50:11 +01:00
2022-03-09 17:50:34 -05:00
2022-10-07 14:54:34 -07:00
2022-05-22 20:11:47 +01:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-09-19 09:57:37 -07:00
2022-04-28 16:46:00 +02:00
2022-06-22 10:49:27 +07:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-01-05 10:46:06 +00:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-05-20 09:58:40 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-05-21 16:01:38 +01:00
2022-04-28 16:46:00 +02:00
2022-08-18 19:15:52 +01:00
2022-10-03 18:47:51 +00:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-09-08 09:15:54 -07:00
2022-10-20 14:30:01 +01:00
2022-04-28 16:46:00 +02:00
2021-02-12 08:13:50 -05:00
2022-10-20 14:30:01 +01:00
2022-04-28 16:46:00 +02:00
2020-11-23 20:00:58 -05:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-07-18 12:06:17 +01:00
2022-05-16 15:27:22 +01:00
2022-04-28 16:46:00 +02:00
2022-10-07 14:54:34 -07:00
2021-10-18 16:48:10 -07:00
2020-12-17 01:03:49 +03:00
2022-04-04 01:15:30 +02:00
2022-10-21 08:54:11 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-09-20 16:44:41 +01:00
2022-07-06 10:11:34 +02:00
2022-10-20 14:30:01 +01:00
2022-04-04 01:15:30 +02:00
2022-10-20 14:30:01 +01:00
2021-02-14 21:12:34 +09:00
2021-05-24 19:43:40 +02:00
2022-04-28 16:46:00 +02:00
2022-06-09 12:05:37 +01:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-07 23:21:21 +02:00
2022-09-20 16:44:41 +01:00
2022-08-31 13:24:49 +01:00
2022-04-28 16:46:00 +02:00
2022-10-20 14:30:01 +01:00
2020-12-30 04:21:04 +09:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-10-29 19:45:19 +01:00
2022-10-29 15:05:20 -07:00
2021-06-17 09:38:28 +02:00
2022-10-07 11:50:43 -07:00
2022-10-07 11:50:43 -07:00
2021-03-17 17:03:47 +01:00
2022-05-21 16:01:38 +01:00
2022-09-04 22:26:18 +01:00
2021-08-05 14:39:08 +01:00
2022-06-23 13:36:02 +02:00
2022-03-07 19:32:37 +03:00
2022-09-19 09:57:37 -07:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-10-01 15:44:27 +01:00
2021-12-20 16:23:29 +00:00
2021-09-15 10:45:50 +01:00
2021-02-17 21:37:08 -05:00
2022-10-07 14:54:34 -07:00
2022-05-16 15:27:22 +01:00
2021-10-18 18:03:09 +01:00
2020-12-02 13:23:43 +00:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-05-16 15:27:22 +01:00
2022-04-04 01:15:30 +02:00
2022-10-07 14:54:34 -07:00
2022-10-07 14:54:34 -07:00
2022-04-04 01:15:30 +02:00
2022-03-07 19:32:37 +03:00
2022-10-01 15:44:27 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-09-19 18:14:35 +01:00
2022-03-07 19:32:37 +03:00
2022-05-21 16:01:38 +01:00
2022-04-04 01:15:30 +02:00
2022-05-20 09:58:40 +01:00
2022-09-19 09:57:37 -07:00
2021-06-07 10:47:52 +01:00
2022-09-19 11:01:41 -07:00
2022-09-19 11:01:41 -07:00
2022-04-28 16:46:00 +02:00
2022-09-19 09:57:37 -07:00
2022-04-28 16:46:00 +02:00
2022-10-12 12:49:42 +01:00
2022-09-08 14:27:58 +01:00
2022-11-14 15:50:38 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-09-22 08:53:46 -07:00
2022-06-09 15:20:10 +01:00
2022-04-28 16:46:00 +02:00
2022-10-20 14:30:01 +01:00
2022-08-18 07:14:04 -07:00
2022-09-22 08:53:46 -07:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-06-23 13:36:02 +02:00
2022-05-21 16:01:38 +01:00
2022-10-07 14:54:34 -07:00
2022-04-28 16:46:00 +02:00
2022-11-04 10:39:37 -04:00
2022-07-23 21:50:11 +01:00
2022-07-23 21:50:11 +01:00
2022-07-23 21:50:11 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-08-21 09:42:14 -04:00
2022-04-28 16:46:00 +02:00
2022-09-08 09:15:54 -07:00
2022-10-03 14:54:17 +01:00
2021-05-11 14:32:34 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-10-07 14:54:34 -07:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-05-16 15:27:22 +01:00
2022-05-16 15:27:22 +01:00
2022-10-07 11:50:43 -07:00
2022-08-26 20:39:52 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2021-08-10 08:27:43 +01:00
2022-03-13 17:15:24 +00:00
2021-08-06 10:13:15 +01:00
2022-05-16 15:27:22 +01:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2022-04-04 01:15:30 +02:00
2021-10-27 22:21:37 +03:00
2022-09-21 15:43:25 +01:00
2022-04-04 01:15:30 +02:00
2021-11-18 14:08:57 +00:00
2022-07-12 09:40:49 +02:00
2022-10-20 14:30:01 +01:00
2022-04-28 16:46:00 +02:00
2022-08-14 17:44:11 +01:00
2022-04-28 16:46:00 +02:00
2022-06-09 12:05:37 +01:00
2022-09-29 20:49:56 +01:00
2022-10-07 14:54:34 -07:00
2022-10-20 14:30:01 +01:00
2022-10-07 11:50:43 -07:00
2022-04-28 16:46:00 +02:00
2022-07-23 21:50:11 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2021-06-07 10:47:52 +01:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-04-28 16:46:00 +02:00
2022-08-29 14:16:54 -07:00
2022-06-09 12:05:37 +01:00
2022-03-07 19:32:37 +03:00
2022-05-19 12:28:01 +08:00
2021-12-13 16:56:22 -08:00
2022-01-24 13:04:09 +00:00
2022-08-31 14:01:42 +01:00
2022-08-16 12:21:49 +01:00
2022-04-28 16:46:00 +02:00
2022-04-04 01:15:30 +02:00
2022-10-07 14:54:34 -07:00
2022-09-01 13:14:40 +01:00
2022-04-04 01:15:30 +02:00
2022-06-03 11:48:31 +01:00
2022-10-21 08:54:11 +01:00
2022-06-03 11:48:31 +01:00
2022-10-21 08:54:11 +01:00
2022-09-19 11:01:41 -07:00
2022-09-19 11:01:41 -07:00
2022-04-04 01:15:30 +02:00
2022-04-28 16:46:00 +02:00