Max Kazantsev
0d95b20b63
[LICM] Reassociate & hoist add expressions
...
This patch allows LICM to reassociate and hoist following expressions:
```
loop:
%sum = add nsw %iv, %C1
%cmp = icmp <signed pred> %sum, C2
```
where `C1` and `C2` are loop invariants. The reassociated version looks like
```
preheader:
%inv_sum = C2 - C1
...
loop:
%cmp = icmp <signed pred> %iv, %inv_sum
```
In order to prove legality, we need both initial addition and the newly created subtraction
to happen without overflow.
Differential Revision: https://reviews.llvm.org/D149132
Reviewed By: skatkov
2023-05-22 13:22:22 +07:00
..
2023-05-17 17:03:15 +02:00
2023-05-17 17:03:15 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-01-31 11:48:35 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-03-17 17:17:13 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-01-23 12:11:33 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-08 02:38:45 +03:00
2023-04-28 17:53:39 +07:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-11 11:55:54 +02:00
2022-12-20 10:02:46 +01:00
2023-05-22 13:22:22 +07:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-20 14:17:15 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-20 18:36:42 +03:00
2022-12-07 20:53:15 +03:00
2023-04-26 09:26:47 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-02-26 12:41:41 -05:00
2022-12-20 10:02:46 +01:00
2023-01-31 11:48:35 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-03-13 14:34:43 +07:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-28 14:31:23 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-26 09:26:47 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 09:51:35 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-03 14:20:06 +02:00
2022-12-07 20:53:15 +03:00
2022-12-20 10:02:46 +01:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-26 09:26:47 +02:00
2022-12-07 20:53:15 +03:00
2023-04-28 14:31:23 +02:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2023-04-28 14:31:23 +02:00
2023-05-09 19:11:21 -05:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00
2022-12-07 20:53:15 +03:00