Craig Topper
acb413fc74
[RISCV] Custom lower ISD::VSCALE.
...
This patch custom lowers ISD::VSCALE into a csrr vlenb followed
by a shift right by 3 followed by a multiply by the scale amount.
I've added computeKnownBits support to indicate that the csrr vlenb
always produces 3 trailng bits of 0s so the shift right is "exact".
This allows the shift and multiply sequence to be nicely optimized
into a single shift or removed completely when the scale amount is
a power of 2.
The non power of 2 case multiplying by 24 is still producing
suboptimal code. We could remove the right shift and use a
multiply by 3. Hopefully we can improve DAG combine to fix that
since it's not unique to this sequence.
This replaces D94144.
Reviewed By: HsiangKai
Differential Revision: https://reviews.llvm.org/D94249
2021-01-13 17:14:49 -08:00
..
2019-08-20 22:53:24 +00:00
2019-10-28 09:54:33 +00:00
2021-01-13 17:14:49 -08:00
2019-09-17 11:15:35 +00:00
2020-07-07 18:57:28 -07:00
2019-09-17 11:15:35 +00:00
2019-09-17 11:15:35 +00:00
2020-07-10 18:33:12 -07:00
2020-12-18 21:03:37 +00:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2019-08-06 00:24:00 +00: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-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2020-03-31 16:16:19 +08:00
2019-09-17 11:15:35 +00:00
2020-08-21 11:38:42 +01:00
2020-08-17 13:09:26 +01:00
2020-08-17 20:44:33 +02:00
2021-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00: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
2020-11-03 03:55:47 +00:00
2020-12-09 19:42:49 +00:00
2019-11-05 09:39:06 +00:00
2020-12-09 19:42:49 +00:00
2020-11-25 15:07:34 -08:00
2019-09-17 11:15:35 +00:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00: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
2020-12-09 19:42:49 +00:00
2020-12-10 09:15:52 -08:00
2020-12-30 15:28:11 -08:00
2020-12-09 19:42:49 +00:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2019-07-17 14:04:48 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-07-20 10:39:04 +01:00
2020-07-20 10:39:04 +01:00
2020-11-25 15:07:34 -08:00
2020-12-09 19:42:49 +00:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00: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
2020-12-09 19:42:49 +00:00
2020-12-10 09:15:52 -08:00
2020-12-30 15:28:11 -08:00
2021-01-12 10:45:03 -08:00
2020-12-30 15:28:11 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-05-11 19:20:38 +01:00
2020-12-09 19:42:49 +00: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
2020-12-09 19:42:49 +00:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2021-01-12 10:45:03 -08:00
2020-12-03 09:16:33 +08:00
2020-12-02 20:31:43 -08:00
2020-12-10 09:15:52 -08:00
2020-12-30 15:28:11 -08:00
2021-01-12 10:45:03 -08:00
2020-12-09 19:42:49 +00:00
2020-02-11 22:45:15 +08:00
2019-09-17 11:15:35 +00:00
2020-10-22 11:36:34 +01: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
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
2020-12-22 15:05:54 +00:00
2020-12-09 19:42:49 +00: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-01-09 10:37:21 +08:00
2020-11-20 17:58:26 -05:00
2020-11-25 14:54:26 -08: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
2020-07-14 11:15:01 +01:00
2019-07-05 12:35:21 +00:00
2020-12-09 19:42:49 +00: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
2020-12-09 19:42:49 +00:00
2021-01-12 21:24:38 +00:00
2021-01-12 21:24:38 +00:00
2020-12-07 10:28:04 -08:00
2021-01-12 21:24:38 +00:00
2021-01-12 21:24:38 +00:00
2020-12-09 19:42:49 +00:00
2020-12-04 18:40:02 -08:00
2020-12-04 18:40:02 -08:00
2020-12-04 18:40:02 -08: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
2019-08-06 00:24:00 +00:00
2020-12-09 19:42:49 +00:00
2019-09-17 11:15:35 +00:00
2019-08-06 00:24:00 +00:00
2020-08-17 20:44:33 +02:00
2020-12-09 19:42:49 +00:00
2021-01-05 10:41:08 -08:00
2020-12-07 10:28:04 -08:00
2020-12-08 12:22:40 -08:00
2021-01-12 21:24:38 +00:00
2020-02-11 21:23:03 +00:00
2020-12-09 19:42:49 +00:00
2020-05-11 19:20:38 +01:00
2020-11-18 19:20:03 -08:00
2020-05-28 13:53:40 -07:00
2020-12-09 19:42:49 +00:00
2020-02-11 22:45:15 +08:00
2021-01-05 10:41:08 -08:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2019-11-14 18:29:50 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-01-09 16:51:09 +00:00
2021-01-09 16:51:09 +00:00
2020-12-09 19:42:49 +00:00
2020-01-22 08:12:28 -08:00
2020-11-20 17:58:26 -05: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
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2020-12-09 19:42:49 +00:00
2021-01-04 10:53:27 -08:00
2020-02-13 10:16:06 -08:00
2020-07-06 17:32:57 +01:00
2020-12-30 15:28:11 -08:00
2020-12-03 09:16:33 +08:00