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
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-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
2022-10-20 14:30:01 +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-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
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
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
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
2022-10-07 11:50:43 -07:00
2022-10-07 11:50:43 -07:00
2022-05-21 16:01:38 +01:00
2022-09-04 22:26:18 +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
2022-10-07 14:54:34 -07: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-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
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
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
2022-03-13 17:15:24 +00: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
2022-09-21 15:43:25 +01:00
2022-04-04 01:15:30 +02: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
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
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