Fraser Cormack
2b4a1d4b86
[RISCV] Improve codegen for shuffles with LHS/RHS splats
...
Shuffles which are broken into separate halves reveal splats in which
a half is accessed via one index; such operations can be optimized to
use "vrgather.vi".
This optimization could be achieved by adding extra patterns to match
`vrgather_vv_vl` which uses a splat as an index operand, but this patch
instead identifies splat earlier. This way, future optimizations can
build on top of the data gathered here, e.g., to splat-gather dominant
indices and insert any leftovers.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D107449
2021-08-09 10:31:40 +01:00
..
2019-08-20 22:53:24 +00:00
2019-10-28 09:54:33 +00:00
2021-08-09 10:31:40 +01:00
2021-07-20 09:22:06 -07:00
2021-04-26 13:26:17 +08:00
2019-09-17 11:15:35 +00:00
2019-09-17 11:15:35 +00:00
2021-08-07 17:11:11 -07:00
2020-12-18 21:03:37 +00:00
2021-06-29 09:45:13 -07:00
2021-08-04 12:45:18 -07:00
2020-12-09 19:42:49 +00:00
2021-06-27 10:33:43 -07:00
2021-04-11 13:59:51 -07:00
2021-07-19 09:25:28 -07:00
2020-11-25 21:57:48 -08:00
2020-12-09 19:42:49 +00:00
2019-09-30 07:58:50 +00:00
2019-09-17 11:15:35 +00:00
2021-06-03 11:34:35 -07:00
2020-12-09 19:42:49 +00:00
2021-01-27 20:46:10 -08:00
2021-05-20 20:34:23 +01:00
2021-01-30 07:20:05 +08:00
2020-08-21 11:38:42 +01:00
2020-08-17 13:09:26 +01:00
2021-03-15 11:32:43 -07:00
2021-06-27 12:37:29 -07:00
2020-12-09 19:42:49 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-04-02 10:18:08 -07:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-14 22:35:17 +00:00
2021-01-05 10:41:08 -08:00
2021-07-22 09:55:26 +01:00
2021-07-13 09:46:21 -07:00
2020-07-15 07:34:22 +00:00
2020-08-21 11:38:42 +01:00
2020-03-15 17:46:23 -07:00
2020-03-15 17:46:23 -07:00
2020-12-04 10:34:12 -08:00
2021-06-30 16:54:13 -04:00
2021-06-27 10:33:43 -07:00
2021-06-30 16:54:13 -04:00
2021-07-20 08:53:55 -07:00
2020-11-25 15:07:34 -08:00
2021-04-01 09:12:52 -07:00
2021-01-19 11:21:48 -08:00
2020-12-09 19:42:49 +00:00
2021-08-07 16:06:00 -07:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2020-05-11 19:20:38 +01:00
2021-07-06 11:43:22 -07:00
2020-12-10 09:15:52 -08:00
2021-07-20 09:22:06 -07:00
2020-12-09 19:42:49 +00:00
2021-01-14 13:41:40 -08:00
2021-01-25 16:37:21 -08:00
2019-07-17 14:04:48 +00:00
2021-05-11 11:29:45 -07:00
2020-12-09 19:42:49 +00:00
2021-07-22 09:55:26 +01:00
2020-12-09 19:42:49 +00:00
2021-06-17 09:51:09 -07:00
2021-06-17 09:51:09 -07:00
2020-11-25 15:07:34 -08:00
2021-04-01 09:12:52 -07:00
2021-01-19 11:21:48 -08:00
2021-08-07 16:06:00 -07:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2020-05-11 19:20:38 +01:00
2021-07-06 11:43:22 -07:00
2020-12-10 09:15:52 -08:00
2021-07-20 09:22:06 -07:00
2021-01-14 13:41:40 -08:00
2020-12-30 15:28:11 -08:00
2021-04-01 12:41:57 -07:00
2020-12-09 19:42:49 +00:00
2020-05-11 19:20:38 +01:00
2021-04-22 15:04:55 +07:00
2021-01-15 11:14:14 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-02-13 10:16:06 -08:00
2019-11-04 11:23:54 +00:00
2020-02-13 10:16:06 -08:00
2019-09-17 11:15:35 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-02 21:13:42 -08:00
2021-08-08 18:30:48 -07:00
2021-01-19 11:21:48 -08:00
2021-08-07 16:06:00 -07:00
2021-01-12 10:45:03 -08:00
2020-12-03 09:16:33 +08:00
2021-07-06 11:43:22 -07:00
2020-12-10 09:15:52 -08:00
2021-07-20 09:22:06 -07:00
2021-01-14 13:41:40 -08:00
2021-03-15 11:32:43 -07:00
2020-02-11 22:45:15 +08:00
2019-09-17 11:15:35 +00:00
2021-07-20 09:22:06 -07:00
2020-08-21 11:38:42 +01:00
2020-12-09 19:42:49 +00:00
2019-07-31 09:07:21 +00:00
2020-12-09 19:42:49 +00:00
2019-09-17 11:15:35 +00:00
2020-12-09 19:42:49 +00:00
2019-09-17 11:15:35 +00:00
2019-08-03 05:52:47 +00:00
2021-07-13 09:30:09 -07:00
2020-07-12 21:04:48 -07:00
2020-02-13 10:16:06 -08:00
2020-12-09 19:42:49 +00:00
2020-02-13 10:16:06 -08:00
2020-12-09 19:42:49 +00:00
2020-02-13 10:16:06 -08:00
2020-12-09 19:42:49 +00:00
2021-06-23 15:38:11 -07:00
2021-03-21 18:54:00 +08:00
2019-09-17 11:15:35 +00:00
2019-09-17 11:15:35 +00:00
2019-12-19 16:41:53 +00:00
2020-02-13 10:16:06 -08:00
2020-12-30 15:28:11 -08:00
2020-12-30 15:28:11 -08:00
2020-12-05 14:54:37 -08:00
2020-02-13 10:16:06 -08:00
2020-02-13 10:16:06 -08:00
2021-04-01 10:15:55 -07:00
2020-11-20 17:58:26 -05:00
2021-01-18 17:30:35 +00:00
2020-05-29 12:31:06 -07:00
2020-04-17 12:08:30 +00:00
2020-03-05 18:05:28 -08:00
2020-03-15 17:46:23 -07:00
2020-04-17 12:08:30 +00:00
2020-03-05 18:05:28 -08:00
2020-03-15 17:46:23 -07:00
2021-01-23 09:10:03 +00:00
2021-05-29 15:11:37 +01:00
2020-07-14 11:15:01 +01:00
2021-07-28 09:05:45 -07:00
2021-07-20 08:53:55 -07:00
2020-12-09 19:42:49 +00:00
2019-10-22 21:25:01 +01:00
2019-10-22 21:25:01 +01:00
2020-02-13 10:16:06 -08:00
2020-12-09 19:42:49 +00:00
2021-04-01 12:41:57 -07:00
2021-07-30 08:36:28 +08:00
2021-04-02 11:50:19 -07:00
[RISCV] Teach DAG combine to fold (and (select_cc lhs, rhs, cc, -1, c), x) -> (select_cc lhs, rhs, cc, x, (and, x, c))
2021-04-29 09:43:51 -07:00
2021-03-22 19:17:04 -07:00
2021-04-02 12:09:13 -07:00
2021-04-25 19:14:34 -07:00
2021-04-25 21:54:06 -07:00
2021-07-20 08:53:55 -07:00
2021-04-02 10:58:45 -07:00
2021-06-08 07:26:00 +08:00
[RISCV] Teach DAG combine to fold (and (select_cc lhs, rhs, cc, -1, c), x) -> (select_cc lhs, rhs, cc, x, (and, x, c))
2021-04-29 09:43:51 -07:00
2021-07-20 09:22:06 -07:00
2021-07-24 10:50:43 -07:00
2021-07-24 10:50:43 -07:00
2021-07-24 10:50:43 -07:00
2020-12-09 19:42:49 +00:00
2020-10-29 14:52:53 -07:00
2020-12-09 19:42:49 +00:00
2021-07-20 08:53:55 -07:00
2021-06-17 09:38:28 +02:00
2021-03-20 14:55:46 -07:00
2021-02-22 14:56:22 -08:00
2020-08-17 20:44:33 +02:00
2021-07-30 08:36:28 +08:00
2021-04-04 17:14:28 -07:00
2021-07-19 09:25:28 -07:00
2021-06-27 10:33:43 -07:00
2021-04-02 12:09:13 -07:00
2021-04-25 21:54:06 -07:00
2021-04-25 21:54:06 -07:00
2021-07-20 09:22:06 -07:00
2021-04-02 10:58:45 -07:00
2021-06-08 07:26:00 +08:00
2021-03-22 19:17:04 -07:00
2021-04-07 13:47:17 -07:00
2021-04-07 13:47:17 -07:00
2021-04-16 12:54:47 +08:00
2021-02-09 15:52:04 +08:00
2021-01-21 12:07:44 -08:00
2021-01-21 12:07:44 -08:00
2021-08-04 11:37:39 -07:00
2021-03-12 11:50:10 -08:00
2021-01-21 12:07:44 -08:00
2021-01-22 14:51:22 -08:00
2021-08-08 17:25:37 -07:00
2021-01-21 12:07:44 -08:00
2021-01-25 16:37:21 -08:00
2021-01-25 16:37:21 -08:00
2020-12-09 19:42:49 +00:00
2021-01-27 20:46:10 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-07-23 09:12:05 -07:00
2019-11-14 18:29:50 +00:00
2020-12-09 19:42:49 +00:00
2021-07-20 08:53:55 -07:00
2021-07-23 09:12:05 -07:00
2021-04-01 09:12:52 -07:00
2021-04-07 13:47:17 -07:00
2021-04-07 13:47:17 -07:00
2021-01-15 11:14:14 -08:00
2021-03-21 18:54:00 +08:00
2021-04-29 09:10:48 +01:00
2020-12-09 19:42:49 +00:00
2020-01-22 08:12:28 -08:00
2021-07-13 09:46:21 -07:00
2020-02-13 10:16:06 -08:00
2020-03-27 17:30:12 -07:00
2020-12-09 19:42:49 +00:00
2021-03-16 07:44:06 -07:00
2021-03-16 07:44:06 -07:00
2020-12-09 19:42:49 +00:00
2021-07-20 09:22:06 -07:00
2021-07-27 10:57:28 -07:00
2021-06-27 10:33:43 -07:00
2021-03-16 07:44:06 -07:00
2021-03-16 07:44:06 -07:00
2021-03-21 18:54:00 +08:00
2021-06-27 10:33:43 -07:00
2021-06-30 16:54:13 -04:00
2020-02-13 10:16:06 -08:00
2020-07-06 17:32:57 +01:00
2021-07-30 08:36:28 +08:00
2020-12-30 15:28:11 -08:00
2020-12-03 09:16:33 +08:00