David Green
ded8187e35
[VectorCombine] Try to reduce shuffle cost for commutative reduction operands
...
Given a shuffle feeding a commutative reduction, the lane ordering of
the shuffle will not alter the result. This is also true if there are a
number of operations between the reduction and the shuffle, providing
they only operate lane-wise. This patch searches for cases like that in
Vector Combine, allowing us to check the cost of the shuffle vs an
in-order identity shuffle and replace the order if possible. This only
handles a single shuffle at the moment to keep things simple, and is
able to ignore splats that produce results where every result is the
same.
This is a more powerful version of a combine that already happens in
instrcombine, capable of optimizing more cases by looking through more
instructions and being able to cost the shuffle.
Differential Revision: https://reviews.llvm.org/D123494
2022-04-28 19:46:12 +01:00
..
2022-02-25 07:57:35 +03:00
2022-04-28 09:42:58 -07:00
2022-04-09 00:03:09 +00:00
2022-04-17 12:48:49 -05:00
2022-01-11 11:31:08 -08:00
2022-03-31 19:15:52 +07:00
2022-04-12 16:50:50 +01:00
2022-03-14 10:09:59 -07:00
2021-11-27 09:52:55 +01:00
2022-04-26 13:56:32 +01:00
2022-04-21 15:32:46 +08:00
2022-02-23 00:11:20 +04:00
2022-03-25 09:36:50 -05:00
2022-04-12 16:21:04 -07:00
2021-12-24 10:27:03 -05:00
2022-04-26 11:58:16 -07:00
2022-04-15 11:26:24 +02:00
2022-04-14 13:30:56 +08:00
2022-04-04 10:18:39 +02:00
2022-04-03 14:42:59 +02:00
2022-01-06 14:23:51 +01:00
2022-04-27 07:28:25 +01:00
2022-04-14 19:12:14 -07:00
2022-02-17 19:41:46 -08:00
2022-04-27 19:00:44 -07:00
2022-04-28 09:32:05 +02:00
2022-03-30 20:17:53 -07:00
2022-04-21 10:46:34 +02:00
2021-11-16 22:48:45 +00:00
2022-04-23 14:08:47 +01:00
2022-04-28 11:10:55 +08:00
2022-04-19 22:26:10 -07:00
2022-04-26 20:20:10 +08:00
2022-04-28 19:24:45 +01:00
2021-12-02 03:53:50 -08:00
2022-04-15 17:44:32 -07:00
2021-11-08 22:29:08 +08:00
2021-11-29 15:23:34 -08:00
2022-04-16 15:47:52 -05:00
2022-01-26 13:42:21 +07:00
2022-04-22 21:37:08 +01:00
2022-04-15 13:42:46 -05:00
2022-04-15 12:40:12 -07:00
2022-02-11 13:56:35 -08:00
2022-04-03 11:52:38 +02:00
2022-04-04 00:21:26 +02:00
2022-04-25 17:35:28 +07:00
2022-04-06 15:31:56 -04:00
2022-04-22 23:16:20 -07:00
2021-11-29 15:23:34 -08:00
2022-01-11 11:31:08 -08:00
2022-03-18 08:54:44 +00:00
2022-04-28 14:21:56 +01:00
2022-04-11 14:33:24 -04:00
2021-12-15 15:58:05 +00:00
2022-01-11 11:31:08 -08:00
2022-04-28 16:46:00 +02:00
2022-01-20 10:22:21 +00:00
2022-04-08 09:31:11 +02:00
2022-03-23 18:36:55 -07:00
2022-03-25 09:36:50 -05:00
2022-04-14 13:30:56 +08:00
2021-12-20 12:55:32 -08:00
2022-02-08 17:16:15 +01:00
2022-04-04 10:19:51 +02:00
2022-03-04 11:39:11 +01:00
2022-03-14 17:22:24 +01:00
2022-04-27 10:45:39 +01:00
2022-03-25 09:36:50 -05:00
2022-04-17 12:48:49 -05:00
2022-04-05 22:30:50 +03:00
2022-04-27 10:27:25 -07:00
2022-04-27 12:09:01 +01:00
2021-11-08 21:19:07 -08:00
2022-02-04 12:20:10 +03:00
2022-02-17 12:05:05 +01:00
2022-04-28 17:22:11 +07:00
2022-04-20 18:29:40 +00:00
2022-04-03 11:52:38 +02:00
2022-04-26 12:41:41 +01:00
2022-02-18 16:10:56 +00:00
2022-04-27 21:36:53 +01:00
2022-04-20 15:56:20 +02:00
2022-04-07 16:35:05 +02:00
2022-04-28 10:04:41 -07:00
2022-04-25 18:13:23 +01:00
2022-02-18 16:10:56 +00:00
2022-04-14 13:30:56 +08:00
2022-02-14 11:27:35 -08:00
2021-12-10 12:21:37 -08:00
2022-03-03 11:47:37 +00:00
2022-04-14 13:30:56 +08:00
2022-04-21 13:58:17 +02:00
2022-04-28 19:46:12 +01:00
2022-04-05 18:48:23 -07:00