Sanjay Patel
6e2053983e
[InstCombine] fold lshr(mul X, SplatC), C2
...
This is a special-case multiply that replicates bits of
the source operand. We need this fold to avoid regression
if we make canonicalization to `mul` more aggressive for
shl+or patterns.
I did not see a way to make Alive generalize the bit width
condition for even-number-of-bits only, but an example of
the proof is:
Name: i32
Pre: isPowerOf2(C1 - 1) && log2(C1) == C2 && (C2 * 2 == width(C2))
%m = mul nuw i32 %x, C1
%t = lshr i32 %m, C2
=>
%t = and i32 %x, C1 - 2
Name: i14
%m = mul nuw i14 %x, 129
%t = lshr i14 %m, 7
=>
%t = and i14 %x, 127
https://rise4fun.com/Alive/e52
2021-02-10 15:02:31 -05:00
..
2020-12-28 08:58:15 +09:00
2020-12-30 22:36:08 +09:00
2020-12-28 08:58:15 +09:00
2021-01-13 09:39:19 +08:00
2020-12-17 01:03:49 +03:00
2020-12-17 01:03:49 +03:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-11-20 17:58:26 -05:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-11-20 14:00:46 -05:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-11-20 14:00:46 -05:00
2020-12-17 01:03:49 +03:00
2020-12-17 01:03:49 +03:00
2020-09-11 17:23:08 -07:00
2020-10-27 14:42:53 +03:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-12-24 00:06:09 +03:00
2021-01-22 13:36:04 -05:00
2021-01-22 13:36:04 -05:00
2021-01-06 20:41:37 +01:00
2020-11-15 15:43:34 -05:00
2020-12-17 22:02:33 +08:00
2020-09-19 21:07:54 +02:00
2020-11-20 17:58:26 -05:00
2020-09-19 21:07:54 +02:00
2020-09-19 21:07:54 +02:00
2021-02-09 12:38:06 -05:00
2021-01-12 21:50:41 +01:00
2020-10-07 20:59:31 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-12-24 21:20:49 +03:00
2021-01-12 21:50:41 +01:00
2020-12-17 15:20:23 +00:00
2021-02-04 00:24:02 +09:00
2020-12-01 09:58:11 -05:00
2021-01-17 17:06:14 +01:00
2020-10-26 10:50:05 +01:00
2021-02-10 01:32:00 +01:00
2020-12-30 23:50:37 +09:00
2020-09-19 21:07:54 +02:00
2021-02-10 01:32:00 +01:00
2020-10-06 00:00:30 +03:00
2021-01-12 21:50:41 +01:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-10-01 13:44:31 -04:00
2020-10-23 15:39:57 +01:00
2020-12-17 01:03:49 +03:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-09-30 16:01:08 +01:00
2020-12-30 23:50:37 +09:00
2020-10-27 13:43:54 +00:00
2020-12-22 10:56:31 +01:00
2020-10-12 17:55:00 +02:00
2020-10-12 17:55:00 +02:00
2021-01-20 11:31:23 +09:00
2020-12-18 21:18:14 +03:00
2020-11-20 17:58:26 -05:00
2020-11-20 14:00:46 -05:00
2020-11-16 20:39:46 -08:00
2021-02-04 00:24:02 +09:00
2021-01-12 21:50:41 +01:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2020-12-09 11:08:41 +00:00
2020-12-30 22:36:08 +09:00
2020-10-06 07:39:00 -07:00
2020-12-28 08:58:15 +09:00
2020-12-18 20:55:26 +01:00
2020-10-26 16:48:56 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-10-21 15:07:04 -07:00
2020-10-21 15:07:04 -07:00
2021-01-23 16:05:14 +00:00
2020-12-18 20:55:26 +01:00
2020-11-20 14:00:46 -05:00
2020-10-23 08:43:45 -04:00
2020-12-28 16:06:20 -05:00
2020-12-18 21:18:14 +03:00
2020-09-21 12:12:25 -07:00
2021-01-06 17:14:59 +00:00
2021-01-12 21:50:41 +01:00
2020-09-21 16:38:37 -07:00
2021-01-03 20:52:45 +01:00
2020-09-29 11:06:25 -04:00
2021-01-12 21:50:41 +01:00
2020-09-22 17:54:25 -07:00
2020-10-06 07:39:00 -07:00
2020-10-22 10:00:13 -07:00
2021-01-07 10:10:14 +09:00
2021-01-07 10:10:14 +09:00
2020-10-12 17:55:00 +02:00
2020-12-30 23:50:37 +09:00
2021-01-12 21:50:41 +01:00
2020-12-03 09:23:37 -08:00
2020-10-08 10:46:34 -04:00
2020-12-24 11:46:17 +09:00
2020-10-06 17:08:46 +02:00
2020-10-06 07:39:00 -07:00
2021-01-12 21:50:41 +01:00
2020-10-14 11:58:37 +01:00
2020-11-08 12:58:30 +00:00
2021-01-06 17:17:07 +00:00
2020-10-27 14:42:53 +03:00
2020-09-19 21:07:54 +02:00
2020-12-30 04:21:04 +09:00
2020-12-30 04:21:04 +09:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2021-02-02 17:56:43 +03:00
2020-12-29 16:28:18 +03:00
2020-12-29 17:09:31 +09:00
2020-10-20 12:41:49 -07:00
2021-01-12 21:50:41 +01:00
2021-01-03 20:52:45 +01:00
2021-01-12 21:50:41 +01:00
2020-09-07 12:40:37 -04:00
2020-09-29 11:06:25 -04:00
2021-01-11 15:53:39 -05:00
2020-12-29 17:09:31 +09:00
2021-02-04 00:24:02 +09:00
2020-10-06 07:39:00 -07:00
2021-01-03 20:52:45 +01:00
2021-01-03 20:52:45 +01:00
2020-12-28 08:58:15 +09:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-11-20 20:08:43 -05:00
2020-10-11 20:24:28 +03:00
2021-01-26 13:26:06 -08:00
2020-12-24 21:20:50 +03:00
2020-12-24 21:20:50 +03:00
2021-01-12 21:50:41 +01:00
2020-12-26 15:48:04 +01:00
2020-10-27 14:42:53 +03:00
2020-10-11 20:24:28 +03:00
2020-10-11 20:24:28 +03:00
2020-12-24 12:36:56 +01:00
2020-09-19 21:07:54 +02:00
2020-10-06 00:00:30 +03:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2021-02-09 12:38:06 -05:00
2020-09-29 11:06:25 -04:00
2021-02-10 15:02:31 -05:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-12-18 21:18:14 +03:00
2021-01-22 17:27:36 -08:00
2021-01-22 17:27:36 -08:00
2020-11-20 14:00:46 -05:00
2020-11-08 13:33:21 +00:00
2021-01-22 17:27:36 -08:00
2021-01-22 17:27:36 -08:00
2021-01-21 08:13:26 -05:00
2021-01-22 17:27:36 -08:00
2021-01-22 17:27:36 -08:00
2021-01-12 21:50:41 +01:00
2020-09-29 11:06:25 -04:00
2020-12-28 08:58:15 +09:00
2020-12-18 20:55:26 +01:00
2021-02-01 13:44:13 -05:00
2020-12-29 17:09:31 +09:00
2020-11-06 11:35:54 +00:00
2020-11-08 13:34:07 +00:00
2021-01-24 13:55:50 +01:00
2020-10-06 00:00:30 +03:00
2021-01-23 16:05:14 +00:00
2020-12-29 17:09:31 +09:00
2020-12-29 17:09:31 +09:00
2020-11-20 17:58:26 -05:00
2021-01-12 21:50:41 +01:00
2020-10-12 17:55:00 +02:00
2021-01-12 21:50:41 +01:00
2020-09-25 22:03:10 +01:00
2021-01-12 21:50:41 +01:00
2020-12-24 21:20:50 +03:00
2021-01-16 16:31:23 +01:00
2021-01-06 20:41:37 +01:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2020-12-10 13:10:26 -05:00
2021-01-06 20:41:37 +01:00
2020-09-29 15:22:10 +07:00
2020-09-22 18:58:05 -04:00
2020-09-22 14:23:32 -04:00
2020-09-22 18:58:05 -04:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-10-13 09:28:39 +01:00
2020-12-18 20:55:26 +01:00
2020-09-29 11:06:25 -04:00
2020-10-20 12:41:49 -07:00
2020-09-07 10:44:08 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-12-24 11:46:17 +09:00
2020-09-29 11:06:25 -04:00
2020-10-11 20:24:28 +03:00
2020-12-18 20:55:26 +01:00
2021-01-12 21:50:41 +01:00
2020-12-17 22:02:33 +08:00
2021-01-12 21:50:41 +01:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2021-01-03 20:52:45 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-10-26 11:22:41 +00:00
2020-12-09 18:19:09 +03:00
2020-12-29 17:09:31 +09:00
2021-01-03 20:52:45 +01:00
2021-01-03 20:52:45 +01:00
2020-10-20 11:57:19 +02:00
2020-09-29 11:06:25 -04:00
2020-12-24 00:06:09 +03:00
2021-01-19 18:04:23 +01:00
2021-01-19 20:26:38 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-12-29 17:09:31 +09:00
2021-01-12 21:50:41 +01:00
2021-02-04 00:24:02 +09:00
2021-01-19 20:26:38 +01:00
2021-01-12 21:50:41 +01:00
2021-01-12 21:50:41 +01:00
2020-12-01 16:54:00 +03:00
2021-02-04 00:24:02 +09:00
2021-02-04 00:24:02 +09:00
2020-09-29 11:06:25 -04:00
2020-10-08 22:07:51 +01:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-10-08 22:07:51 +01:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-10-09 14:25:12 +01:00
2021-02-09 12:38:06 -05:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-20 12:55:24 -04:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-12-29 17:09:31 +09:00
2020-12-30 04:21:04 +09:00
2020-12-30 04:21:04 +09:00
2020-12-29 17:09:31 +09:00
2020-12-29 17:09:31 +09:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2021-01-12 21:50:41 +01:00
2020-09-29 11:06:25 -04:00
2021-02-09 12:38:06 -05:00
2021-01-12 21:50:41 +01:00
2020-10-11 09:04:24 -04:00
2020-11-20 00:31:27 +03:00
2021-01-22 17:23:54 +03:00
2021-01-22 17:23:54 +03:00
2020-12-18 20:55:26 +01:00
2020-12-18 20:55:26 +01:00
2020-09-29 11:06:25 -04:00
2020-09-16 10:56:38 +07:00
2020-12-24 12:36:56 +01:00
2021-01-22 17:27:36 -08:00
2021-01-22 17:27:36 -08:00
2020-09-29 11:06:25 -04:00
2021-01-22 17:27:36 -08:00
2020-12-01 09:58:11 -05:00
2020-12-01 09:58:11 -05:00
2020-11-24 13:56:30 -05:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-10-08 15:53:38 -04:00
2020-12-31 15:04:32 +01:00
2020-10-28 21:52:12 +00:00
2020-12-29 17:09:31 +09:00
2020-12-17 22:02:33 +08:00
2020-12-29 17:09:31 +09:00
2020-11-08 13:33:21 +00:00
2020-10-13 14:35:18 +01:00
2020-12-28 08:58:15 +09:00
2020-12-30 04:21:04 +09:00
2020-12-30 04:21:04 +09:00
2020-12-24 11:46:17 +09:00
2020-12-18 20:55:26 +01:00
2020-12-18 20:55:26 +01:00
2021-01-12 21:50:41 +01:00
2020-12-24 21:20:50 +03:00
2020-12-24 21:20:50 +03:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2020-09-29 11:06:25 -04:00
2021-01-20 11:31:23 +09:00
2020-09-29 11:06:25 -04:00
2021-01-12 21:50:41 +01:00
2020-09-29 11:06:25 -04:00
2020-12-29 17:09:31 +09:00
2020-12-28 08:58:15 +09:00
2020-12-24 11:46:17 +09:00
2020-12-29 17:09:31 +09:00
2020-12-29 17:09:31 +09:00
2020-12-30 04:21:04 +09:00
2020-12-30 04:21:04 +09:00
2020-12-29 17:09:31 +09:00
2020-12-15 21:14:59 +08:00
2020-12-29 17:09:31 +09:00
2021-01-04 00:43:02 +09:00
2021-01-04 00:43:02 +09:00
2020-12-28 08:58:15 +09:00
2020-12-28 08:58:15 +09:00
2020-12-29 17:09:31 +09:00
2020-10-07 10:36:44 -07:00
2021-01-03 20:52:45 +01:00
2021-01-03 20:52:45 +01:00
2020-09-10 16:16:44 +02:00
2020-12-30 04:21:04 +09:00
2020-12-29 17:09:31 +09:00
2020-11-24 12:03:27 +00:00
2020-12-29 17:09:31 +09:00
2020-11-17 16:16:51 +00:00
2021-01-12 21:50:41 +01:00
2020-09-22 18:58:05 -04:00
2021-01-03 18:51:49 +01:00
2020-12-24 21:20:50 +03:00
2020-10-17 12:20:18 -04:00
2021-02-09 12:38:06 -05:00