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
2020-07-22 15:59:49 +02:00
2020-07-28 14:00:11 +00: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
2020-07-03 16:02:10 +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-07-28 09:09:13 -07:00
2020-09-11 17:23:08 -07:00
2020-08-15 12:14:57 +02: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-08-16 23:27:56 +03: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-08-22 09:38:13 -04: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
2020-07-03 11:42:16 +01: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-04-25 11:31:57 -04: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-07-16 16:09:08 +07: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-05-20 11:25:44 -07: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
2020-07-04 18:12:04 +03: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-08-12 09:08:17 -04:00
2020-06-04 15:10:55 +07:00
2020-10-06 07:39:00 -07:00
2020-05-18 09:52:02 -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-03 12:42:04 -04:00
2020-08-22 09:38:13 -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-08-16 08:53:47 -04: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
2020-06-11 11:13:46 +01:00
2021-01-06 17:14:59 +00:00
2021-01-12 21:50:41 +01:00
2020-06-09 17:31:55 +01:00
2020-09-21 16:38:37 -07:00
2020-07-30 14:16:48 -04: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-05-26 19:24:58 +07: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-08-18 09:23:07 -04:00
2020-06-25 11:35:38 -04:00
2020-05-26 19:24:58 +07:00
2020-06-30 19:56:37 +01:00
2020-12-30 23:50:37 +09:00
2020-09-02 08:23:48 -04:00
2020-07-14 14:20:39 -07: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-05-17 09:06:57 -04:00
2020-05-24 09:30:19 -04:00
2020-10-06 07:39:00 -07:00
2020-08-06 18:40:04 +09:00
2021-01-12 21:50:41 +01:00
2020-10-14 11:58:37 +01:00
2020-05-26 13:17:15 -04:00
2020-11-08 12:58:30 +00:00
2020-06-05 16:44:04 -07: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
2020-07-16 16:09:08 +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-07-04 11:16:23 -04:00
2020-09-07 12:40:37 -04:00
2020-04-25 11:31:57 -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-06-17 11:38:59 +01: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-09-04 10:40:35 -04:00
2020-12-24 21:20:50 +03:00
2020-12-24 21:20:50 +03:00
2020-05-15 19:41:07 +02: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-05-15 19:41:07 +02:00
2020-06-26 20:41:37 -07:00
2020-10-11 20:24:28 +03:00
2020-10-11 20:24:28 +03:00
2020-04-25 11:31:57 -04: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-07-01 09:22:32 -07: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
2020-04-24 12:14:03 -04:00
2020-04-24 12:14:03 -04:00
2020-05-15 19:41:07 +02:00
2020-05-15 19:41:07 +02:00
2021-01-22 17:27:36 -08:00
2021-01-22 17:27:36 -08:00
2020-05-15 19:41:07 +02: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
2020-05-15 19:41:07 +02: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-04-24 12:14:03 -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-04-24 12:14:03 -04:00
2020-12-29 17:09:31 +09:00
2020-09-05 12:37:45 +02: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
2020-08-11 11:05:42 +02:00
2021-01-23 16:05:14 +00:00
2020-12-29 17:09:31 +09:00
2020-04-23 17:47:37 -07: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
2020-05-22 14:33:42 +07: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-08-29 18:21:24 +03:00
2020-08-31 22:29:39 +03:00
2020-08-29 18:21:24 +03:00
2020-08-26 20:20:41 +03:00
2020-08-26 20:20:41 +03: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-07-13 22:32:33 +00:00
2020-09-22 18:58:05 -04:00
2020-05-04 10:54:07 +01:00
2020-09-22 14:23:32 -04:00
2020-05-19 17:06:05 +01: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-07-19 15:05:45 +02: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
2020-08-17 08:01:28 -04: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
2020-07-03 11:54:09 -04: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
2020-06-04 17:27:14 -04:00
2020-07-04 18:12:04 +03: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
2020-05-03 12:49:36 +02: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
2020-07-16 16:09:08 +07:00
2020-07-13 22:32:33 +00:00
2020-05-22 14:33:42 +07:00
2021-01-22 17:23:54 +03:00
2021-01-22 17:23:54 +03:00
2020-05-08 13:44:32 -04:00
2020-12-18 20:55:26 +01:00
2020-12-18 20:55:26 +01:00
2020-08-15 12:14:57 +02:00
2020-09-29 11:06:25 -04:00
2020-09-16 10:56:38 +07:00
2020-08-22 01:36:22 +07:00
2020-06-05 16:44:04 -07:00
2020-12-24 12:36:56 +01:00
2020-05-15 12:26:58 -07:00
2021-01-22 17:27:36 -08:00
2020-05-15 19:41:07 +02:00
2020-05-15 19:41:07 +02:00
2021-01-22 17:27:36 -08:00
2020-09-29 11:06:25 -04:00
2020-08-27 15:19:45 +01:00
2020-05-15 19:41:07 +02:00
2020-05-15 19:41:07 +02:00
2021-01-22 17:27:36 -08:00
2020-08-15 01:53:32 +02:00
2020-05-15 19:41:07 +02:00
2020-05-15 19:41:07 +02: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-05-28 14:36:05 -07:00
2020-07-03 20:22:51 +01: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-05-05 15:19:01 -07: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-08-13 15:10:41 +02: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-05-08 12:24:10 -07: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
2020-06-26 07:58:45 +01: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
2020-05-15 19:41:07 +02: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
2020-04-21 22:00:23 +03:00
2021-02-09 12:38:06 -05:00