Benjamin Maxwell
7fad04e94b
[LSR] Fix matching vscale immediates ( #100080 )
...
Somewhat confusingly a `SCEVMulExpr` is a `SCEVNAryExpr`, so can have
> 2 operands. Previously, the vscale immediate matching did not check
the number of operands of the `SCEVMulExpr`, so would ignore any
operands after the first two.
This led to incorrect codegen (and results) for ArmSME in IREE
(https://github.com/iree-org/iree ), which sometimes addresses things
that are a `vscale * vscale` multiple away. The test added with this
change shows an example reduced from IREE. The second write should
be offset from the first `16 * vscale * vscale` (* 4 bytes), however,
previously LSR dropped the second vscale and instead offset the write by
`#4, mul vl`, which is an offset of `16 * vscale` (* 4 bytes).
2024-07-24 10:06:34 +01:00
..
2024-07-24 10:06:34 +01:00
2024-01-16 21:54:58 -08:00
2023-12-05 14:09:36 +01:00
2023-05-17 17:03:15 +02:00
2024-02-07 11:14:49 +01:00
2024-07-15 13:18:12 +08:00
2024-07-15 09:44:18 +08:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-04-06 17:31:27 +07:00
2023-07-12 11:32:13 +02:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2024-05-20 11:47:30 +02:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-07-12 09:46:08 +02:00
2023-07-12 09:46:08 +02:00
2023-01-05 12:43:45 +01:00
2023-04-06 17:31:27 +07:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2023-04-06 17:31:27 +07:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2024-01-25 16:05:54 +08:00
2022-11-25 13:46:51 +08:00
2023-01-05 12:43:45 +01:00
2023-03-07 17:10:34 +01:00
2024-02-05 11:57:34 +01:00
2024-02-02 08:57:26 -08:00
2024-03-04 16:40:40 -08:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-06-23 17:13:57 +02:00
2023-07-12 14:35:55 +02:00
2023-01-05 12:43:45 +01:00
2024-01-22 18:59:19 +00:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-04-11 16:49:12 +02:00
2023-01-05 12:43:45 +01:00
2023-04-11 16:49:12 +02:00
2024-06-20 08:59:29 +02:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2024-01-22 18:59:19 +00:00
2023-01-05 12:43:45 +01:00
2023-09-22 12:40:37 +02:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2023-01-05 12:43:45 +01:00
2023-10-31 00:50:57 +03:00
2024-03-12 16:24:10 +01:00
2023-04-11 16:49:12 +02:00
2023-04-06 17:31:27 +07:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-02-21 00:13:04 +05:30
2024-01-15 21:31:28 +00:00
2023-01-05 12:43:45 +01:00
2023-08-25 05:42:08 +00:00
2023-03-10 17:17:00 -08:00
2022-09-27 09:58:48 +01:00
2023-10-31 11:43:57 -07:00
2023-01-05 12:43:45 +01:00
2023-01-06 12:14:45 +01:00
2023-01-05 12:43:45 +01:00
2023-06-23 17:13:57 +02:00
2023-01-05 12:43:45 +01:00
2023-06-23 17:13:57 +02:00
2023-04-11 16:49:12 +02:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00
2023-01-05 12:43:45 +01:00