Matt Arsenault
302ff8fd00
InstCombine: Use SimplifyDemandedFPClass on fmul ( #177490 )
...
Start trying to use SimplifyDemandedFPClass on instructions, starting
with fmul. This subsumes the old transform on multiply of 0. The
main change is the introduction of nnan/ninf. I do not think anywhere
was systematically trying to introduce fast math flags before, though
a few odd transforms would set them.
Previously we only called SimplifyDemandedFPClass on function returns
with nofpclass annotations. Start following the pattern of
SimplifyDemandedBits, where this will be called from relevant root
instructions.
I was wondering if this should go into InstCombineAggressive, but that
apparently does not make use of InstCombineInternal's worklist.
2026-02-10 09:49:31 +00:00
..
2026-01-07 07:46:22 +00:00
2026-02-10 09:49:31 +00:00
2025-12-09 16:11:26 +00:00
2026-02-05 13:31:26 +00:00
2025-06-30 18:23:18 +02:00
2026-01-08 12:55:39 +08:00
2026-01-12 15:13:09 +00:00
2025-09-12 15:07:25 -07:00
2025-12-11 11:11:00 +00:00
2025-09-01 09:58:11 +02:00
2025-06-03 10:26:55 -07:00
2025-09-10 16:51:58 +02:00
2026-01-09 10:31:11 +01:00
2025-08-08 15:23:02 +02:00
2025-06-13 18:25:07 +01:00
2026-01-29 02:49:55 +08:00
2026-02-07 20:41:58 +09:00
2025-07-08 14:29:31 +02:00
2026-02-05 21:09:06 -08:00
2025-10-13 10:13:34 +02:00
2026-02-07 20:41:58 +09:00
2025-04-03 16:24:56 +01:00
2025-09-12 20:01:17 +02:00
2025-04-26 00:54:00 -04:00
2025-12-17 12:07:40 +00:00
2026-02-07 03:09:27 +08:00
2025-04-24 00:12:30 +08:00
2026-02-03 19:14:27 +01:00
2025-04-26 12:35:04 +08:00
2026-01-11 13:23:27 -08:00
2025-06-20 10:32:31 -04:00
2025-04-14 17:11:13 +02:00
2026-02-03 19:30:48 +01:00
2025-09-25 18:00:18 +01:00
2026-02-03 19:30:48 +01:00
2026-02-09 13:13:32 +01:00
2025-04-30 22:06:37 +01:00
2026-01-11 13:23:27 -08:00
2026-02-10 09:49:31 +00:00
2025-11-05 10:04:32 +01:00
2025-07-01 09:54:38 +01:00
2026-02-10 09:49:31 +00:00
2025-12-29 12:17:36 +00:00
2025-08-04 14:51:03 +05:30
2025-10-23 20:31:31 +08:00
2026-01-27 23:18:53 -08:00
2025-08-08 11:09:34 +02:00
2025-08-08 11:09:34 +02:00
2025-08-08 11:09:34 +02:00
2025-06-20 10:32:31 -04:00
2025-03-14 15:50:49 +00:00
2025-11-19 01:15:26 +08:00
2025-09-01 09:58:11 +02:00
2026-02-03 19:14:27 +01:00
2025-09-01 09:58:11 +02:00
2025-04-28 09:02:29 +02:00
2025-11-25 17:43:26 +00:00
2025-10-16 11:27:47 +02:00
2025-11-25 17:43:26 +00:00
2025-11-25 17:43:26 +00:00
2025-06-23 10:51:17 +08:00
2025-10-05 16:15:51 +08:00
2026-02-03 19:14:27 +01:00
2026-02-05 13:31:26 +00:00
2025-06-30 15:44:37 +02:00
2025-08-08 11:09:34 +02:00
2025-08-04 13:54:44 +01:00
2025-03-06 08:30:36 +00:00
2026-01-11 13:23:27 -08:00
2025-03-14 15:50:49 +00:00
2025-10-24 09:03:40 +01:00
2026-01-27 17:21:44 +00:00
2025-05-09 07:25:35 +03:00
2026-02-05 13:31:26 +00:00
2025-10-25 00:40:11 +08:00
2025-07-07 15:18:48 +02:00
2025-04-29 17:50:53 +02:00
2026-02-05 19:20:32 -08:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-06-20 10:32:31 -04:00
2025-08-08 11:09:34 +02:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-11-10 13:13:49 +01:00
2025-05-13 08:56:22 +08:00
2025-04-08 09:56:26 +01:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
[InstCombine] Fold umax/umin(nuw_shl(z, x), nuw_shl(z, y)) -> nuw_shl(z, umax/umin(x, y)) and umax/umin(nuw_shl(x, z), nuw_shl(y, z)) -> nuw_shl(umax/umin(x, y), z) ( #131076 )
2025-03-15 13:40:35 +08:00
2026-01-28 09:56:07 -08:00
2025-11-05 10:04:32 +01:00
2026-02-06 12:30:32 +01:00
2025-06-16 12:07:47 +08:00
2025-07-18 14:40:54 -07:00
2025-04-09 18:07:34 +02:00
2025-03-14 15:50:49 +00:00
2026-02-03 19:14:27 +01:00
2025-04-14 14:30:00 +08:00
2026-01-20 16:26:40 +01:00
2026-02-10 09:49:31 +00:00
2026-02-05 13:31:26 +00:00
2026-01-25 18:06:36 -05:00
2026-01-25 18:06:36 -05:00
2026-02-05 13:31:26 +00:00
2025-12-11 11:11:00 +00:00
2025-12-05 16:23:41 +00:00
2025-06-13 18:25:07 +01:00
2026-02-05 13:31:26 +00:00
2026-01-28 09:56:07 -08:00
2026-02-10 09:49:31 +00:00
2025-06-18 23:12:31 +08:00
2026-02-10 09:49:31 +00:00
2025-04-14 14:30:00 +08:00
2025-04-14 14:30:00 +08:00
2026-02-03 08:27:18 +08:00
2025-08-21 16:36:25 +01:00
2025-09-12 12:16:31 -04:00
2025-07-19 17:52:06 +09:00
2026-02-02 09:58:58 +08:00
2025-07-16 10:03:25 +09:00
2025-06-24 09:48:00 -07:00
2026-01-22 20:49:34 +01:00
2025-12-12 12:55:55 +01:00
2025-10-27 17:00:42 -07:00
2025-07-14 21:01:03 +01:00
2025-06-20 10:32:31 -04:00
2025-12-24 22:17:58 +00:00
2025-05-06 23:55:04 +08:00
2025-07-31 12:32:37 +02:00
2025-10-21 11:55:21 +01:00
2025-11-05 10:04:32 +01:00
2025-09-09 13:59:35 +01:00
2026-01-15 00:01:58 +00:00
2025-09-09 13:59:35 +01:00
2025-10-02 01:11:51 +08:00
2025-12-19 09:16:57 +00:00
2025-05-08 00:37:46 +08:00
2025-12-30 00:05:49 +08:00
2026-02-10 09:49:31 +00:00
2025-06-12 19:31:43 +09:00
2025-10-01 22:02:08 +08:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-03 10:47:32 +02:00
2026-01-15 22:08:31 +00:00
2025-09-10 16:51:58 +02:00
2026-02-09 14:39:27 +01:00
2026-02-09 22:26:07 +08:00
2025-05-22 22:48:33 +01:00
2025-09-01 09:58:11 +02:00
2025-09-10 16:51:58 +02:00
2025-09-10 16:51:58 +02:00
2025-09-12 16:35:58 +01:00
2025-11-27 07:16:03 +00:00
2025-09-10 16:51:58 +02:00
2026-01-09 00:06:58 -05:00
2025-07-11 10:52:13 +02:00
2026-01-17 15:45:13 +00:00
2026-02-03 19:14:27 +01:00
2026-02-03 19:14:27 +01:00
2025-10-02 21:51:39 +02:00
2025-07-31 15:58:04 +02:00
2025-06-15 15:17:53 +08:00
2025-04-30 00:19:23 +08:00
2025-09-10 15:57:27 +02:00
2026-01-17 01:36:52 +08:00
2026-02-03 19:14:27 +01:00
2025-11-25 17:43:26 +00:00
2026-02-03 19:14:27 +01:00
2026-02-03 19:14:27 +01:00
2025-03-28 08:32:45 -04:00
2025-09-18 10:49:42 +08:00
2026-01-26 23:25:21 +00:00
2025-11-17 19:39:20 -08:00
2026-01-09 10:32:22 +01:00
2025-06-15 15:32:34 +08:00
2025-06-16 17:05:30 +02:00
2025-11-22 15:44:06 +00:00
2026-01-27 11:20:15 -08:00
2026-02-03 19:14:27 +01:00
2025-10-01 10:13:42 +02:00
2025-07-31 15:58:04 +02:00
2025-09-25 16:53:24 +00:00
2026-01-09 10:30:28 +01:00
[InstCombine] Fold umax/umin(nuw_shl(z, x), nuw_shl(z, y)) -> nuw_shl(z, umax/umin(x, y)) and umax/umin(nuw_shl(x, z), nuw_shl(y, z)) -> nuw_shl(umax/umin(x, y), z) ( #131076 )
2025-03-15 13:40:35 +08:00
2026-02-03 17:44:34 +01:00
2025-08-22 10:17:12 +01:00
2025-08-14 10:08:26 -07:00
2026-02-05 13:31:26 +00:00
2025-12-11 11:11:00 +00:00
2025-03-09 10:34:30 +00:00
2025-11-25 17:43:26 +00:00
2025-12-03 20:37:30 +08:00
2025-04-10 21:28:49 +02:00
2025-07-31 12:32:37 +02:00
2025-12-12 12:55:55 +01:00
2025-08-08 11:09:34 +02:00
2026-01-22 14:22:44 +00:00
2025-08-08 11:09:34 +02:00
2026-01-22 06:07:03 -08:00
2025-09-01 09:58:11 +02:00
2026-02-03 19:14:27 +01:00
2025-09-12 20:01:17 +02:00
2025-09-17 10:20:59 +00:00
2025-10-20 08:50:09 +00:00
2025-03-01 23:11:55 +08:00
2025-09-01 09:58:11 +02:00
2026-01-22 20:49:34 +01:00
2026-02-05 13:31:26 +00:00
2025-11-25 17:43:26 +00:00
2025-11-25 17:43:26 +00:00
2025-08-08 11:09:34 +02:00
2025-05-03 09:53:57 +02:00
2025-08-08 11:09:34 +02:00
2025-09-12 20:01:17 +02:00
2025-10-20 08:50:09 +00:00
2025-10-20 08:50:09 +00:00
2025-06-30 10:40:12 +01:00
2025-04-23 16:31:50 +08:00
2025-04-23 16:31:50 +08:00
2026-02-09 15:55:59 +00:00
2026-02-09 09:34:17 +01:00
2025-09-17 06:33:59 +00:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-15 09:34:04 +02:00
2026-01-17 01:36:52 +08:00
2025-09-12 10:40:17 +08:00
2026-02-09 15:55:59 +00:00
2025-06-10 07:55:56 -07:00
2026-01-25 18:06:36 -05:00
2025-06-13 18:25:07 +01:00
2026-02-09 09:13:26 +00:00
2025-11-11 11:52:56 -08:00
2026-01-28 09:56:07 -08:00
2025-06-20 10:32:31 -04:00
2026-01-05 21:23:14 +01:00
2025-02-23 17:19:31 +08:00
2026-01-21 10:06:29 -08:00
2025-08-25 12:58:39 +02:00
2025-06-20 10:32:31 -04:00
2025-04-09 18:07:34 +02:00
2025-09-10 16:51:58 +02:00
2025-07-07 13:50:42 -07:00
2025-05-08 14:29:13 +08:00
2025-07-30 10:58:49 -06:00
2025-11-05 10:04:32 +01:00
2026-02-03 19:14:27 +01:00
2025-10-23 09:27:57 +01:00
2026-02-10 09:49:31 +00:00
2026-02-10 09:49:31 +00:00
2026-02-10 09:49:31 +00:00
2026-02-10 09:49:31 +00:00
2025-07-31 15:58:04 +02:00
2025-03-14 15:50:49 +00:00
2025-09-01 09:58:11 +02:00
2026-01-24 08:40:46 +01:00
2025-10-20 08:50:09 +00:00
2025-06-04 17:48:01 +08:00
2026-01-17 12:04:37 +00:00
2025-09-29 20:37:06 +00:00
2025-10-16 11:27:47 +02:00
2025-07-15 13:37:07 -07:00
2025-07-15 14:39:53 -07:00
2025-11-26 12:39:40 -08:00
2026-01-05 09:37:34 +01:00
2025-09-10 16:51:58 +02:00
2025-08-08 09:31:50 +02:00
2025-11-05 10:04:32 +01:00
2025-09-20 12:42:17 +00:00
2026-01-19 12:07:03 +01:00
2025-12-18 11:00:39 +01:00
2026-02-07 20:41:58 +09:00
2026-01-28 09:56:07 -08:00
2025-09-01 09:58:11 +02:00
2025-08-15 12:48:32 -06:00
2025-04-23 16:31:50 +08:00
2025-03-14 15:50:49 +00:00
2026-02-04 00:38:43 +08:00
2025-04-03 16:24:56 +01:00
2025-08-01 09:54:43 +01:00
2025-02-26 11:11:02 +00:00
2025-04-03 16:24:56 +01:00
2025-06-19 13:24:39 +01:00
2025-07-21 15:04:50 +02:00
2025-11-24 12:48:32 +01:00
2025-10-25 00:46:41 +08:00
2026-01-28 09:56:07 -08:00
2025-10-23 09:27:57 +01:00
2025-10-26 00:39:49 -04:00
2025-10-03 12:26:09 -07:00
2025-10-21 10:03:30 -07:00
2025-12-28 18:33:23 +08:00
2026-01-16 09:34:08 +01:00
2025-06-04 19:42:56 +08:00
2026-01-03 16:01:57 +01:00
2025-10-23 20:31:31 +08:00
2025-10-23 20:31:31 +08:00
2025-07-16 19:42:41 -07:00
2025-10-05 14:02:00 +08:00
2025-03-18 18:41:34 +01:00
2025-06-20 10:32:31 -04:00
2025-10-20 08:50:09 +00:00
2025-10-20 08:50:09 +00:00
2025-04-23 16:31:50 +08:00
2026-01-24 08:40:46 +01:00
2025-10-03 12:26:09 -07:00
2025-10-06 18:58:35 +00:00
2025-12-05 09:17:13 -08:00
2025-11-03 09:32:42 -08:00
2026-01-26 11:25:06 -10:00
2025-06-13 21:53:34 +08:00
2025-03-19 19:57:48 +01:00
2026-01-24 08:40:46 +01:00
2025-10-28 09:01:50 +08:00
2025-09-05 16:48:57 +02:00
2026-02-03 19:14:27 +01:00
2026-02-03 19:14:27 +01:00
2026-02-03 19:14:27 +01:00
2025-06-20 10:32:31 -04:00
[InstCombine] Fold umax/umin(nuw_shl(z, x), nuw_shl(z, y)) -> nuw_shl(z, umax/umin(x, y)) and umax/umin(nuw_shl(x, z), nuw_shl(y, z)) -> nuw_shl(umax/umin(x, y), z) ( #131076 )
2025-03-15 13:40:35 +08:00
2025-04-03 18:03:16 +01:00
2025-04-03 18:03:16 +01:00
2025-04-30 08:22:38 +01:00
2025-06-07 11:44:05 +02:00
2026-01-19 08:21:14 +00:00
2026-02-05 13:31:26 +00:00
2026-02-02 17:57:21 +00:00
2025-12-31 15:51:44 +01:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-02 17:57:21 +00:00
2026-02-10 09:49:31 +00:00
2026-02-02 17:57:21 +00:00
2026-02-02 17:57:21 +00:00
2026-02-02 17:57:21 +00:00
2026-02-02 18:23:53 +01:00
2026-02-05 13:31:26 +00:00
2026-01-01 16:52:22 +01:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-05 13:31:26 +00:00
2026-02-02 17:57:21 +00:00
2026-01-09 20:05:00 +00:00
2026-02-05 13:31:26 +00:00
2026-02-10 09:49:31 +00:00
2025-05-09 07:25:35 +03:00
2025-11-25 16:56:06 +01:00
2025-04-13 16:47:07 +02:00
2025-08-08 11:09:34 +02:00
2025-11-09 21:08:46 +00:00
2025-03-14 15:50:49 +00:00
2025-10-10 03:59:44 -04:00
2026-02-06 12:30:32 +01:00
2025-03-14 15:50:49 +00:00
2025-05-01 14:21:59 -07:00
2025-03-14 15:50:49 +00:00
2025-09-10 16:51:58 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-10 16:51:58 +02:00
2025-09-10 16:51:58 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-12 20:01:17 +02:00
2025-06-24 18:51:49 +02:00
2026-01-11 13:23:27 -08:00
2025-11-05 10:04:32 +01:00
2025-08-25 12:58:39 +02:00
2025-08-25 12:58:39 +02:00
2025-06-19 10:13:58 -07:00
2025-07-30 12:54:06 +02:00
2026-01-13 14:41:37 +01:00
2025-08-08 11:09:34 +02:00
2026-02-09 21:09:48 +08:00
2025-07-28 13:00:37 +02:00
2025-09-12 09:43:47 +02:00
2025-10-28 09:01:50 +08:00
2025-07-28 13:00:37 +02:00
2025-02-26 11:11:02 +00:00
2026-01-11 20:56:52 +08:00
2025-03-14 15:50:49 +00:00
2026-01-25 18:06:36 -05:00
2025-08-08 11:09:34 +02:00
2025-03-14 15:50:49 +00:00
2026-01-28 09:56:07 -08:00
2025-09-02 16:47:03 +00:00
2025-08-08 11:09:34 +02:00
2025-09-01 09:58:11 +02:00
2026-02-10 09:49:31 +00:00
2025-07-04 18:19:50 +02:00
2026-01-08 22:43:13 +01:00
2025-07-04 18:19:50 +02:00
2025-07-04 18:19:50 +02:00
2025-07-30 17:55:00 +02:00
2025-07-30 17:55:00 +02:00
2026-01-11 15:28:31 +00:00
2025-09-29 00:06:20 +02:00
2025-07-01 16:49:10 +01:00
2026-02-04 06:09:49 +00:00
2025-09-10 16:51:58 +02:00
2025-06-18 08:53:45 -07:00
2025-07-04 18:19:50 +02:00
2025-12-25 10:44:04 +00:00
2025-06-20 10:32:31 -04:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2025-09-01 09:58:11 +02:00
2026-01-13 09:45:14 -08:00
2026-01-11 13:23:27 -08:00