Paul Walker
7b8fd8f31b
[LLVM][SCEV] Look through common vscale multiplicand when simplifying compares. ( #141798 )
...
My usecase is simplifying the control flow generated by LoopVectorize
when vectorising loops whose tripcount is a function of the runtime
vector length. This can be problematic because:
* CSE is a pre-LoopVectorize transform and so it's common for an IR
function to include several calls to llvm.vscale(). (NOTE: Code
generation will typically remove the duplicates)
* Pre-LoopVectorize instcombines will rewrite some multiplies as shifts.
This leads to a mismatch between VL based maths of the scalar loop and
that created for the vector loop, which prevents some obvious
simplifications.
SCEV does not suffer these issues because it effectively does CSE during
construction and shifts are represented as multiplies.
2025-09-19 12:57:13 +01:00
..
2025-09-19 12:57:13 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-08 11:09:34 +02:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-27 12:43:52 +01:00
2025-09-18 19:25:05 +01:00
2024-11-21 08:06:56 +00:00
2025-04-04 15:44:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-11 15:55:18 -04:00
2025-09-18 19:25:05 +01:00
2025-08-21 07:34:54 +08:00
2024-09-04 16:28:39 +05:30
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-10 13:54:52 +01:00
2025-09-18 19:25:05 +01:00
2025-09-16 10:14:32 +00:00
2025-09-18 19:25:05 +01:00
2025-01-23 22:29:30 +00:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-22 07:59:14 +08:00
2023-10-28 17:47:46 +08:00
2023-10-24 20:27:39 -07:00
2025-04-04 15:34:45 +02:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-05 08:20:16 +08:00
2025-09-16 13:04:51 +00:00
2025-08-26 15:52:31 +01:00
2025-09-03 21:37:52 +01:00
2025-08-05 21:06:41 +01:00
2025-09-03 21:37:52 +01:00
2025-01-14 22:07:38 +00:00
2025-09-18 19:25:05 +01:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-09-18 19:25:05 +01:00
2024-12-05 14:36:40 +01:00
2025-06-07 21:49:54 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-10 21:21:16 +01:00
2025-06-24 21:48:58 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-07-05 10:08:42 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-07-14 21:21:22 +01:00
2025-09-01 11:53:40 +01:00
2025-08-08 11:00:00 +01:00
2025-03-14 15:50:49 +00:00
2025-05-27 16:07:56 +01:00
2024-11-21 08:06:56 +00:00
2025-05-14 14:56:35 +01:00
2025-02-27 17:43:24 +00:00
2025-09-18 19:25:05 +01:00
2024-11-06 11:53:33 +00:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-11-21 08:06:56 +00:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-03-26 21:03:50 +00:00
2025-09-18 19:25:05 +01:00
2025-04-02 17:23:00 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-26 17:16:36 +01:00
2025-09-18 19:25:05 +01:00
2025-01-29 16:56:47 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2023-12-05 14:09:36 +01:00
2025-09-18 19:25:05 +01:00
2025-09-10 16:51:58 +02:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-07 12:07:29 +01:00
2025-09-18 19:25:05 +01:00
2025-06-26 11:19:09 +01:00
2025-02-26 13:57:51 +00:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-12-12 16:48:31 +08:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2024-12-10 20:09:18 +08:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-08 11:09:34 +02:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-12-05 14:36:40 +01:00
2025-01-29 08:09:50 +00:00
2025-02-20 17:01:49 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2023-10-28 17:47:46 +08:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-18 21:58:19 +01:00
2025-06-27 10:39:33 +01:00
2025-06-27 10:39:33 +01:00
2025-09-18 19:25:05 +01:00
2025-02-28 12:56:12 +00:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-08-11 20:38:36 +02:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-01-29 08:09:50 +00:00
2024-07-05 21:41:31 +01:00
2024-11-21 08:06:56 +00:00
2025-07-27 13:53:26 +01:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2025-01-29 08:09:50 +00:00
2025-09-09 09:47:41 +01:00
2025-09-18 19:25:05 +01:00
2024-10-02 10:28:54 +01:00
2025-03-09 15:05:35 +00:00
2025-08-16 18:54:27 +01:00
2025-09-18 19:25:05 +01:00
2024-11-06 11:53:33 +00:00
2025-04-28 20:01:37 +01:00
2025-08-06 14:43:03 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-03-26 21:03:50 +00:00
2025-07-27 13:53:26 +01:00
2024-11-07 14:09:45 +01:00
2024-07-07 20:08:01 +01:00
2025-01-29 16:56:47 +01:00
2025-09-09 09:47:41 +01:00
2025-07-27 13:53:26 +01:00
2024-11-21 08:06:56 +00:00
2025-09-18 19:25:05 +01:00
2025-09-09 09:47:41 +01:00
2024-07-01 09:52:56 -07:00
2023-12-05 14:09:36 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-02 12:23:29 +01:00
2025-09-18 19:25:05 +01:00
2025-04-29 09:47:38 +01:00
2025-05-08 11:49:54 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-12-27 10:37:21 +08:00
2025-07-27 13:53:26 +01:00
2025-02-09 11:20:20 +00:00
2025-07-31 14:35:10 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2024-11-21 08:06:56 +00:00
2025-09-18 19:25:05 +01:00
2025-06-30 22:39:17 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-09-19 09:41:25 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-01-16 21:54:58 -08:00
2025-07-26 15:39:21 +01:00
2025-09-18 19:25:05 +01:00
2024-01-16 21:54:58 -08:00
2025-09-18 19:25:05 +01:00
2025-09-09 09:47:41 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-08-14 19:27:51 +01:00
2025-08-16 18:54:27 +01:00
2025-08-12 14:13:13 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2024-11-06 11:53:33 +00:00
2025-01-29 08:09:50 +00:00
2025-09-18 19:25:05 +01:00
2023-10-17 03:49:39 +08:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-08-24 13:27:06 +01:00
2025-06-08 22:34:07 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2024-10-17 16:50:59 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-10 21:58:29 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-05-14 14:56:35 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-06-27 10:39:33 +01:00
2025-01-29 08:09:50 +00:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-08-21 12:02:54 +02:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2023-10-28 17:47:46 +08:00
2024-08-19 12:40:20 +01:00
2025-06-27 10:39:33 +01:00
2025-09-18 19:25:05 +01:00
2024-10-16 06:10:19 +01:00
2025-07-27 13:53:26 +01:00
2025-03-25 12:57:24 +00:00
2025-07-31 15:56:31 -04:00
2025-09-03 12:45:28 +01:00
2024-09-19 18:50:10 +01:00
2024-12-05 14:36:40 +01:00
2025-07-27 13:53:26 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2024-09-06 11:20:14 +02:00
2025-08-14 19:27:51 +01:00
2025-09-18 19:25:05 +01:00
2025-04-18 21:52:05 +01:00
2025-06-07 21:49:54 +01:00
2024-04-04 18:30:17 -04:00
2024-07-07 20:08:01 +01:00
2025-08-26 15:52:31 +01:00
2025-09-09 09:47:41 +01:00
2025-09-12 17:06:26 +01:00
2025-09-18 19:25:05 +01:00
2025-08-06 14:43:03 +01:00
2025-09-18 19:25:05 +01:00
2025-09-10 21:58:29 +01:00
2025-06-07 21:49:54 +01:00
2025-09-01 07:03:33 +00:00
2025-05-27 16:07:56 +01:00
2024-11-06 11:53:33 +00:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00
2025-05-27 16:07:56 +01:00
2025-09-18 19:25:05 +01:00
2025-09-18 19:25:05 +01:00